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) && (
|