diff --git a/apps/web/app/versions/[id]/page.tsx b/apps/web/app/versions/[id]/page.tsx
index 0a26db7..b8182cb 100644
--- a/apps/web/app/versions/[id]/page.tsx
+++ b/apps/web/app/versions/[id]/page.tsx
@@ -54,9 +54,9 @@ export default function VersionDetailPage() {
const { requirements, fetchRequirements, updateRequirement } = useRequirementStore();
const { records, fetchRecords } = useOvertimeStore();
const { plans, fetchPlans, createPlan, updatePlan, completePlan, deletePlan } = useVersionPlanStore();
- const { tasks: devTasks, fetchTasks: fetchDevTasks } = useDevTaskStore();
- const { testCases, fetchTestCases } = useTestCaseStore();
- const { bugs, fetchBugs } = useBugStore();
+ const { tasks: devTasks, fetchTasks: fetchDevTasks, deleteTask: deleteDevTask } = useDevTaskStore();
+ const { testCases, fetchTestCases, deleteTestCase } = useTestCaseStore();
+ const { bugs, fetchBugs, deleteBug } = useBugStore();
const user = useAuthStore((s) => s.user);
const [activeTab, setActiveTab] = useState('overview');
@@ -117,9 +117,17 @@ export default function VersionDetailPage() {
const buttons: { label: string; action: () => void; danger?: boolean }[] = [];
if (version.status === 'planned') {
buttons.push({ label: '删除', action: () => {
- if (confirm('确认删除该版本?关联的需求会回到需求池。')) {
+ if (confirm('确认删除该版本?关联的需求会回到需求池,版本下的计划、开发任务、测试用例、Bug 将被清除。')) {
// 释放关联需求
requirements.filter((r) => r.versionId === version.id).forEach((r) => updateRequirement(r.id, { versionId: undefined, addedToVersionBy: undefined }));
+ // 清理计划任务
+ plans.filter((p) => p.versionId === version.id).forEach((p) => deletePlan(p.id));
+ // 清理开发任务
+ const versionReqIds = new Set(requirements.filter((r) => r.versionId === version.id).map((r) => r.id));
+ devTasks.filter((t) => versionReqIds.has(t.requirementId)).forEach((t) => deleteDevTask(t.id));
+ // 清理测试用例和Bug
+ testCases.filter((c) => c.versionId === version.id).forEach((c) => deleteTestCase(c.id));
+ bugs.filter((b) => b.versionId === version.id).forEach((b) => deleteBug(b.id));
deleteVersion(version.productId, version.id);
router.push('/versions');
}
@@ -152,7 +160,15 @@ export default function VersionDetailPage() {