diff --git a/apps/web/app/versions/[id]/page.tsx b/apps/web/app/versions/[id]/page.tsx index fff74bd..07dde5e 100644 --- a/apps/web/app/versions/[id]/page.tsx +++ b/apps/web/app/versions/[id]/page.tsx @@ -727,6 +727,7 @@ export default function VersionDetailPage() { versionId={version.id} projectId={version.projectId} requirements={requirements} + devTasks={devTasks} currentUserName={user?.name ?? ''} onLink={(ids, addedBy) => { ids.forEach((id) => updateRequirement(id, { versionId: version.id, addedToVersionBy: addedBy })); diff --git a/apps/web/components/version/VersionRequirementsTab.tsx b/apps/web/components/version/VersionRequirementsTab.tsx index b1041f1..557455c 100644 --- a/apps/web/components/version/VersionRequirementsTab.tsx +++ b/apps/web/components/version/VersionRequirementsTab.tsx @@ -3,18 +3,21 @@ import { useState } from 'react'; import { Plus, X, Search } from 'lucide-react'; import type { Requirement } from '@/lib/requirement'; +import type { DevTask } from '@/lib/dev-task'; import { REQ_STATUS_LABEL, REQ_STATUS_COLOR } from '@/lib/requirement'; +import { deriveReqDevStatus, canEditRequirement, REQ_DEV_STATUS_LABEL, REQ_DEV_STATUS_COLOR } from '@/lib/linkage-engine'; interface Props { versionId: string; projectId: string; requirements: Requirement[]; + devTasks: DevTask[]; onLink: (reqIds: string[], addedBy: string) => void; onUnlink: (reqId: string) => void; currentUserName: string; } -export function VersionRequirementsTab({ versionId, projectId, requirements, onLink, onUnlink, currentUserName }: Props) { +export function VersionRequirementsTab({ versionId, projectId, requirements, devTasks, onLink, onUnlink, currentUserName }: Props) { const [showAddModal, setShowAddModal] = useState(false); const linkedReqs = requirements.filter((r) => r.versionId === versionId); const availableReqs = requirements.filter((r) => r.projectId === projectId && !r.versionId && r.status === 'adopted'); @@ -40,29 +43,41 @@ export function VersionRequirementsTab({ versionId, projectId, requirements, onL 编号 需求概述 - 描述 状态 + 开发状态 添加人 操作 - {linkedReqs.map((req) => ( - - {req.code} - {req.title} - {req.description || '-'} - - - {REQ_STATUS_LABEL[req.status]} - - - {req.addedToVersionBy || '-'} - - - - - ))} + {linkedReqs.map((req) => { + const devStatus = deriveReqDevStatus(req.id, devTasks); + const isDeveloping = !canEditRequirement(req.id, devTasks); + return ( + + {req.code} + {req.title} + + + {REQ_STATUS_LABEL[req.status]} + + + + + {REQ_DEV_STATUS_LABEL[devStatus]} + + + {req.addedToVersionBy || '系统添加'} + + {isDeveloping ? ( + 开发中 + ) : ( + + )} + + + ); + })}