feat: 计划任务清单+进度联动+与我相关工作台

- 计划新增任务清单:调研支持任务CRUD,进度=完成数/总数
- 产品方案/UI:通过关联需求勾选进度,全部完成提示提交
- 版本胶囊条动态进度:调研/产品方案/UI 阶段独立计算
- 版本状态显示具体阶段名(调研中/产品设计中/UI设计中)
- 计划开始日期≤今天自动进入"进行中",版本状态联动
- 与我相关重写为左右布局:左侧分组导航,右侧任务/需求勾选
- 计划支持超期原因校验(结束日期超版本截止)
- 修复列表overflow裁剪问题、计划耗时当天至少1天

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Script Generator
2026-06-11 15:43:09 +08:00
parent 2acc9aeaa9
commit 8bc23fbf3d
7 changed files with 613 additions and 52 deletions

View File

@@ -7,7 +7,7 @@ import { useProductStore } from '@/stores/useProductStore';
import { useRequirementStore } from '@/stores/useRequirementStore';
import { flattenVersions, flattenProjects } from '@/lib/derive';
import type { VersionWithContext } from '@/lib/derive';
import { VersionStatus, VERSION_STATUS_LABEL, VERSION_STATUS_DOT } from '@/lib/version-status';
import { VersionStatus, VERSION_STATUS_LABEL, VERSION_STATUS_DOT, getVersionDisplayStatus } from '@/lib/version-status';
import { STAGES } from '@/lib/stage';
import { ROLE_LABEL } from '@/lib/stage';
import { calcOverallProgress } from '@/lib/risk';
@@ -76,15 +76,7 @@ function sortVersions(versions: VersionWithContext[]): VersionWithContext[] {
}
function getStageLabel(version: VersionWithContext): string {
if (version.status === 'planned') return '规划中';
if (version.status === 'released') return '已发布';
if (version.status === 'paused') return '已暂停';
if (version.status === 'closed') return '已关闭';
if (version.currentStage) {
const stage = STAGES.find((s) => s.key === version.currentStage);
return stage?.label ?? '-';
}
return '-';
return getVersionDisplayStatus(version.status as VersionStatus, version.currentStage);
}
const STAGE_ROLE_MAP: Record<string, string[]> = {