Analyse: Messdienst: Ping ohne Einwilligung, Zeitstempel auf Stunde, Pfade ohne Kennungen

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-10-01 18:50:26 +00:00
1 parent 8d64a18d35
commit 96409c6306
7 files changed
+149 -10

No files matched your search

+5 -2
View File
@@ -19,8 +19,11 @@ export function aggregateRows(rows) {
const visitors = new Set();
for (const r of rows) {
if (r.type === 'pv') {
add('pv_total', ''); add('pv_path', r.path || ''); add('pv_ref', r.ref || '');
add('pv_total', ''); add('pv_path', r.path || '');
if (r.vp != null) add('pv_ref', r.ref || ''); // nur Besucher mit Einwilligung; sonst kommt pv_ref aus cx
add('pv_country', r.country || ''); add('pv_device', r.device || '');
} else if (r.type === 'cx') {
add('pv_ref', r.ref || '');
} else if (r.type === 'en') {
add('en_count', ''); add('en_sec_sum', '', r.sec || 0); add('scroll_sum', '', r.scroll || 0);
if (r.visitor) visitors.add(r.visitor);
@@ -40,7 +43,7 @@ export function runNightly(db, { now = Date.now() } = {}) {
const rawCut = now - RAW_DAYS * DAY_MS;
const offCut = new Date(now - OFF_DAYS * DAY_MS).toISOString();
const siteKeys = db.prepare(`SELECT DISTINCT site FROM events_raw UNION SELECT siteKey FROM sites`).all().map((r) => r.site);
const selRaw = db.prepare('SELECT ts, type, path, ref, country, device, visitor, sec, scroll, kind FROM events_raw WHERE site = ? AND ts < ? ORDER BY ts');
const selRaw = db.prepare('SELECT ts, type, path, vp, ref, country, device, visitor, sec, scroll, kind FROM events_raw WHERE site = ? AND ts < ? ORDER BY ts');
const selDone = db.prepare('SELECT day FROM agg_state WHERE site = ?');
const insDaily = db.prepare(`INSERT INTO daily (site, day, dim, key, count) VALUES (?, ?, ?, ?, ?)
ON CONFLICT(site, day, dim, key) DO UPDATE SET count = count + excluded.count`);