From eaf069175211da688f604ce4d8131d4c46ae6be5 Mon Sep 17 00:00:00 2001 From: Heatherm Huang Date: Fri, 17 Jul 2026 15:21:32 +0800 Subject: [PATCH] fix(grok): preserve media eligibility in scheduler cache --- .../internal/repository/scheduler_cache.go | 2 + .../repository/scheduler_cache_unit_test.go | 44 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/backend/internal/repository/scheduler_cache.go b/backend/internal/repository/scheduler_cache.go index 90a7711e4f..d80b57f3d3 100644 --- a/backend/internal/repository/scheduler_cache.go +++ b/backend/internal/repository/scheduler_cache.go @@ -961,6 +961,8 @@ func filterSchedulerExtra(extra map[string]any) map[string]any { "auto_pause_7d_disabled", "model_rate_limits", service.UpstreamBillingProbeExtraKey, + service.GrokMediaEligibleExtraKey, + "grok_billing_snapshot", } filtered := make(map[string]any) for _, key := range keys { diff --git a/backend/internal/repository/scheduler_cache_unit_test.go b/backend/internal/repository/scheduler_cache_unit_test.go index 230dc59903..f2671b7ad1 100644 --- a/backend/internal/repository/scheduler_cache_unit_test.go +++ b/backend/internal/repository/scheduler_cache_unit_test.go @@ -276,6 +276,50 @@ func TestBuildSchedulerMetadataAccount_KeepsOpenAIWSFlags(t *testing.T) { require.Nil(t, got.Extra["unused_large_field"]) } +func TestBuildSchedulerMetadataAccount_KeepsGrokMediaEligibility(t *testing.T) { + t.Run("explicit override", func(t *testing.T) { + account := service.Account{ + ID: 43, + Platform: service.PlatformGrok, + Type: service.AccountTypeOAuth, + Extra: map[string]any{ + service.GrokMediaEligibleExtraKey: false, + "unused_large_field": "drop-me", + }, + } + + got := buildSchedulerMetadataAccount(account) + + eligible, reason := got.GrokMediaGenerationEligibility() + require.False(t, eligible) + require.Equal(t, "override_disabled", reason) + require.Equal(t, false, got.Extra[service.GrokMediaEligibleExtraKey]) + require.Nil(t, got.Extra["unused_large_field"]) + }) + + t.Run("forbidden billing observation", func(t *testing.T) { + account := service.Account{ + ID: 44, + Platform: service.PlatformGrok, + Type: service.AccountTypeOAuth, + Extra: map[string]any{ + "grok_billing_snapshot": map[string]any{ + "status_code": 200, + "weekly_status_code": 403, + "monthly_status_code": 200, + }, + }, + } + + got := buildSchedulerMetadataAccount(account) + + eligible, reason := got.GrokMediaGenerationEligibility() + require.False(t, eligible) + require.Equal(t, "billing_forbidden", reason) + require.NotNil(t, got.Extra["grok_billing_snapshot"]) + }) +} + func TestBuildSchedulerMetadataAccount_KeepsSlimGroupMembership(t *testing.T) { account := service.Account{ ID: 42,