feat: 版本总耗时实际数据 + 参与人员管理 + 链接聚合 + 权限控制

1. 版本总耗时改用实际数据:
   - 开始日期取所有阶段最早 actualStartAt
   - 预计截止显示 expectedReleaseDate
   - 实际截止取所有阶段最晚完成时间
   - 逾期天数 = 实际截止 - 预计截止(红色标签)

2. 参与人员管理:
   - 新增"设置"按钮打开管理弹窗
   - 可选角色(产品/UI/前端/后端/测试)+ 人员
   - 添加/删除成员,保存到 version.members

3. 相关链接从 plans 成果聚合:
   - 按调研/产品方案/UI设计分组
   - 展示所有已完成 plan 的 resultUrl + resultFileName
   - 不再是固定3个链接

4. 权限控制:
   - 版本详情页校验当前用户是否在 members 中
   - 版本列表页只显示当前用户参与的版本
   - members 为空时所有人可见(兼容旧数据)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Script Generator
2026-06-15 14:23:11 +08:00
parent 101a6be9b7
commit c8d2bfdd51
2 changed files with 227 additions and 40 deletions

View File

@@ -8,6 +8,7 @@ import { useRequirementStore } from '@/stores/useRequirementStore';
import { useVersionPlanStore } from '@/stores/useVersionPlanStore';
import { useDevTaskStore } from '@/stores/useDevTaskStore';
import { useTestCaseStore } from '@/stores/useTestCaseStore';
import { useAuthStore } from '@/stores/useAuthStore';
import { flattenVersions, flattenProjects } from '@/lib/derive';
import type { VersionWithContext } from '@/lib/derive';
import { VersionStatus, VERSION_STATUS_LABEL, VERSION_STATUS_DOT, VERSION_STATUS_BG, getVersionDisplayStatus } from '@/lib/version-status';
@@ -125,7 +126,15 @@ export default function VersionsPage() {
const { testCases, fetchTestCases } = useTestCaseStore();
useEffect(() => { fetchTestCases(); }, [fetchTestCases]);
const allVersions = useMemo(() => flattenVersions(overview), [overview]);
const user = useAuthStore((s) => s.user);
const currentUserName = user?.name || '';
const allVersionsRaw = useMemo(() => flattenVersions(overview), [overview]);
// 只显示当前用户参与的版本members为空时所有人可见
const allVersions = useMemo(() => allVersionsRaw.filter((v) => {
if (!v.members || v.members.length === 0) return true;
return v.members.some((m) => m.name === currentUserName);
}), [allVersionsRaw, currentUserName]);
const allProjects = useMemo(() => flattenProjects(overview), [overview]);
// Compute overall progress per version from actual data