mirror of
https://github.com/garrytan/gstack.git
synced 2026-05-20 19:29:56 +08:00
fix: filter source=live in edge functions (Codex review fix #5)
- community-benchmarks: add .eq("source", "live") to telemetry_events query
- community-pulse: use distinct install_fingerprint count instead of raw
count, add source=live filter to all queries
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -21,6 +21,7 @@ Deno.serve(async () => {
|
|||||||
.from("telemetry_events")
|
.from("telemetry_events")
|
||||||
.select("skill, duration_s, outcome")
|
.select("skill, duration_s, outcome")
|
||||||
.eq("event_type", "skill_run")
|
.eq("event_type", "skill_run")
|
||||||
|
.eq("source", "live")
|
||||||
.not("duration_s", "is", null)
|
.not("duration_s", "is", null)
|
||||||
.not("skill", "is", null)
|
.not("skill", "is", null)
|
||||||
.gte("event_timestamp", thirtyDaysAgo)
|
.gte("event_timestamp", thirtyDaysAgo)
|
||||||
|
|||||||
@@ -15,34 +15,38 @@ Deno.serve(async () => {
|
|||||||
const weekAgo = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString();
|
const weekAgo = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString();
|
||||||
const twoWeeksAgo = new Date(Date.now() - 14 * 24 * 60 * 60 * 1000).toISOString();
|
const twoWeeksAgo = new Date(Date.now() - 14 * 24 * 60 * 60 * 1000).toISOString();
|
||||||
|
|
||||||
// This week's active (update_checks)
|
// This week's unique installs (by install_fingerprint, filtered to source=live)
|
||||||
const { count: thisWeekChecks } = await supabase
|
const { data: thisWeekData } = await supabase
|
||||||
.from("update_checks")
|
.from("update_checks")
|
||||||
.select("*", { count: "exact", head: true })
|
.select("install_fingerprint")
|
||||||
|
.eq("source", "live")
|
||||||
.gte("checked_at", weekAgo);
|
.gte("checked_at", weekAgo);
|
||||||
|
|
||||||
// Last week's active (for change %)
|
// Last week's unique installs (for change %)
|
||||||
const { count: lastWeekChecks } = await supabase
|
const { data: lastWeekData } = await supabase
|
||||||
.from("update_checks")
|
.from("update_checks")
|
||||||
.select("*", { count: "exact", head: true })
|
.select("install_fingerprint")
|
||||||
|
.eq("source", "live")
|
||||||
.gte("checked_at", twoWeeksAgo)
|
.gte("checked_at", twoWeeksAgo)
|
||||||
.lt("checked_at", weekAgo);
|
.lt("checked_at", weekAgo);
|
||||||
|
|
||||||
let current = thisWeekChecks ?? 0;
|
let current = new Set((thisWeekData ?? []).map((e: { install_fingerprint: string }) => e.install_fingerprint).filter(Boolean)).size;
|
||||||
let previous = lastWeekChecks ?? 0;
|
let previous = new Set((lastWeekData ?? []).map((e: { install_fingerprint: string }) => e.install_fingerprint).filter(Boolean)).size;
|
||||||
|
|
||||||
// Fallback: if update_checks is empty, count distinct sessions from telemetry_events
|
// Fallback: if no fingerprinted data, count distinct sessions from telemetry_events
|
||||||
if (current === 0) {
|
if (current === 0) {
|
||||||
const { data: thisWeekSessions } = await supabase
|
const { data: thisWeekSessions } = await supabase
|
||||||
.from("telemetry_events")
|
.from("telemetry_events")
|
||||||
.select("session_id")
|
.select("session_id")
|
||||||
.eq("event_type", "skill_run")
|
.eq("event_type", "skill_run")
|
||||||
|
.eq("source", "live")
|
||||||
.gte("event_timestamp", weekAgo);
|
.gte("event_timestamp", weekAgo);
|
||||||
|
|
||||||
const { data: lastWeekSessions } = await supabase
|
const { data: lastWeekSessions } = await supabase
|
||||||
.from("telemetry_events")
|
.from("telemetry_events")
|
||||||
.select("session_id")
|
.select("session_id")
|
||||||
.eq("event_type", "skill_run")
|
.eq("event_type", "skill_run")
|
||||||
|
.eq("source", "live")
|
||||||
.gte("event_timestamp", twoWeeksAgo)
|
.gte("event_timestamp", twoWeeksAgo)
|
||||||
.lt("event_timestamp", weekAgo);
|
.lt("event_timestamp", weekAgo);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user