mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-09-24 16:05:44 +08:00
TTFT (first_token_ms) is only recorded for streaming requests, but the ops dashboard weighted merged TTFT percentiles by success_count (all successful requests, streaming + non-streaming). When non-streaming traffic was present this diluted/skewed the merged TTFT figures shown for longer (pre-aggregated) time ranges; the realtime path was exact. Add a per-bucket ttft_sample_count (rows that actually recorded first_token_ms) to ops_metrics_hourly / ops_metrics_daily and weight all TTFT percentile merges by it instead of success_count: - hourly/daily pre-agg upserts populate and propagate ttft_sample_count; daily TTFT p50/p90/avg now weighted by ttft_sample_count. - dashboard hourly-row merge and cross-segment combine weight TTFT by the streaming sample count; queryUsageLatency returns it for raw head/tail fragments. duration stays weighted by success_count (recorded for every request); p95/p99/max keep the conservative MAX merge (weight-independent). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
22 lines
955 B
SQL
22 lines
955 B
SQL
-- Add ttft_sample_count to ops_metrics_hourly / ops_metrics_daily.
|
|
--
|
|
-- first_token_ms (TTFT) is only recorded for streaming requests, but the
|
|
-- dashboard previously weighted merged TTFT percentiles by success_count
|
|
-- (all successful requests, streaming + non-streaming). That diluted/skewed
|
|
-- the merged TTFT figures whenever non-streaming traffic was present.
|
|
--
|
|
-- Store the real streaming sample count per bucket so TTFT percentiles can be
|
|
-- weighted by the number of rows that actually contributed a first_token_ms.
|
|
--
|
|
-- Existing rows default to 0; they will be repopulated on the next hourly
|
|
-- re-aggregation pass. Migration is idempotent and safe to re-run.
|
|
|
|
SET LOCAL lock_timeout = '5s';
|
|
SET LOCAL statement_timeout = '10min';
|
|
|
|
ALTER TABLE ops_metrics_hourly
|
|
ADD COLUMN IF NOT EXISTS ttft_sample_count BIGINT NOT NULL DEFAULT 0;
|
|
|
|
ALTER TABLE ops_metrics_daily
|
|
ADD COLUMN IF NOT EXISTS ttft_sample_count BIGINT NOT NULL DEFAULT 0;
|