diff --git a/apps/web/app/requirements/page.tsx b/apps/web/app/requirements/page.tsx index 3e84850..ec8f117 100644 --- a/apps/web/app/requirements/page.tsx +++ b/apps/web/app/requirements/page.tsx @@ -4,9 +4,11 @@ import { useEffect, useMemo, useState } from 'react'; import { Search, Plus, Lightbulb, ArrowUp, ArrowDown } from 'lucide-react'; import { useRequirementStore } from '@/stores/useRequirementStore'; import { useProductStore } from '@/stores/useProductStore'; +import { useDevTaskStore } from '@/stores/useDevTaskStore'; import { flattenProjects, flattenVersions } from '@/lib/derive'; import { REQ_STATUS_LABEL, REQ_STATUS_COLOR, SOURCE_TYPE_LABEL } from '@/lib/requirement'; import type { Requirement, RequirementStatus, SourceType } from '@/lib/requirement'; +import { deriveReqDevStatus, canEditRequirement, REQ_DEV_STATUS_LABEL, REQ_DEV_STATUS_COLOR } from '@/lib/linkage-engine'; import { Pagination, usePagination } from '@/components/Pagination'; import { RequirementModal } from '@/components/requirement/RequirementModal'; import { RequirementDetail } from '@/components/requirement/RequirementDetail'; @@ -42,6 +44,7 @@ export default function RequirementsPage() { addPlatform, updatePlatform, deletePlatform, } = useRequirementStore(); const { overview, fetchOverview } = useProductStore(); + const { tasks: devTasks, fetchTasks: fetchDevTasks } = useDevTaskStore(); const allProjects = useMemo(() => flattenProjects(overview), [overview]); const allVersions = useMemo(() => flattenVersions(overview), [overview]); @@ -62,6 +65,7 @@ export default function RequirementsPage() { useEffect(() => { fetchOverview(); }, [fetchOverview]); useEffect(() => { fetchRequirements(); }, [fetchRequirements]); + useEffect(() => { fetchDevTasks(); }, [fetchDevTasks]); // Resolve version name from overview const resolveVersionName = (versionId?: string): string => { @@ -249,7 +253,7 @@ export default function RequirementsPage() { 状态 优先级 所属版本 - 产品负责人 + 开发状态 录入人员 - {/* 产品负责人 */} - - {req.productOwner || '-'} + {/* 开发状态 */} + + {(() => { + const devStatus = deriveReqDevStatus(req.id, devTasks); + return ( + + {REQ_DEV_STATUS_LABEL[devStatus]} + + ); + })()} {/* 录入人员 */} @@ -332,8 +343,8 @@ export default function RequirementsPage() { {/* 操作 */} e.stopPropagation()}>
- {/* 编辑:待评审/已采纳/已规划 */} - {(['pending_review', 'adopted', 'planned'] as const).includes(req.status as any) && ( + {/* 编辑:待评审/已采纳/已规划,且开发中不可编辑 */} + {(['pending_review', 'adopted', 'planned'] as const).includes(req.status as any) && canEditRequirement(req.id, devTasks) && (