fix(data): 同步模型调用次数至 global_models 读模型

- 模型列表改为读取 global_models.usage_count,避免每次扫描 usage 明细表
- 通过历史 backfill 与 usage upsert delta 维护该读模型
- 详情页保留实时 facts 兜底,统一排除 pending/streaming 状态
This commit is contained in:
mayrain
2026-05-05 17:34:02 +08:00
parent 53fa33b0c5
commit f0197b685f
6 changed files with 347 additions and 11 deletions

View File

@@ -0,0 +1,25 @@
WITH aggregated AS (
SELECT
usage.model,
COUNT(*)::BIGINT AS usage_count
FROM usage_billing_facts AS usage
WHERE usage.model IS NOT NULL
AND BTRIM(usage.model) <> ''
AND usage.status NOT IN ('pending', 'streaming')
GROUP BY usage.model
),
refreshed AS (
SELECT
gm.id,
COALESCE(aggregated.usage_count, 0)::BIGINT AS usage_count
FROM global_models AS gm
LEFT JOIN aggregated
ON aggregated.model = gm.name
)
UPDATE global_models AS gm
SET
usage_count = refreshed.usage_count,
updated_at = NOW()
FROM refreshed
WHERE gm.id = refreshed.id
AND COALESCE(gm.usage_count, 0) <> refreshed.usage_count;