feat(ai): Phase 1A 收尾 — 用量记录 + 健康摘要端点 + 小程序组件

- chat_handler 添加 log_usage 精确记录 token 消耗(provider + model)
- SSE build_sse_stream 添加估算 token 用量记录(4 字符 ≈ 1 token)
- 新增 GET /ai/health-summary 端点聚合患者洞察+分析记录
- 小程序 AiHealthSummaryCard 组件(风险等级+洞察统计+摘要列表)
- 小程序 services/ai-analysis 新增 getHealthSummary API
This commit is contained in:
iven
2026-05-18 23:20:06 +08:00
parent 281c71ebfc
commit 7e3d27ecf3
7 changed files with 397 additions and 2 deletions

View File

@@ -880,6 +880,22 @@ fn build_sse_stream(
let metadata = serde_json::json!({"analysis_type": analysis_type});
let _ = state.analysis.complete_analysis(analysis_id, full_content.clone(), metadata.clone()).await;
// 记录用量的估算 token 消耗SSE 模式无法获取精确 token 数,按 4 字符 ≈ 1 token 估算)
let est_output_tokens = (full_content.len() as u32) / 4;
if let Err(e) = state.usage.log_usage(
tenant_id,
"sse",
"",
analysis_type,
0,
est_output_tokens,
0,
0,
false,
).await {
tracing::warn!(error = %e, "Failed to log SSE analysis usage");
}
// 后处理:解析双通道输出、创建建议、发布事件
crate::service::post_process::post_process_analysis(
&state,