diff --git a/heicode/controller/agent_template_handlers.go b/heicode/controller/agent_template_handlers.go index aa13b5d5..ec2f4390 100644 --- a/heicode/controller/agent_template_handlers.go +++ b/heicode/controller/agent_template_handlers.go @@ -490,11 +490,18 @@ func HeicodeGetAgentUsage(c *gin.Context) { } start, _ := strconv.ParseInt(strings.TrimSpace(c.Query("start")), 10, 64) end, _ := strconv.ParseInt(strings.TrimSpace(c.Query("end")), 10, 64) - usage, err := model.SumAgentUsage(c.GetInt("id"), "agent:"+row.DeploymentID, start, end) + userID := c.GetInt("id") + usage, err := model.SumAgentUsage(userID, "agent:"+row.DeploymentID, start, end) if err != nil { agentError(c, "DEPLOYMENT_CONFLICT", "failed to aggregate agent usage") return } + // #9: budget_remaining — 用户钱包剩余额度。Agent 模型调用经隐藏 token 计费到 + // user.Quota(见 #30),故"预算剩余"= 用户剩余额度。-1 表示读取失败(不阻断用量展示)。 + budgetRemaining := int64(-1) + if u, uErr := model.GetUserById(userID, false); uErr == nil && u != nil { + budgetRemaining = int64(u.Quota) + } common.ApiSuccess(c, gin.H{ "agent_id": row.DeploymentID, "quota": usage.Quota, @@ -502,6 +509,7 @@ func HeicodeGetAgentUsage(c *gin.Context) { "completion_tokens": usage.CompletionTokens, "call_count": usage.CallCount, "quota_per_unit": common.QuotaPerUnit, + "budget_remaining": budgetRemaining, }) }