Skip to content

Commit 2675dfc

Browse files
Filter playback and TTS counts so cross-tab totals match
Two adjacent-panel mismatches the dashboard was showing: - Overview "Content Started by Type" summed to 26 while Engagement "Content Started" KPI showed 25. Root cause: Overview query counted all playback rows (including the 1 completed event), Engagement filtered to blob8='started'. Added the same filter to Overview's "Content Started by Type" and "Top Figures by Plays" queries so the numbers reconcile. - Audio "Server Distribution" summed to 67 while the adjacent "TTS Requests" KPI, "TTS Models", "TTS Backend", and "Audio Language" panels all summed to 60. Root cause: server-dist query counted speech + transcriptions together. Filtered to speech-only so all TTS-context panels match. STT volume stays in its own STT KPI.
1 parent 2455156 commit 2675dfc

1 file changed

Lines changed: 15 additions & 8 deletions

File tree

workers/stats/src/dashboard.ts

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1202,10 +1202,13 @@ async function loadOverview() {
12021202
{ sql: "SELECT blob2 as figure, COUNT() as c FROM agora_llm WHERE blob1 = 'chat' AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY GROUP BY figure ORDER BY c DESC LIMIT 1", dataset: 'agora_llm' },
12031203
// Language split (for insight)
12041204
{ sql: "SELECT blob4 as lang, COUNT() as c FROM agora_llm WHERE blob1 = 'chat' AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY GROUP BY lang ORDER BY c DESC", dataset: 'agora_llm' },
1205-
// Content completions by type — Phase 0e' content tracking (blob5 = type for blob1='playback' rows)
1206-
{ sql: "SELECT blob5 as type, COUNT() as c FROM agora_llm WHERE blob1 = 'playback' AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY GROUP BY type ORDER BY c DESC", dataset: 'agora_llm' },
1207-
// Top figures by content completion (blob2 = figureId for playback rows)
1208-
{ sql: "SELECT blob2 as figure, COUNT() as c FROM agora_llm WHERE blob1 = 'playback' AND blob2 != '' AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY GROUP BY figure ORDER BY c DESC LIMIT 8", dataset: 'agora_llm' },
1205+
// Content STARTED by type — playback first-play events (blob8='started').
1206+
// Filter intentional: matches the Engagement tab's "Content Started" KPI
1207+
// exactly. Including completed events would over-count by the small number
1208+
// of completions, breaking cross-tab consistency.
1209+
{ sql: "SELECT blob5 as type, COUNT() as c FROM agora_llm WHERE blob1 = 'playback' AND blob8 = 'started' AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY GROUP BY type ORDER BY c DESC", dataset: 'agora_llm' },
1210+
// Top figures by content first-plays (same blob8='started' filter)
1211+
{ sql: "SELECT blob2 as figure, COUNT() as c FROM agora_llm WHERE blob1 = 'playback' AND blob8 = 'started' AND blob2 != '' AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY GROUP BY figure ORDER BY c DESC LIMIT 8", dataset: 'agora_llm' },
12091212
// Page arrivals (true visit count, fires on every cold load)
12101213
{ sql: "SELECT COUNT() as c FROM agora_llm WHERE blob1 = 'page' AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY", dataset: 'agora_llm' },
12111214
// Page arrivals previous period (for delta)
@@ -1526,8 +1529,10 @@ async function loadProduct() {
15261529
{ sql: "SELECT COUNT() as c FROM agora_audio WHERE blob5 IN ('speech','transcriptions') AND blob4 != '200' AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY", dataset: 'agora_audio' },
15271530
// TTS models
15281531
{ sql: "SELECT blob2 as model, COUNT() as c, AVG(double1) as avg_ms FROM agora_audio WHERE blob5 = 'speech' AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY GROUP BY model ORDER BY c DESC", dataset: 'agora_audio' },
1529-
// Server distribution
1530-
{ sql: "SELECT blob3 as server, COUNT() as c FROM agora_audio WHERE blob5 IN ('speech','transcriptions') AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY GROUP BY server ORDER BY c DESC", dataset: 'agora_audio' },
1532+
// Server distribution — TTS-only so it sums to the TTS Requests count.
1533+
// STT (small relative volume) has its own counter; combining was producing
1534+
// mismatched totals (e.g. 67 vs 60) in adjacent panels.
1535+
{ sql: "SELECT blob3 as server, COUNT() as c FROM agora_audio WHERE blob5 = 'speech' AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY GROUP BY server ORDER BY c DESC", dataset: 'agora_audio' },
15311536
// Audio language split
15321537
{ sql: "SELECT blob1 as lang, COUNT() as c FROM agora_audio WHERE blob5 = 'speech' AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY GROUP BY lang ORDER BY c DESC", dataset: 'agora_audio' },
15331538
// Rate limits
@@ -1757,8 +1762,10 @@ async function loadAudio() {
17571762
{ sql: "SELECT COUNT() as c FROM agora_audio WHERE blob5 IN ('speech','transcriptions') AND blob4 != '200' AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY", dataset: 'agora_audio' },
17581763
// TTS models
17591764
{ sql: "SELECT blob2 as model, COUNT() as c, AVG(double1) as avg_ms FROM agora_audio WHERE blob5 = 'speech' AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY GROUP BY model ORDER BY c DESC", dataset: 'agora_audio' },
1760-
// Server distribution
1761-
{ sql: "SELECT blob3 as server, COUNT() as c FROM agora_audio WHERE blob5 IN ('speech','transcriptions') AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY GROUP BY server ORDER BY c DESC", dataset: 'agora_audio' },
1765+
// Server distribution — TTS-only so it sums to the TTS Requests count.
1766+
// STT (small relative volume) has its own counter; combining was producing
1767+
// mismatched totals (e.g. 67 vs 60) in adjacent panels.
1768+
{ sql: "SELECT blob3 as server, COUNT() as c FROM agora_audio WHERE blob5 = 'speech' AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY GROUP BY server ORDER BY c DESC", dataset: 'agora_audio' },
17621769
// Audio language split
17631770
{ sql: "SELECT blob1 as lang, COUNT() as c FROM agora_audio WHERE blob5 = 'speech' AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY GROUP BY lang ORDER BY c DESC", dataset: 'agora_audio' },
17641771
// Audio rate limits

0 commit comments

Comments
 (0)