fix(openai): 移除已下线 Codex 模型并修复归一化兜底副作用

- backend: 删除 gpt-5 / 5.1 / 5.1-codex / 5.1-codex-max / 5.1-codex-mini / 5.2-codex / 5.4-nano 的内置映射与 DefaultModels 条目
- backend: normalizeCodexModel 默认兜底由 gpt-5.1 改为 gpt-5.4,gpt-5.3-codex-spark 独立保留映射
- backend: 修复 isOpenAIGPT54Model 与 shouldAutoInjectPromptCacheKeyForCompat 对 claude / gpt-4o 的误判(之前依赖 gpt-5.1 作为非 GPT 族的隐式 sentinel,改后需要显式前缀守卫)
- backend: 清理 billing_service 中已不可达的 fallback 价格与 switch 分支
- frontend: 从白名单、OpenCode 配置、预设映射中移除已下线模型
- 同步更新所有相关单测

Refs: #1758, parallels upstream #1759 but adds downstream guard fixes
This commit is contained in:
erio
2026-04-20 22:01:09 +08:00
parent 23def40bc5
commit bbc4aed3d9
11 changed files with 84 additions and 265 deletions

View File

@@ -12,10 +12,20 @@ describe('useModelWhitelist', () => {
expect(models).toContain('gpt-5.4')
expect(models).toContain('gpt-5.4-mini')
expect(models).toContain('gpt-5.4-nano')
expect(models).toContain('gpt-5.4-2026-03-05')
})
it('openai 模型列表不再暴露已下线的 ChatGPT 登录 Codex 模型', () => {
const models = getModelsByPlatform('openai')
expect(models).not.toContain('gpt-5')
expect(models).not.toContain('gpt-5.1')
expect(models).not.toContain('gpt-5.1-codex')
expect(models).not.toContain('gpt-5.1-codex-max')
expect(models).not.toContain('gpt-5.1-codex-mini')
expect(models).not.toContain('gpt-5.2-codex')
})
it('antigravity 模型列表包含图片模型兼容项', () => {
const models = getModelsByPlatform('antigravity')
@@ -55,12 +65,11 @@ describe('useModelWhitelist', () => {
})
})
it('whitelist keeps GPT-5.4 mini and nano exact mappings', () => {
const mapping = buildModelMappingObject('whitelist', ['gpt-5.4-mini', 'gpt-5.4-nano'], [])
it('whitelist keeps GPT-5.4 mini exact mappings', () => {
const mapping = buildModelMappingObject('whitelist', ['gpt-5.4-mini'], [])
expect(mapping).toEqual({
'gpt-5.4-mini': 'gpt-5.4-mini',
'gpt-5.4-nano': 'gpt-5.4-nano'
'gpt-5.4-mini': 'gpt-5.4-mini'
})
})
})