From 5dc0654426eaf8eda7dbb7006bf8f9273a5aa8de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Mon, 5 Oct 2026 13:50:16 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84(AGC=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=96=87=E6=A1=88):=20=E5=90=88=E5=B9=B6=E5=8E=9F=E5=9B=A0?= =?UTF-8?q?=E5=88=B0=E6=96=87=E6=A1=88=E7=9A=84=E9=87=8D=E5=A4=8D=E6=98=A0?= =?UTF-8?q?=E5=B0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 两个 helper 原先各维护一份 reason switch,新增 reason 时容易漏改一处 - 抽成单个 REASON_COPY 表,unknown 作为未知/缺失原因的兜底,两个 helper 共用 --- .../modelAvailabilityCopy.ts | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/apps/ai-game-creator-shell/src/features/project-workspace/modelAvailabilityCopy.ts b/apps/ai-game-creator-shell/src/features/project-workspace/modelAvailabilityCopy.ts index c37cdd28a..b8135de01 100644 --- a/apps/ai-game-creator-shell/src/features/project-workspace/modelAvailabilityCopy.ts +++ b/apps/ai-game-creator-shell/src/features/project-workspace/modelAvailabilityCopy.ts @@ -1,21 +1,34 @@ import type { ClientLlmModelUnavailableReason } from '../../services/llmModelCatalog'; /** - * 锁定项 hover / 键盘 focus 的原因文案。 + * 原因 → 文案的统一映射。 * - * `unknown` 是契约的前向兜底,后端将来新增 `reason` 时旧客户端仍给出可读文案。 + * `unknown` 是契约的前向兜底,后端将来新增 `reason` 时旧客户端仍给出可读文案;两个 helper + * 共用本表,避免各自维护一份 switch 后漂移。 */ +const REASON_COPY: Record< + ClientLlmModelUnavailableReason, + { label: string; fallback: string } +> = { + plan_required: { + label: '订阅计划不支持', + fallback: '所选模型需要更高订阅计划,已切换为默认模型', + }, + disabled: { + label: '该模型已下线', + fallback: '所选模型已下线,已切换为默认模型', + }, + unknown: { + label: '暂不可用', + fallback: '所选模型已不可用,已切回默认模型', + }, +}; + +/** 锁定项 hover / 键盘 focus 的原因文案。 */ export function unavailableModelReasonLabel( reason: ClientLlmModelUnavailableReason, ): string { - switch (reason) { - case 'plan_required': - return '订阅计划不支持'; - case 'disabled': - return '该模型已下线'; - default: - return '暂不可用'; - } + return (REASON_COPY[reason] ?? REASON_COPY.unknown).label; } /** @@ -27,12 +40,8 @@ export function unavailableModelReasonLabel( export function unavailableModelFallbackNotice( unavailableReason: ClientLlmModelUnavailableReason | undefined, ): string { - switch (unavailableReason) { - case 'plan_required': - return '所选模型需要更高订阅计划,已切换为默认模型'; - case 'disabled': - return '所选模型已下线,已切换为默认模型'; - default: - return '所选模型已不可用,已切回默认模型'; + if (!unavailableReason) { + return REASON_COPY.unknown.fallback; } + return (REASON_COPY[unavailableReason] ?? REASON_COPY.unknown).fallback; }