You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
Copy file name to clipboardExpand all lines: workers/stats/src/dashboard.ts
+15-8Lines changed: 15 additions & 8 deletions
Original file line number
Diff line number
Diff line change
@@ -1202,10 +1202,13 @@ async function loadOverview() {
1202
1202
{ 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' },
1203
1203
// Language split (for insight)
1204
1204
{ 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' },
1209
1212
// Page arrivals (true visit count, fires on every cold load)
1210
1213
{ sql: "SELECT COUNT() as c FROM agora_llm WHERE blob1 = 'page' AND timestamp > NOW() - INTERVAL '" + iv() + "' DAY", dataset: 'agora_llm' },
1211
1214
// Page arrivals previous period (for delta)
@@ -1526,8 +1529,10 @@ async function loadProduct() {
1526
1529
{ 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' },
1527
1530
// TTS models
1528
1531
{ 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' },
1531
1536
// Audio language split
1532
1537
{ 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' },
1533
1538
// Rate limits
@@ -1757,8 +1762,10 @@ async function loadAudio() {
1757
1762
{ 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' },
1758
1763
// TTS models
1759
1764
{ 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' },
1762
1769
// Audio language split
1763
1770
{ 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' },
0 commit comments