From 0dec1ad2922ff8c9d27b67f8a31dfb35bce1902b Mon Sep 17 00:00:00 2001 From: shaw Date: Fri, 10 Jul 2026 14:09:07 +0800 Subject: [PATCH] =?UTF-8?q?fix(service):=20=E6=B6=88=E9=99=A4=20isOpenAIGP?= =?UTF-8?q?T56Model=20=E9=87=8D=E5=A4=8D=E5=A3=B0=E6=98=8E=EF=BC=8C?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E5=88=B0=20openai=5Fmodel=5Falias.go?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #3898 与 #3909 各自新增了同名函数(billing 精确匹配版 / gateway 前缀匹配版),合并后 internal/service 编译失败。保留前缀匹配语义作为 唯一实现:对 normalizeKnownOpenAICodexModel 的输出(gpt-5.6-* 精确 基名)canonicalize 幂等且精确分支命中,计费行为不变;同时保住 gpt-5.6-*-max 等后缀变体的识别。 --- backend/internal/service/billing_service.go | 4 ---- .../internal/service/openai_gateway_request_body.go | 10 ---------- backend/internal/service/openai_model_alias.go | 12 ++++++++++++ 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/backend/internal/service/billing_service.go b/backend/internal/service/billing_service.go index 3c8b52af97..71d74ae6e0 100644 --- a/backend/internal/service/billing_service.go +++ b/backend/internal/service/billing_service.go @@ -1141,10 +1141,6 @@ func (s *BillingService) shouldApplySessionLongContextPricing(tokens UsageTokens return totalInputTokens > pricing.LongContextInputThreshold } -func isOpenAIGPT56Model(normalized string) bool { - return normalized == "gpt-5.6-sol" || normalized == "gpt-5.6-terra" || normalized == "gpt-5.6-luna" -} - func usesOpenAILegacyLongContextPricing(normalized string) bool { return normalized == "gpt-5.4" || normalized == "gpt-5.5" || normalized == "gpt-5.5-pro" } diff --git a/backend/internal/service/openai_gateway_request_body.go b/backend/internal/service/openai_gateway_request_body.go index f1e353b2af..0e888e145b 100644 --- a/backend/internal/service/openai_gateway_request_body.go +++ b/backend/internal/service/openai_gateway_request_body.go @@ -1218,13 +1218,3 @@ func normalizeOpenAIReasoningEffortForModel(raw, model string) string { } return normalizeOpenAIReasoningEffort(raw) } - -func isOpenAIGPT56Model(model string) bool { - normalized := canonicalizeOpenAIModelAliasSpelling(model) - for _, prefix := range []string{"gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna"} { - if normalized == prefix || strings.HasPrefix(normalized, prefix+"-") { - return true - } - } - return false -} diff --git a/backend/internal/service/openai_model_alias.go b/backend/internal/service/openai_model_alias.go index 4e3d3b2d9a..338de9e8a5 100644 --- a/backend/internal/service/openai_model_alias.go +++ b/backend/internal/service/openai_model_alias.go @@ -98,6 +98,18 @@ func normalizeKnownOpenAICodexModel(model string) string { } } +// isOpenAIGPT56Model 判断是否 GPT-5.6 系列模型;入参可为原始模型名 +// (含大小写/路径/后缀变体)或已归一化的基名,两者均能正确识别。 +func isOpenAIGPT56Model(model string) bool { + normalized := canonicalizeOpenAIModelAliasSpelling(model) + for _, prefix := range []string{"gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna"} { + if normalized == prefix || strings.HasPrefix(normalized, prefix+"-") { + return true + } + } + return false +} + func appendUsageBillingModelCandidate(candidates []string, seen map[string]struct{}, model string) []string { trimmed := strings.TrimSpace(model) if trimmed == "" {