Statistik-Aktualisierung System¶
Übersicht¶
Das Dashboard-Statistik-System wurde optimiert und verwendet jetzt folgende Strategie:
Automatische Aktualisierung¶
- Stündlich: Cloud Function läuft automatisch jede volle Stunde (z.B. 10:00, 11:00, 12:00...)
- Täglich um Mitternacht: Zusätzliche Aktualisierung für Datumswechsel
Manuelle Aktualisierung¶
- Aktualisieren-Button im Dashboard: Triggert sofort eine komplette Neuberechnung aller Statistiken
- Wartezeit: Nach dem Klick dauert es 2-3 Sekunden bis die aktualisierten Daten geladen werden
Cloud Functions¶
1. scheduledHourlyStatisticsUpdate¶
- Schedule: Jede volle Stunde (
0 * * * *) - Funktion: Berechnet alle Statistiken für alle Zeiträume neu
- Memory: 512MB
- Timeout: 540 Sekunden
2. triggerStatisticsUpdate (Callable)¶
- Trigger: Wird vom Dashboard-Aktualisieren-Button aufgerufen
- Funktion: Identisch mit der stündlichen Berechnung
- Memory: 512MB
- Timeout: 540 Sekunden
3. scheduledDailyStatisticsUpdate¶
- Schedule: Täglich um Mitternacht (
0 0 * * *) - Funktion: Backup-Berechnung für Datumswechsel
Zeiträume¶
Das System berechnet Statistiken für folgende Zeiträume:
| Zeitraum | Key | Beschreibung |
|---|---|---|
| Heute | today |
Aktueller Tag (00:00 - jetzt) |
| Gestern | yesterday |
Vorheriger Tag |
| Diese Woche | thisWeek |
Montag - jetzt |
| Letzte 30 Tage | last30Days |
Rollierendes 30-Tage-Fenster |
| Letzte 60 Tage | last60Days |
Rollierendes 60-Tage-Fenster |
| Dieser Monat | thisMonth |
1. des Monats - jetzt |
| Letzter Monat | lastMonth |
Vorheriger Monat komplett |
| Dieses Jahr | thisYear |
1. Januar - jetzt |
| Letztes Jahr | lastYear |
Vorheriges Jahr komplett |
Dropdown-Zeitraumauswahl¶
Die Zeitraumauswahl im Dashboard wurde korrigiert: - Initialer Wert: "Heute" ist vorausgewählt - Automatisches Laden: Beim ersten Öffnen des Dashboards werden automatisch die Statistiken für "Heute" geladen - Wechsel: Bei Auswahl eines anderen Zeitraums werden die entsprechenden Statistiken sofort geladen
Deployment¶
Cloud Functions deployen¶
# Im Projekt-Root
cd /Users/andreasschmid/development/easy_sale_erp
# Firebase Projekt auswählen (falls noch nicht geschehen)
firebase use --add
# Functions deployen
cd functions
npm install
cd ..
firebase deploy --only functions
Nur spezifische Functions deployen¶
# Nur die neuen Statistik-Functions
firebase deploy --only functions:scheduledHourlyStatisticsUpdate,functions:triggerStatisticsUpdate
Firestore Collections¶
Das System schreibt in folgende Collections:
statisticsPeriodSummary¶
- Dokument-ID: Zeitraum-Key (z.B.
today,thisWeek) - Felder:
timePeriod: String-KeyorderCount: Anzahl OrderscustomerCount: Anzahl unique KundensalesVolume: GesamtumsatzactiveSessionsAndroid: Anzahl aktiver Android-SessionsactiveSessionsIos: Anzahl aktiver iOS-Sessions- Subcollection:
articlesByRevenue(Top-Artikel nach Umsatz)
statisticsCustomerSales¶
- Dokument-ID:
{timePeriod}_{customerId} - Felder: Kunden-Umsatz-Statistiken
statisticsCountries¶
- Dokument-ID:
{timePeriod}_{country} - Felder: Länder-Umsatz-Statistiken
statisticsSalesVolume¶
- Dokument-ID: Zeitraum-Key
- Felder:
hourly: Array mit stündlichen Werten (für today/yesterday)daily: Array mit täglichen Werten (für Wochen/Monate)monthly: Array mit monatlichen Werten (für Jahre)
Fehlerbehandlung¶
Problem: Statistiken werden nicht aktualisiert¶
-
Prüfe ob die Cloud Function erfolgreich läuft:
-
Prüfe ob Orders in Firestore vorhanden sind:
-
Firebase Console → Firestore → orders Collection
-
Manuelle Neuberechnung triggern:
- Dashboard öffnen
- "Aktualisieren" Button klicken
- Oder manuell via Node-Script:
Problem: Dropdown zeigt keine Daten¶
- Prüfe Browser-Console auf Fehler
- Prüfe ob
StatisticBlockorrekt initialisiert ist - Prüfe ob Firestore-Daten für den gewählten Zeitraum existieren
Testing¶
Manuelle Statistik-Berechnung (lokal)¶
Statistiken in Firestore prüfen¶
Migration von alter Version¶
Die alte Version verwendete einen onDocumentWritten Trigger bei jeder Order-Änderung. Dies wurde entfernt wegen:
- Performance: Bei vielen Orders führte dies zu sehr häufigen Berechnungen
- Kosten: Jede Order-Änderung triggerte eine teure Cloud Function
- Latenz: Berechnungen dauerten lange und blockierten Order-Updates
Die neue Version ist effizienter und kostengünstiger.