优化: 前端DRY收敛与命名对齐

审批等待格式化与阈值沉 utils/time 正典
相对时间阶梯三套收敛 formatRelative 参数化
灵感状态表沉 constants,透传通道退役
aggText/clearOwn 等命名对齐,IPC 参数名统一 conversation_id
This commit is contained in:
lxy
2026-10-01 19:35:20 +08:00
parent 6ef15a0940
commit 0560137840
16 changed files with 111 additions and 97 deletions
+20
View File
@@ -4,6 +4,8 @@
//! 根治此前三套状态映射互相矛盾、任务文案两处不一致的问题。
//! 项目进度不在此处(按 stage 拍百分比已废弃),由任务完成率计算,见 store.projectTaskProgress。
import type { IdeaStatus } from '@/api/types'
// ── 项目状态 ──
// 值为 i18n key,实际文案走 $t('projects.status.<key>')(见 src/i18n/{zh-CN,en}/projects.ts)
@@ -221,3 +223,21 @@ export function priorityLabel(p: number): string {
export function priorityClass(p: number): string {
return PRIORITY_CLASSES[p] ?? 'priority-low'
}
// ── 灵感状态 ──
// 值为 i18n key,实际文案走 $t(见 src/i18n/{zh-CN,en}/ideas.ts)。
// 单一数据源:Ideas.vue 列表 badge/确认文案 与 IdeaDetail.vue 详情 badge/状态下拉共用
// (原 Ideas.vue 自持 + 经 props 透传 IdeaDetail 双写,已收敛至此;archived 无菜单入口不入表)。
export const IDEA_STATUS_OPTIONS: { value: IdeaStatus; labelKey: string }[] = [
{ value: 'draft', labelKey: 'ideas.status.draft' },
{ value: 'pending_review', labelKey: 'ideas.status.pending_review' },
{ value: 'approved', labelKey: 'ideas.status.approved' },
{ value: 'promoted', labelKey: 'ideas.status.promoted' },
{ value: 'rejected', labelKey: 'ideas.status.rejected' },
]
/** 任意 status → 对应 i18n key;未知状态(含 archived)回退到原值显示 */
export function ideaStatusLabelKey(status: IdeaStatus): string {
return IDEA_STATUS_OPTIONS.find(s => s.value === status)?.labelKey ?? status
}