From 063454ae9668b2efe12475034186d237013a703a Mon Sep 17 00:00:00 2001 From: feitianbubu Date: Wed, 24 Jun 2026 23:43:03 +0800 Subject: [PATCH] fix(admin/usage): populate cache creation/read token breakdown in stats --- backend/internal/repository/usage_log_repo.go | 4 ++++ .../repository/usage_log_repo_stats_integration_test.go | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/backend/internal/repository/usage_log_repo.go b/backend/internal/repository/usage_log_repo.go index 7913ba667d..3fb9e3f737 100644 --- a/backend/internal/repository/usage_log_repo.go +++ b/backend/internal/repository/usage_log_repo.go @@ -3545,6 +3545,8 @@ func (r *usageLogRepository) GetStatsWithFilters(ctx context.Context, filters Us COALESCE(SUM(input_tokens), 0) as total_input_tokens, COALESCE(SUM(output_tokens), 0) as total_output_tokens, COALESCE(SUM(cache_creation_tokens + cache_read_tokens), 0) as total_cache_tokens, + COALESCE(SUM(cache_creation_tokens), 0) as total_cache_creation_tokens, + COALESCE(SUM(cache_read_tokens), 0) as total_cache_read_tokens, COALESCE(SUM(total_cost), 0) as total_cost, COALESCE(SUM(actual_cost), 0) as total_actual_cost, COALESCE(SUM(COALESCE(account_stats_cost, total_cost) * COALESCE(account_rate_multiplier, 1)), 0) as total_account_cost, @@ -3575,6 +3577,8 @@ func (r *usageLogRepository) GetStatsWithFilters(ctx context.Context, filters Us &stats.TotalInputTokens, &stats.TotalOutputTokens, &stats.TotalCacheTokens, + &stats.TotalCacheCreationTokens, + &stats.TotalCacheReadTokens, &stats.TotalCost, &stats.TotalActualCost, &totalAccountCost, diff --git a/backend/internal/repository/usage_log_repo_stats_integration_test.go b/backend/internal/repository/usage_log_repo_stats_integration_test.go index 09ac2aee14..44052d07cc 100644 --- a/backend/internal/repository/usage_log_repo_stats_integration_test.go +++ b/backend/internal/repository/usage_log_repo_stats_integration_test.go @@ -29,6 +29,7 @@ func TestUsageLog_GetStatsWithFilters_AggregatesAndEndpoints(t *testing.T) { _, err := repo.Create(ctx, &service.UsageLog{ UserID: user.ID, APIKeyID: apiKey.ID, AccountID: account.ID, Model: "claude-3", InputTokens: 2, OutputTokens: 3, + CacheCreationTokens: 4, CacheReadTokens: 5, TotalCost: 0.5, ActualCost: 0.4, CreatedAt: now, InboundEndpoint: &inboundEndpoint, UpstreamEndpoint: &upstreamEndpoint, }) @@ -44,6 +45,9 @@ func TestUsageLog_GetStatsWithFilters_AggregatesAndEndpoints(t *testing.T) { require.Equal(t, int64(3), stats.TotalRequests) require.Equal(t, int64(6), stats.TotalInputTokens) require.Equal(t, int64(9), stats.TotalOutputTokens) + require.Equal(t, int64(27), stats.TotalCacheTokens) + require.Equal(t, int64(12), stats.TotalCacheCreationTokens) + require.Equal(t, int64(15), stats.TotalCacheReadTokens) require.InDelta(t, 1.2, stats.TotalActualCost, 1e-9) require.NotEmpty(t, stats.Endpoints) require.NotEmpty(t, stats.UpstreamEndpoints)