优化: 审批弹窗全局化与体验打磨
This commit is contained in:
+11
-3
@@ -62,21 +62,29 @@ const ASSESSMENT_CLASS_MAP: Record<string, string> = {
|
||||
|
||||
/**
|
||||
* recommendation 字符串 → CSS badge 类。
|
||||
* 未知值回退到 'conditional'(中性,对齐原两处实现)。
|
||||
* 未知值(或非字符串/空)回退到 'conditional'(中性,对齐原两处实现)。
|
||||
*
|
||||
* WK-15:旧实现对 undefined/null 调 `.toLowerCase()` 崩。对抗评估 ai_analysis
|
||||
* 可能未生成 recommendation 字段(老数据/降级),调用方传值时也可能漏判空。
|
||||
* 这里在源头做防御:非字符串/空串统一回退 conditional。
|
||||
*/
|
||||
export function assessmentClass(recommendation: string): string {
|
||||
export function assessmentClass(recommendation: string | null | undefined): string {
|
||||
if (typeof recommendation !== 'string' || recommendation.length === 0) return 'conditional'
|
||||
return ASSESSMENT_CLASS_MAP[recommendation.toLowerCase()] ?? 'conditional'
|
||||
}
|
||||
|
||||
/**
|
||||
* recommendation 字符串 → i18n 本地化标签。
|
||||
* 命中 ideas.assessment.{recommendation} 则返回译文,否则回退到原始 recommendation。
|
||||
*
|
||||
* WK-15:非字符串/空 → 回退占位符 '—'(避免模板渲染 undefined),与详情页其他空值一致。
|
||||
* @param t vue-i18n 的 t 函数(useI18n().t),由调用方注入避免本模块耦合 i18n 实例
|
||||
*/
|
||||
export function assessmentLabel(
|
||||
t: ComposerTranslation,
|
||||
recommendation: string,
|
||||
recommendation: string | null | undefined,
|
||||
): string {
|
||||
if (typeof recommendation !== 'string' || recommendation.length === 0) return '—'
|
||||
const key = `ideas.assessment.${recommendation}`
|
||||
const translated = t(key)
|
||||
return translated === key ? recommendation : translated
|
||||
|
||||
Reference in New Issue
Block a user