修复: 前端UX一致性(Dashboard状态映射/状态徽章全局/Knowledge下一条与失败反馈/Ideas筛选与错误条/ConfirmDialog安全/快捷菜单状态机/分页越界) + 后端校验(queue/count-list一致/软删拒改/父聚合/promote CAS/MCP状态机收口/update白名单剔除id/created_at) + 销账
This commit is contained in:
@@ -23,10 +23,17 @@ export const PROJECT_STATUS_LABELS: Record<string, string> = {
|
||||
}
|
||||
|
||||
/** 项目状态 → 卡片 badge 样式 class */
|
||||
// WK-1:对齐 7 态真实生命周期(planning/in_progress/testing/releasing/completed/paused/cancelled)。
|
||||
// 类名对齐 ProjectCard.vue scoped 的 stage-* 色系(design/coding/testing/release),paused/cancelled 走新增
|
||||
// stage-dim(置灰)。'active' 键删除:后端无此状态,老数据兜底走 stage-design(与 projectStageInfo 兜底一致)。
|
||||
export const PROJECT_STATUS_BADGE_CLASS: Record<string, string> = {
|
||||
planning: 'stage-design',
|
||||
active: 'stage-coding',
|
||||
in_progress: 'stage-coding',
|
||||
testing: 'stage-testing',
|
||||
releasing: 'stage-release',
|
||||
completed: 'stage-release',
|
||||
paused: 'stage-dim',
|
||||
cancelled: 'stage-dim',
|
||||
}
|
||||
|
||||
/** 项目状态 → 阶段/进度信息(详情页 pipeline + Dashboard 进度条共用) */
|
||||
@@ -39,10 +46,17 @@ export interface ProjectStageInfo {
|
||||
stage: string
|
||||
}
|
||||
|
||||
// WK-1:对齐 7 态。stage 值决定 Dashboard dot/chip/fill 颜色档(planning/coding/testing/release/paused/cancelled),
|
||||
// 需与 ActiveProjectsPanel.vue 的 dot-*/chip-*/fill-* 类一一对应(paused 为该组件新增 dim 类)。
|
||||
// 'active' 键已删,老数据兜底走 projectStageInfo 默认 planning。
|
||||
export const PROJECT_STAGE_INFO: Record<string, ProjectStageInfo> = {
|
||||
planning: { stepIndex: 0, progress: 20, stage: 'planning' },
|
||||
active: { stepIndex: 2, progress: 55, stage: 'coding' },
|
||||
in_progress: { stepIndex: 2, progress: 55, stage: 'coding' },
|
||||
testing: { stepIndex: 3, progress: 80, stage: 'testing' },
|
||||
releasing: { stepIndex: 4, progress: 95, stage: 'release' },
|
||||
completed: { stepIndex: 4, progress: 100, stage: 'release' },
|
||||
paused: { stepIndex: 1, progress: 40, stage: 'paused' },
|
||||
cancelled: { stepIndex: 0, progress: 0, stage: 'cancelled' },
|
||||
}
|
||||
|
||||
export function projectStatusLabel(status: string): string {
|
||||
@@ -113,6 +127,19 @@ export function taskStatusClass(status: string): string {
|
||||
return TASK_STATUS_CLASS[mapLegacyStatus(status)] ?? 'status-todo'
|
||||
}
|
||||
|
||||
// WK-8:任务状态机合法流转目标(源状态 → 可达目标态,对齐 TaskDetail.vue ADVANCE_MAP 的 target 集)。
|
||||
// 列表快捷菜单据此过滤,避免直接置终态/非法跳转(done/cancelled 为终态,无推进目标);
|
||||
// 新建/手动改状态仍走后端 TaskStatus::is_valid 兜底校验。
|
||||
export const TASK_STATUS_TRANSITIONS: Record<string, string[]> = {
|
||||
todo: ['in_progress', 'cancelled'],
|
||||
in_progress: ['in_review', 'blocked', 'cancelled'],
|
||||
in_review: ['testing', 'in_progress', 'blocked', 'cancelled'],
|
||||
testing: ['done', 'in_review', 'blocked', 'cancelled'],
|
||||
blocked: ['in_progress', 'cancelled'],
|
||||
done: [],
|
||||
cancelled: [],
|
||||
}
|
||||
|
||||
// ── 任务优先级 ──
|
||||
|
||||
export const PRIORITY_LABELS: Record<number, string> = { 0: 'P0', 1: 'P1', 2: 'P2', 3: 'P3' }
|
||||
|
||||
Reference in New Issue
Block a user