From cf3aca6e3b76d7b9d9b680e8ae59a9268a67e6b7 Mon Sep 17 00:00:00 2001 From: xlplbo Date: Sat, 12 Sep 2026 16:28:04 +0800 Subject: [PATCH] =?UTF-8?q?fix(ui):=20=E6=8C=89=20OpenAI=20WS=20=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E6=98=BE=E7=A4=BA=E9=93=BE=E8=B7=AF=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/BulkEditAccountModal.vue | 18 ++++++++--------- .../components/account/CreateAccountModal.vue | 10 +++++----- .../components/account/EditAccountModal.vue | 10 +++++----- .../src/i18n/locales/en/admin/accounts.ts | 7 ++++--- .../src/i18n/locales/zh/admin/accounts.ts | 5 +++-- .../src/utils/__tests__/openaiWsMode.spec.ts | 18 ++++++++--------- frontend/src/utils/openaiWsMode.ts | 20 ++++++++++++++----- 7 files changed, 49 insertions(+), 39 deletions(-) diff --git a/frontend/src/components/account/BulkEditAccountModal.vue b/frontend/src/components/account/BulkEditAccountModal.vue index 6e751df816..f66fb85fda 100644 --- a/frontend/src/components/account/BulkEditAccountModal.vue +++ b/frontend/src/components/account/BulkEditAccountModal.vue @@ -873,8 +873,8 @@

{{ t('admin.accounts.openai.wsModeDesc') }}

-

- {{ t(openAIWSModeConcurrencyHintKey) }} +

+ {{ t(openAIWSModeHintKey) }}

- resolveOpenAIWSModeConcurrencyHintKey(openaiOAuthResponsesWebSocketV2Mode.value) +const openAIWSModeHintKey = computed(() => + resolveOpenAIWSModeHintKey(openaiOAuthResponsesWebSocketV2Mode.value) ) -const openAIAPIKeyWSModeConcurrencyHintKey = computed(() => - resolveOpenAIWSModeConcurrencyHintKey(openaiAPIKeyResponsesWebSocketV2Mode.value) +const openAIAPIKeyWSModeHintKey = computed(() => + resolveOpenAIWSModeHintKey(openaiAPIKeyResponsesWebSocketV2Mode.value) ) // Model mapping helpers diff --git a/frontend/src/components/account/CreateAccountModal.vue b/frontend/src/components/account/CreateAccountModal.vue index 8e2ca7dcb7..54a6b2331f 100644 --- a/frontend/src/components/account/CreateAccountModal.vue +++ b/frontend/src/components/account/CreateAccountModal.vue @@ -3132,8 +3132,8 @@

{{ t('admin.accounts.openai.wsModeDesc') }}

-

- {{ t(openAIWSModeConcurrencyHintKey) }} +

+ {{ t(openAIWSModeHintKey) }}

@@ -3975,7 +3975,7 @@ import { OPENAI_WS_MODE_PASSTHROUGH, OPENAI_WS_MODE_HTTP_BRIDGE, isOpenAIWSModeEnabled, - resolveOpenAIWSModeConcurrencyHintKey, + resolveOpenAIWSModeHintKey, type OpenAIWSMode } from '@/utils/openaiWsMode' import OAuthAuthorizationFlow from './OAuthAuthorizationFlow.vue' @@ -4653,8 +4653,8 @@ const openaiResponsesWebSocketV2Mode = computed({ } }) -const openAIWSModeConcurrencyHintKey = computed(() => - resolveOpenAIWSModeConcurrencyHintKey(openaiResponsesWebSocketV2Mode.value) +const openAIWSModeHintKey = computed(() => + resolveOpenAIWSModeHintKey(openaiResponsesWebSocketV2Mode.value) ) const isOpenAIModelRestrictionDisabled = computed(() => diff --git a/frontend/src/components/account/EditAccountModal.vue b/frontend/src/components/account/EditAccountModal.vue index dad0bfc9f4..0d3c235bea 100644 --- a/frontend/src/components/account/EditAccountModal.vue +++ b/frontend/src/components/account/EditAccountModal.vue @@ -1871,8 +1871,8 @@

{{ t('admin.accounts.openai.wsModeDesc') }}

-

- {{ t(openAIWSModeConcurrencyHintKey) }} +

+ {{ t(openAIWSModeHintKey) }}

@@ -3101,7 +3101,7 @@ import { OPENAI_WS_MODE_PASSTHROUGH, OPENAI_WS_MODE_HTTP_BRIDGE, isOpenAIWSModeEnabled, - resolveOpenAIWSModeConcurrencyHintKey, + resolveOpenAIWSModeHintKey, type OpenAIWSMode, resolveOpenAIWSModeFromExtra } from '@/utils/openaiWsMode' @@ -3588,8 +3588,8 @@ const openaiResponsesWebSocketV2Mode = computed({ openaiOAuthResponsesWebSocketV2Mode.value = mode } }) -const openAIWSModeConcurrencyHintKey = computed(() => - resolveOpenAIWSModeConcurrencyHintKey(openaiResponsesWebSocketV2Mode.value) +const openAIWSModeHintKey = computed(() => + resolveOpenAIWSModeHintKey(openaiResponsesWebSocketV2Mode.value) ) const codexImageToolOptions = computed { expect(isOpenAIWSModeEnabled(OPENAI_WS_MODE_HTTP_BRIDGE)).toBe(true) }) - it('resolves concurrency hint key by mode', () => { - expect(resolveOpenAIWSModeConcurrencyHintKey(OPENAI_WS_MODE_OFF)).toBe( - 'admin.accounts.openai.wsModeConcurrencyHint' + it('hides the off hint and resolves each active mode separately', () => { + expect(resolveOpenAIWSModeHintKey(OPENAI_WS_MODE_OFF)).toBeNull() + expect(resolveOpenAIWSModeHintKey(OPENAI_WS_MODE_CTX_POOL)).toBe( + 'admin.accounts.openai.wsModeCtxPoolHint' ) - expect(resolveOpenAIWSModeConcurrencyHintKey(OPENAI_WS_MODE_CTX_POOL)).toBe( - 'admin.accounts.openai.wsModeConcurrencyHint' - ) - expect(resolveOpenAIWSModeConcurrencyHintKey(OPENAI_WS_MODE_PASSTHROUGH)).toBe( + expect(resolveOpenAIWSModeHintKey(OPENAI_WS_MODE_PASSTHROUGH)).toBe( 'admin.accounts.openai.wsModePassthroughHint' ) - expect(resolveOpenAIWSModeConcurrencyHintKey(OPENAI_WS_MODE_HTTP_BRIDGE)).toBe( - 'admin.accounts.openai.wsModePassthroughHint' + expect(resolveOpenAIWSModeHintKey(OPENAI_WS_MODE_HTTP_BRIDGE)).toBe( + 'admin.accounts.openai.wsModeHttpBridgeHint' ) }) }) diff --git a/frontend/src/utils/openaiWsMode.ts b/frontend/src/utils/openaiWsMode.ts index 77872bc656..b806746731 100644 --- a/frontend/src/utils/openaiWsMode.ts +++ b/frontend/src/utils/openaiWsMode.ts @@ -44,13 +44,23 @@ export const isOpenAIWSModeEnabled = (mode: OpenAIWSMode): boolean => { return mode !== OPENAI_WS_MODE_OFF } -export const resolveOpenAIWSModeConcurrencyHintKey = ( +export const resolveOpenAIWSModeHintKey = ( mode: OpenAIWSMode -): 'admin.accounts.openai.wsModeConcurrencyHint' | 'admin.accounts.openai.wsModePassthroughHint' => { - if (mode === OPENAI_WS_MODE_PASSTHROUGH || mode === OPENAI_WS_MODE_HTTP_BRIDGE) { - return 'admin.accounts.openai.wsModePassthroughHint' +): + | 'admin.accounts.openai.wsModeCtxPoolHint' + | 'admin.accounts.openai.wsModePassthroughHint' + | 'admin.accounts.openai.wsModeHttpBridgeHint' + | null => { + switch (mode) { + case OPENAI_WS_MODE_CTX_POOL: + return 'admin.accounts.openai.wsModeCtxPoolHint' + case OPENAI_WS_MODE_PASSTHROUGH: + return 'admin.accounts.openai.wsModePassthroughHint' + case OPENAI_WS_MODE_HTTP_BRIDGE: + return 'admin.accounts.openai.wsModeHttpBridgeHint' + default: + return null } - return 'admin.accounts.openai.wsModeConcurrencyHint' } export const resolveOpenAIWSModeFromExtra = (