# Implementation Plan: Project Management Enhancement ## Overview 本实现计划将项目管理增强功能分解为可执行的编码任务,包括项目完成状态管理、数据导出对话框和相关的后端 API 端点。 ## Tasks - [x] 1. 后端 API - 项目状态更新端点 - [x] 1.1 在 routers/project.py 中添加 PATCH 端点更新项目状态 - 验证项目完成率是否为 100% - 验证用户是否为管理员 - 更新项目状态为 "completed" - 记录完成时间戳 - _Requirements: 5.1, 5.2, 5.3, 5.4, 5.5_ - [x] 1.2 在 schemas/project.py 中添加 ProjectStatusUpdate schema - 定义状态更新请求模型 - _Requirements: 5.1_ - [x] 2. 后端 API - 导出端点集成 - [x] 2.1 在 routers/project.py 中添加 POST 端点启动导出 - 接收导出格式参数 - 调用现有的导出服务 - 返回导出任务 ID 和状态 - _Requirements: 6.1, 6.2_ - [x] 2.2 在 routers/project.py 中添加 GET 端点检查导出状态 - 返回导出进度和状态 - 返回下载 URL(如果完成) - _Requirements: 6.3, 6.4_ - [x] 3. Checkpoint - 验证后端 API - 确保所有测试通过,如有问题请询问用户 - [-] 4. 前端 - 项目完成对话框组件 - [x] 4.1 创建 ProjectCompletionDialog 组件 - 显示项目名称和完成状态 - 取消和确认按钮 - 处理状态更新 API 调用 - 显示加载和错误状态 - _Requirements: 2.2, 2.3_ - [x] 4.2 在 ProjectDetailModal 中集成 ProjectCompletionDialog - 添加"标记为已完成"按钮 - 根据完成率控制按钮可见性 - 处理完成后的刷新 - _Requirements: 1.1, 1.2, 2.1_ - [-] 5. 前端 - 数据导出对话框组件 - [x] 5.1 创建 DataExportDialog 组件 - 左侧导出格式下拉菜单 - 格式选项:JSON、CSV、COCO、YOLO - 格式描述显示 - 导出按钮和加载状态 - 进度指示器 - 成功/错误消息 - _Requirements: 4.1, 4.2, 4.3, 4.4, 4.5, 4.6_ - [x] 5.2 在 DataExportDialog 中实现导出逻辑 - 调用后端导出 API - 轮询导出状态 - 处理下载链接 - 错误处理 - _Requirements: 3.1, 3.2, 3.3, 3.4, 3.5_ - [x] 5.3 在 ProjectDetailModal 中集成 DataExportDialog - 添加"导出数据"按钮 - 打开导出对话框 - 处理导出完成后的刷新 - _Requirements: 2.1, 2.3, 2.4, 2.5_ - [x] 6. 前端 - 更新 ProjectDetailModal - [x] 6.1 在 ProjectDetailModal 中添加操作按钮区域 - 添加"标记为已完成"按钮(条件显示) - 添加"导出数据"按钮 - 按钮样式和布局 - _Requirements: 2.1, 2.2, 2.3_ - [x] 6.2 更新 ProjectDetailModal 状态管理 - 添加完成对话框状态 - 添加导出对话框状态 - 处理对话框打开/关闭 - _Requirements: 2.1_ - [x] 7. 前端 - 集成和测试 - [x] 7.1 集成所有组件 - 确保按钮正确显示 - 确保对话框正确打开/关闭 - 确保 API 调用正确 - _Requirements: 2.1, 2.2, 2.3, 2.4, 2.5_ - [ ]* 7.2 编写单元测试 - 测试按钮可见性逻辑 - 测试对话框行为 - 测试 API 调用 - _Requirements: 1.2, 2.2, 3.1_ - [ ]* 7.3 编写集成测试 - 测试完整的完成工作流 - 测试完整的导出工作流 - _Requirements: 1.1, 3.1_ - [ ] 8. 后端 - 属性测试 - [ ]* 8.1 编写项目完成状态属性测试 - 验证状态更新只在 100% 完成时成功 - 验证状态持久化 - _Requirements: 1.1, 1.3_ - [ ]* 8.2 编写导出格式验证属性测试 - 验证只接受有效格式 - 验证错误处理 - _Requirements: 3.1, 6.1_ - [ ]* 8.3 编写授权检查属性测试 - 验证只有管理员可以更新状态 - 验证非管理员获得 403 错误 - _Requirements: 5.5, 6.1_ - [ ] 9. Final Checkpoint - 确保所有测试通过,如有问题请询问用户 ## Notes - 任务按依赖顺序排列,先完成后端 API,再实现前端组件 - 导出功能复用现有的导出服务和 API - 所有代码遵循项目现有的编码规范 - 前端组件应使用 TypeScript 和 React Hooks - 后端 API 应遵循 FastAPI 最佳实践