From af96c8ea5378fa6efb115bf96e3f7669efd46f52 Mon Sep 17 00:00:00 2001 From: erio Date: Wed, 18 Mar 2026 15:03:24 +0800 Subject: [PATCH] feat: map claude-haiku-4-5 variants to claude-sonnet-4-6 Update model mapping target for claude-haiku-4-5 and claude-haiku-4-5-20251001 from claude-sonnet-4-5 to claude-sonnet-4-6. Includes migration script, default constants, and test updates. --- backend/internal/domain/constants.go | 4 ++-- .../service/antigravity_model_mapping_test.go | 8 ++++---- .../migrations/075_map_haiku45_to_sonnet46.sql | 17 +++++++++++++++++ 3 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 backend/migrations/075_map_haiku45_to_sonnet46.sql diff --git a/backend/internal/domain/constants.go b/backend/internal/domain/constants.go index c51046a2..4e69ca02 100644 --- a/backend/internal/domain/constants.go +++ b/backend/internal/domain/constants.go @@ -82,8 +82,8 @@ var DefaultAntigravityModelMapping = map[string]string{ "claude-opus-4-5-20251101": "claude-opus-4-6-thinking", // 迁移旧模型 "claude-sonnet-4-5-20250929": "claude-sonnet-4-5", // Claude Haiku → Sonnet(无 Haiku 支持) - "claude-haiku-4-5": "claude-sonnet-4-5", - "claude-haiku-4-5-20251001": "claude-sonnet-4-5", + "claude-haiku-4-5": "claude-sonnet-4-6", + "claude-haiku-4-5-20251001": "claude-sonnet-4-6", // Gemini 2.5 白名单 "gemini-2.5-flash": "gemini-2.5-flash", "gemini-2.5-flash-image": "gemini-2.5-flash-image", diff --git a/backend/internal/service/antigravity_model_mapping_test.go b/backend/internal/service/antigravity_model_mapping_test.go index 71939d26..1dbe9870 100644 --- a/backend/internal/service/antigravity_model_mapping_test.go +++ b/backend/internal/service/antigravity_model_mapping_test.go @@ -57,16 +57,16 @@ func TestAntigravityGatewayService_GetMappedModel(t *testing.T) { expected: "claude-opus-4-6-thinking", }, { - name: "默认映射 - claude-haiku-4-5 → claude-sonnet-4-5", + name: "默认映射 - claude-haiku-4-5 → claude-sonnet-4-6", requestedModel: "claude-haiku-4-5", accountMapping: nil, - expected: "claude-sonnet-4-5", + expected: "claude-sonnet-4-6", }, { - name: "默认映射 - claude-haiku-4-5-20251001 → claude-sonnet-4-5", + name: "默认映射 - claude-haiku-4-5-20251001 → claude-sonnet-4-6", requestedModel: "claude-haiku-4-5-20251001", accountMapping: nil, - expected: "claude-sonnet-4-5", + expected: "claude-sonnet-4-6", }, { name: "默认映射 - claude-sonnet-4-5-20250929 → claude-sonnet-4-5", diff --git a/backend/migrations/075_map_haiku45_to_sonnet46.sql b/backend/migrations/075_map_haiku45_to_sonnet46.sql new file mode 100644 index 00000000..bbaa45e6 --- /dev/null +++ b/backend/migrations/075_map_haiku45_to_sonnet46.sql @@ -0,0 +1,17 @@ +-- Map claude-haiku-4-5 variants target from claude-sonnet-4-5 to claude-sonnet-4-6 +-- +-- Only updates when the current target is exactly claude-sonnet-4-5. + +-- 1. claude-haiku-4-5 +UPDATE accounts +SET credentials = jsonb_set(credentials, '{model_mapping,claude-haiku-4-5}', '"claude-sonnet-4-6"') +WHERE platform = 'antigravity' + AND deleted_at IS NULL + AND credentials->'model_mapping'->>'claude-haiku-4-5' = 'claude-sonnet-4-5'; + +-- 2. claude-haiku-4-5-20251001 +UPDATE accounts +SET credentials = jsonb_set(credentials, '{model_mapping,claude-haiku-4-5-20251001}', '"claude-sonnet-4-6"') +WHERE platform = 'antigravity' + AND deleted_at IS NULL + AND credentials->'model_mapping'->>'claude-haiku-4-5-20251001' = 'claude-sonnet-4-5';