diff --git a/backend/internal/service/antigravity_credits_overages.go b/backend/internal/service/antigravity_credits_overages.go index 422d9f80..56725900 100644 --- a/backend/internal/service/antigravity_credits_overages.go +++ b/backend/internal/service/antigravity_credits_overages.go @@ -23,7 +23,7 @@ const ( // 缓存 TTL 不足时会自动从 Google loadCodeAssist API 刷新。 // 返回 true 表示积分可用。 func (s *AntigravityGatewayService) checkAccountCredits( - ctx context.Context, account *Account, accessToken, proxyURL string, + ctx context.Context, account *Account, ) bool { if account == nil || account.ID == 0 { return false @@ -241,7 +241,7 @@ func (s *AntigravityGatewayService) attemptCreditsOveragesRetry( } // Check actual credits balance before attempting retry - if !s.checkAccountCredits(p.ctx, p.account, p.accessToken, p.proxyURL) { + if !s.checkAccountCredits(p.ctx, p.account) { s.setCreditsExhausted(p.ctx, p.account) modelKey := resolveCreditsOveragesModelKey(p.ctx, p.account, modelName, p.requestedModel) logger.LegacyPrintf("service.antigravity_gateway", "%s credit_overages_no_credits model=%s account=%d (skipping credits retry)", diff --git a/backend/internal/service/antigravity_gateway_service.go b/backend/internal/service/antigravity_gateway_service.go index d3f5f09e..fd588bdd 100644 --- a/backend/internal/service/antigravity_gateway_service.go +++ b/backend/internal/service/antigravity_gateway_service.go @@ -558,7 +558,7 @@ func (s *AntigravityGatewayService) antigravityRetryLoop(p antigravityRetryLoopP p.account.IsOveragesEnabled() && !p.account.isCreditsExhausted() && p.account.isModelRateLimitedWithContext(p.ctx, p.requestedModel) { // Check actual credits balance before injection - if !s.checkAccountCredits(p.ctx, p.account, p.accessToken, p.proxyURL) { + if !s.checkAccountCredits(p.ctx, p.account) { // No credits available - mark as exhausted and skip injection s.setCreditsExhausted(p.ctx, p.account) logger.LegacyPrintf("service.antigravity_gateway", "%s pre_check: no_credits_available account=%d (skipping credits injection)", diff --git a/backend/internal/service/gateway_service.go b/backend/internal/service/gateway_service.go index 07d8e094..a599b3cc 100644 --- a/backend/internal/service/gateway_service.go +++ b/backend/internal/service/gateway_service.go @@ -7842,13 +7842,6 @@ func (s *GatewayService) RecordUsage(ctx context.Context, input *RecordUsageInpu CacheCreation5mTokens: result.Usage.CacheCreation5mTokens, CacheCreation1hTokens: result.Usage.CacheCreation1hTokens, ImageOutputTokens: result.Usage.ImageOutputTokens, - InputCost: cost.InputCost, - OutputCost: cost.OutputCost, - ImageOutputCost: cost.ImageOutputCost, - CacheCreationCost: cost.CacheCreationCost, - CacheReadCost: cost.CacheReadCost, - TotalCost: cost.TotalCost, - ActualCost: cost.ActualCost, RateMultiplier: multiplier, AccountRateMultiplier: &accountRateMultiplier, BillingType: billingType, @@ -7863,6 +7856,15 @@ func (s *GatewayService) RecordUsage(ctx context.Context, input *RecordUsageInpu ModelMappingChain: optionalTrimmedStringPtr(input.ModelMappingChain), CreatedAt: time.Now(), } + if cost != nil { + usageLog.InputCost = cost.InputCost + usageLog.OutputCost = cost.OutputCost + usageLog.ImageOutputCost = cost.ImageOutputCost + usageLog.CacheCreationCost = cost.CacheCreationCost + usageLog.CacheReadCost = cost.CacheReadCost + usageLog.TotalCost = cost.TotalCost + usageLog.ActualCost = cost.ActualCost + } // 设置计费模式 if result.MediaType != "image" && result.MediaType != "video" && result.MediaType != "prompt" { @@ -8085,13 +8087,6 @@ func (s *GatewayService) RecordUsageWithLongContext(ctx context.Context, input * CacheCreation5mTokens: result.Usage.CacheCreation5mTokens, CacheCreation1hTokens: result.Usage.CacheCreation1hTokens, ImageOutputTokens: result.Usage.ImageOutputTokens, - InputCost: cost.InputCost, - OutputCost: cost.OutputCost, - ImageOutputCost: cost.ImageOutputCost, - CacheCreationCost: cost.CacheCreationCost, - CacheReadCost: cost.CacheReadCost, - TotalCost: cost.TotalCost, - ActualCost: cost.ActualCost, RateMultiplier: multiplier, AccountRateMultiplier: &accountRateMultiplier, BillingType: billingType, @@ -8105,6 +8100,15 @@ func (s *GatewayService) RecordUsageWithLongContext(ctx context.Context, input * ModelMappingChain: optionalTrimmedStringPtr(input.ModelMappingChain), CreatedAt: time.Now(), } + if cost != nil { + usageLog.InputCost = cost.InputCost + usageLog.OutputCost = cost.OutputCost + usageLog.ImageOutputCost = cost.ImageOutputCost + usageLog.CacheCreationCost = cost.CacheCreationCost + usageLog.CacheReadCost = cost.CacheReadCost + usageLog.TotalCost = cost.TotalCost + usageLog.ActualCost = cost.ActualCost + } // 设置计费模式 if result.ImageCount > 0 {