From 1bff06ea502290ac1b8f6702d1ea5a85cc90ca5f Mon Sep 17 00:00:00 2001 From: IanShaw <131567472+IanShaw027@users.noreply.github.com> Date: Thu, 20 Aug 2026 09:50:23 -0700 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20Grok=20Realtime=20?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E6=A3=80=E6=9F=A5=E4=B8=8E=20rollup=20?= =?UTF-8?q?=E6=97=B6=E5=8C=BA=E6=96=AD=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit golangci 要求检查 Realtime 上游 Close 返回值,并删除已无调用的 heavy-model 冷却函数。分组日汇总集成测试在 UTC 晚上跨上海零点时会把水位写成 UTC 日期,将会话时区钉到 Asia/Shanghai。 --- backend/internal/handler/grok_audio.go | 2 +- .../group_usage_rollup_trigger_integration_test.go | 7 +++++++ backend/internal/service/grok_audio.go | 2 +- backend/internal/service/openai_gateway_grok.go | 5 ----- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/backend/internal/handler/grok_audio.go b/backend/internal/handler/grok_audio.go index c95b5ce559..28ae40a39b 100644 --- a/backend/internal/handler/grok_audio.go +++ b/backend/internal/handler/grok_audio.go @@ -121,7 +121,7 @@ func (h *OpenAIGatewayHandler) GrokRealtime(c *gin.Context) { return } defer release() - defer upstream.Close() + defer func() { _ = upstream.Close() }() conn, err := coderws.Accept(c.Writer, c.Request, &coderws.AcceptOptions{CompressionMode: coderws.CompressionContextTakeover}) if err != nil { diff --git a/backend/internal/repository/group_usage_rollup_trigger_integration_test.go b/backend/internal/repository/group_usage_rollup_trigger_integration_test.go index db182be495..32016e3c0a 100644 --- a/backend/internal/repository/group_usage_rollup_trigger_integration_test.go +++ b/backend/internal/repository/group_usage_rollup_trigger_integration_test.go @@ -151,6 +151,7 @@ func TestGroupUsageRollupTriggerSerializesInsertTransactionAcrossMidnight(t *tes insertTx := beginGroupUsageRollupTriggerTestTx(t, ctx, schema) defer func() { _ = insertTx.Rollback() }() + require.NoError(t, setGroupUsageRollupTriggerTimeZone(ctx, insertTx, "Asia/Shanghai")) var insertBackendPID int require.NoError(t, insertTx.QueryRowContext(ctx, "SELECT pg_backend_pid()").Scan(&insertBackendPID)) @@ -206,6 +207,7 @@ func TestGroupUsageRollupTriggerKeepsWatermarkForTodayInsert(t *testing.T) { tx := beginGroupUsageRollupTriggerTestTx(t, ctx, schema) defer func() { _ = tx.Rollback() }() + require.NoError(t, setGroupUsageRollupTriggerTimeZone(ctx, tx, "Asia/Shanghai")) _, err := tx.ExecContext(ctx, ` INSERT INTO groups (id) VALUES (10); INSERT INTO users (id) VALUES (1); @@ -476,6 +478,11 @@ func setGroupUsageRollupTriggerSearchPath(ctx context.Context, tx *sql.Tx, quote return err } +func setGroupUsageRollupTriggerTimeZone(ctx context.Context, tx *sql.Tx, name string) error { + _, err := tx.ExecContext(ctx, "SET LOCAL TIME ZONE "+pq.QuoteLiteral(name)) + return err +} + func waitForGroupUsageRollupStateLock( ctx context.Context, backendPID int, diff --git a/backend/internal/service/grok_audio.go b/backend/internal/service/grok_audio.go index 771cae09f4..0cd138cad5 100644 --- a/backend/internal/service/grok_audio.go +++ b/backend/internal/service/grok_audio.go @@ -133,7 +133,7 @@ func (s *OpenAIGatewayService) ProxyGrokRealtime(ctx context.Context, c *gin.Con if err != nil { return false, err } - defer upstream.Close() + defer func() { _ = upstream.Close() }() return s.ProxyGrokRealtimeConn(ctx, c, client, upstream) } diff --git a/backend/internal/service/openai_gateway_grok.go b/backend/internal/service/openai_gateway_grok.go index cca3b28ab3..7fed94eb13 100644 --- a/backend/internal/service/openai_gateway_grok.go +++ b/backend/internal/service/openai_gateway_grok.go @@ -1809,11 +1809,6 @@ func grokRequestedModelFromCtx(ctx context.Context) string { return strings.TrimSpace(model) } -func isGrokHeavyTransientModel(requestedModel string) bool { - model := strings.ToLower(strings.TrimSpace(xai.ResolveGrokTextResponsesModelID(requestedModel))) - return strings.Contains(model, "multi-agent") -} - func persistGrokTransientModelCooldown(account *Account, decision GrokUpstreamFailureDecision) bool { if account == nil { return false