fix(saas): SSE 用量统计一致性修复 — 回写 usage_records + 消除 relay_requests 双重计数
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
- service.rs: SSE 流结束后回写 usage_records 真实 token (status=success)
- service.rs: spawned task 中调用 increment_usage 统一递增 tokens + relay_requests
- handlers.rs: 移除 SSE 路径的 increment_dimension("relay_requests") 消除双重计数
- 从 request_body 提取 model_id 用于 usage_records 精准归因
This commit is contained in:
@@ -333,14 +333,8 @@ pub async fn chat_completions(
|
||||
}
|
||||
}
|
||||
|
||||
// SSE: relay_requests 实时递增(tokens 由 AggregateUsageWorker 对账修正)
|
||||
if let Err(e) = crate::billing::service::increment_dimension(
|
||||
&state.db, &account_id_usage, "relay_requests",
|
||||
).await {
|
||||
tracing::warn!("Failed to increment billing relay_requests for {}: {}", account_id_usage, e);
|
||||
}
|
||||
|
||||
// SSE 流已返回,递减队列计数器(流式任务开始处理)
|
||||
// 注意: relay_requests 和 tokens 统一由 execute_relay spawned task 中的 increment_usage 递增
|
||||
state.cache.relay_dequeue(&account_id_usage);
|
||||
|
||||
let response = axum::response::Response::builder()
|
||||
|
||||
Reference in New Issue
Block a user