From 8490344d69cc327e1f3e771070d4644d445393bc Mon Sep 17 00:00:00 2001 From: iven Date: Sat, 9 May 2026 07:52:41 +0800 Subject: [PATCH] =?UTF-8?q?fix(ai):=20AI=20=E9=85=8D=E9=A2=9D=E6=91=98?= =?UTF-8?q?=E8=A6=81=E7=AB=AF=E7=82=B9=20500=20=E9=94=99=E8=AF=AF=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit get_usage_summary 中 get_tenant_config 和 get_monthly_token_usage 的 数据库错误直接传播为 AppError::Internal (500),当 ai_tenant_configs 表 为空或查询异常时导致整个端点不可用。 改为 unwrap_or 降级处理:config 缺失时使用默认配额,token 查询失败时归零, 确保端点始终返回有效数据而非 500。 --- crates/erp-ai/src/service/quota.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/erp-ai/src/service/quota.rs b/crates/erp-ai/src/service/quota.rs index 59c545a..0ff2722 100644 --- a/crates/erp-ai/src/service/quota.rs +++ b/crates/erp-ai/src/service/quota.rs @@ -116,13 +116,13 @@ impl QuotaService { } pub async fn get_usage_summary(&self, tenant_id: Uuid) -> AiResult { - let config = self.get_tenant_config(tenant_id).await?; + let config = self.get_tenant_config(tenant_id).await.unwrap_or(None); let budget = config .as_ref() .map(|c| c.monthly_token_budget) .unwrap_or(1_000_000); - let used = self.get_monthly_token_usage(tenant_id).await?; + let used = self.get_monthly_token_usage(tenant_id).await.unwrap_or(0); Ok(QuotaSummary { tenant_id,