重构(AGC模型文案): 合并原因到文案的重复映射
- 两个 helper 原先各维护一份 reason switch,新增 reason 时容易漏改一处 - 抽成单个 REASON_COPY 表,unknown 作为未知/缺失原因的兜底,两个 helper 共用
This commit is contained in:
+26
-17
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user