From 6681aee98db346214c06ee03ef28b5d5f2c5d13b Mon Sep 17 00:00:00 2001 From: shaw Date: Thu, 7 May 2026 15:11:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=B4=A6=E5=8F=B7=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E7=99=BD=E5=90=8D=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/service/content_moderation.go | 2 +- .../internal/service/content_moderation_test.go | 14 ++++++++++---- .../__tests__/useModelWhitelist.spec.ts | 1 + frontend/src/composables/useModelWhitelist.ts | 4 ++-- frontend/src/i18n/locales/en.ts | 2 +- frontend/src/i18n/locales/zh.ts | 2 +- 6 files changed, 16 insertions(+), 9 deletions(-) diff --git a/backend/internal/service/content_moderation.go b/backend/internal/service/content_moderation.go index 7cda8293..144222c2 100644 --- a/backend/internal/service/content_moderation.go +++ b/backend/internal/service/content_moderation.go @@ -267,7 +267,7 @@ func (in *ContentModerationInput) Normalize() { return } in.Text = trimRunes(normalizeContentModerationText(in.Text), maxModerationInputRunes) - in.Images = limitContentModerationImages(normalizeModerationImages(in.Images)) + in.Images = normalizeModerationImages(in.Images) } func (in ContentModerationInput) IsEmpty() bool { diff --git a/backend/internal/service/content_moderation_test.go b/backend/internal/service/content_moderation_test.go index 23dfcdf1..cef5127e 100644 --- a/backend/internal/service/content_moderation_test.go +++ b/backend/internal/service/content_moderation_test.go @@ -451,7 +451,7 @@ func TestExtractContentModerationInput_OpenAIImagesIncludesPromptAndImages(t *te require.Equal(t, []string{"https://example.com/source.png", "data:image/png;base64,aGVsbG8="}, input.Images) } -func TestContentModerationInput_NormalizeRandomSamplesOneImageForModerationAPI(t *testing.T) { +func TestContentModerationInput_NormalizeKeepsImagesAndModerationInputSamplesOneImage(t *testing.T) { images := []string{ "data:image/png;base64,Zmlyc3Q=", "data:image/png;base64,c2Vjb25k", @@ -462,9 +462,15 @@ func TestContentModerationInput_NormalizeRandomSamplesOneImageForModerationAPI(t } input.Normalize() - require.Len(t, input.Images, 1) - require.Contains(t, images, input.Images[0]) - require.Len(t, input.ModerationInput(), 2) + require.Equal(t, images, input.Images) + + parts, ok := input.ModerationInput().([]moderationAPIInputPart) + require.True(t, ok) + require.Len(t, parts, 2) + require.Equal(t, "text", parts[0].Type) + require.Equal(t, "image_url", parts[1].Type) + require.NotNil(t, parts[1].ImageURL) + require.Contains(t, images, parts[1].ImageURL.URL) } func TestBuildModerationTestInputRejectsMultipleImages(t *testing.T) { diff --git a/frontend/src/composables/__tests__/useModelWhitelist.spec.ts b/frontend/src/composables/__tests__/useModelWhitelist.spec.ts index d35e3b12..29ec513e 100644 --- a/frontend/src/composables/__tests__/useModelWhitelist.spec.ts +++ b/frontend/src/composables/__tests__/useModelWhitelist.spec.ts @@ -13,6 +13,7 @@ describe('useModelWhitelist', () => { expect(models).toContain('gpt-5.4') expect(models).toContain('gpt-5.4-mini') expect(models).toContain('gpt-5.4-2026-03-05') + expect(models).toContain('codex-auto-review') }) it('openai 模型列表不再暴露已下线的 ChatGPT 登录 Codex 模型', () => { diff --git a/frontend/src/composables/useModelWhitelist.ts b/frontend/src/composables/useModelWhitelist.ts index c511b451..4d9b7fe2 100644 --- a/frontend/src/composables/useModelWhitelist.ts +++ b/frontend/src/composables/useModelWhitelist.ts @@ -11,8 +11,8 @@ const openaiModels = [ 'gpt-5.5', // GPT-5.4 系列 'gpt-5.4', 'gpt-5.4-mini', 'gpt-5.4-2026-03-05', - // GPT-5.3 系列 - 'gpt-5.3-codex', 'gpt-5.3-codex-spark', + // GPT-5.3 / Codex 系列 + 'gpt-5.3-codex', 'gpt-5.3-codex-spark', 'codex-auto-review', 'gpt-4o-audio-preview', 'gpt-4o-realtime-preview', // GPT Image 系列 'gpt-image-1', 'gpt-image-1.5', 'gpt-image-2' diff --git a/frontend/src/i18n/locales/en.ts b/frontend/src/i18n/locales/en.ts index d4a3251f..ef69cefb 100644 --- a/frontend/src/i18n/locales/en.ts +++ b/frontend/src/i18n/locales/en.ts @@ -3210,7 +3210,7 @@ export default { targetNoWildcard: 'Target model cannot contain wildcard *', searchModels: 'Search models...', noMatchingModels: 'No matching models', - fillRelatedModels: 'Fill related models', + fillRelatedModels: 'Sync latest supported models', clearAllModels: 'Clear all models', customModelName: 'Custom model name', enterCustomModelName: 'Enter custom model name', diff --git a/frontend/src/i18n/locales/zh.ts b/frontend/src/i18n/locales/zh.ts index 8381cd86..7bac08c9 100644 --- a/frontend/src/i18n/locales/zh.ts +++ b/frontend/src/i18n/locales/zh.ts @@ -3354,7 +3354,7 @@ export default { targetNoWildcard: '目标模型不能包含通配符 *', searchModels: '搜索模型...', noMatchingModels: '没有匹配的模型', - fillRelatedModels: '填入相关模型', + fillRelatedModels: '同步最新支持模型', clearAllModels: '清除所有模型', customModelName: '自定义模型名称', enterCustomModelName: '输入自定义模型名称',