Analyse: Zeitraum = abgeschlossene Tage, "Heute bisher" getrennt, Feinschliff
Final-Review-Fixwelle der Cockpit-Übersicht:
- F1 Collector: Der Zeitraum sind die range Kalendertage bis gestern (Berliner Tag),
der Vorzeitraum die range Tage davor; heute steht getrennt in today { day, pv, visitors,
contacts }. Kein Einbruch mehr am rechten Rand von Diagramm und Mini-Verläufen,
kein falsches "x % weniger" tagsüber. Portal: weekdayStats bekommt die ganze Reihe
(completedDays entfällt), "Vergleich ab" = firstDay + 2 x range, Kopfzeile
"Analyse aktiv · Heute bisher: N Aufrufe · Stand: HH:MM Uhr" (alter Collector ohne today
bleibt ohne "Heute bisher").
- F2 "direkt kontaktiert" zählt nur Telefon, E-Mail und WhatsApp (auch im Vorzeitraum),
Links nach außen nicht.
- F3 Mini-Verlauf "Ø Zeit pro Seite": Tage ohne Messung sind Lücken statt 0-Tälern.
- F4 Fehlerfarbe beim Ausschalten rot, --an-faint auf 55 %, Achsenschrift per
Container-Abfragen auf 11-12 px (y-Rand wächst mit der Stellenzahl, x-Beschriftungen mit
Mindestabstand), Ranglisten-Anteile an allen Seitenaufrufen, Tippflächen bis 880 px
mindestens 40 px hoch.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
eadb768d1a
commit
0db59d38e9
11 files changed
+376
-135
No files matched your search
@@ -97,10 +97,15 @@ function firstDayOf(db, site) {
|
||||
return fromDaily < fromRaw ? fromDaily : fromRaw;
|
||||
}
|
||||
|
||||
// Der Zeitraum sind die `range` abgeschlossenen Kalendertage, die gestern enden (wie GA4 "Letzte 28 Tage"): Der
|
||||
// angebrochene heutige Tag würde gegen einen vollen Vorzeitraum als Einbruch erscheinen. Heute steht getrennt in `today`.
|
||||
export function computeStats(db, site, range, now = Date.now()) {
|
||||
const days = dayList(dayOf(now), range);
|
||||
const todayDay = dayOf(now);
|
||||
const days = dayList(shiftDay(todayDay, -1), range);
|
||||
const cur = collect(db, site, days, now);
|
||||
const { banner, totals, series } = shape(cur);
|
||||
// Heute bis jetzt: live aus den Rohdaten (der Tag ist noch nicht verdichtet)
|
||||
const t = shape(collect(db, site, [todayDay], now)).series[0];
|
||||
// Vorzeitraum: die `range` Kalendertage direkt vor dem aktuellen Zeitraum (kalendarisch, nie now - range * 24 h)
|
||||
const prevDays = dayList(shiftDay(days[0], -1), range);
|
||||
const prevCollected = collect(db, site, prevDays, now);
|
||||
@@ -113,6 +118,7 @@ export function computeStats(db, site, range, now = Date.now()) {
|
||||
firstDay,
|
||||
totals,
|
||||
series,
|
||||
today: { day: todayDay, pv: t.pv, visitors: t.visitors, contacts: t.contacts },
|
||||
pages: top(cur.dims.pv_path || new Map()),
|
||||
refs: top(cur.dims.pv_ref || new Map()),
|
||||
countries: top(cur.dims.pv_country || new Map()),
|
||||
|
||||
Reference in new issue
Block a user