# Implementation Plan: 任务分配与模板管理 ## Overview 本实现计划将任务分配与模板管理功能分解为可执行的开发任务。任务按照从后端 API 到前端组件的顺序组织,确保每一步都可以独立测试和验证。 ## Tasks - [x] 1. 后端 - 用户管理 API 扩展 - [x] 1.1 创建用户列表和统计 API - 创建 `backend/routers/user.py` 路由文件 - 实现 GET /api/users 端点(管理员权限) - 实现 GET /api/users/{id}/stats 端点 - 实现 GET /api/users/annotators 端点(获取可分配用户) - 添加用户任务统计查询逻辑 - _Requirements: 1.1, 1.2, 1.3, 1.4_ - [ ]* 1.2 编写 Property 1 的属性测试 - **Property 1: 用户列表筛选正确性** - **Validates: Requirements 1.2, 1.3** - 测试角色筛选和关键词搜索的正确性 - [x] 2. 后端 - 任务分配 API - [x] 2.1 扩展任务路由支持分配功能 - 在 `backend/routers/task.py` 添加分配端点 - 实现 PUT /api/tasks/{id}/assign 端点 - 实现 POST /api/tasks/batch-assign 端点 - 实现 GET /api/tasks/my-tasks 端点(当前用户任务) - 添加分配记录到数据库 - _Requirements: 2.3, 2.4, 2.5, 2.6, 3.1_ - [ ]* 2.2 编写 Property 2 的属性测试 - **Property 2: 任务分配正确性** - **Validates: Requirements 2.3, 2.4** - 测试分配后 assigned_to 字段正确更新 - [ ]* 2.3 编写 Property 3 的属性测试 - **Property 3: 批量分配平均性** - **Validates: Requirements 2.6** - 测试平均分配模式下任务分配的均匀性 - [ ]* 2.4 编写 Property 4 的属性测试 - **Property 4: 标注人员任务可见性** - **Validates: Requirements 3.1, 3.2** - 测试标注人员只能看到分配给自己的任务 - [x] 3. 后端 - 模板和配置验证 API - [x] 3.1 创建模板 API - 创建 `backend/routers/template.py` 路由文件 - 实现 GET /api/templates 端点 - 实现 GET /api/templates/{id} 端点 - 实现 GET /api/templates/categories 端点 - 实现 POST /api/templates/validate 端点(XML 验证) - 创建预设模板数据 - _Requirements: 4.1, 4.2, 4.3, 5.3, 5.4_ - [ ]* 3.2 编写 Property 7 的属性测试 - **Property 7: XML 配置验证** - **Validates: Requirements 5.3, 5.4** - 测试 XML 验证的正确性 - [x] 4. 后端 - 统计 API - [x] 4.1 创建统计 API - 创建 `backend/routers/statistics.py` 路由文件 - 实现 GET /api/projects/{id}/statistics 端点 - 实现项目级统计计算逻辑 - 实现用户级统计计算逻辑 - _Requirements: 9.1, 9.2, 9.3, 9.7_ - [ ]* 4.2 编写 Property 12 的属性测试 - **Property 12: 统计数据准确性** - **Validates: Requirements 9.2, 9.3, 9.6, 9.7** - 测试统计数据的准确性 - [x] 5. 后端 - 数据导出 API - [x] 5.1 创建导出 API - 创建 `backend/routers/export.py` 路由文件 - 创建 `backend/services/export_service.py` 服务文件 - 实现 POST /api/projects/{id}/export 端点 - 实现 JSON 格式导出 - 实现 CSV 格式导出 - 实现 COCO 格式导出 - 实现 YOLO 格式导出 - 创建 export_jobs 数据表 - _Requirements: 8.1, 8.2, 8.3, 8.4, 8.5_ - [ ]* 5.2 编写 Property 11 的属性测试 - **Property 11: 数据导出完整性** - **Validates: Requirements 8.3, 8.4, 8.5** - 测试导出数据的完整性和格式正确性 - [x] 6. Checkpoint - 后端 API 完成 - 确保所有 API 端点正常工作 - 确保所有测试通过 - 询问用户是否有问题 - [x] 7. 前端 - 状态管理扩展 - 创建 `atoms/user-management-atoms.ts` - 创建 `atoms/template-atoms.ts` - 创建 `atoms/config-editor-atoms.ts` - 创建 `atoms/statistics-atoms.ts` - 创建 `atoms/export-atoms.ts` - _Requirements: 4.3_ - [x] 8. 前端 - API 服务扩展 - 在 `services/api.ts` 添加用户管理 API 函数 - 添加任务分配 API 函数 - 添加模板 API 函数 - 添加统计 API 函数 - 添加导出 API 函数 - _Requirements: 10.1_ - [x] 9. 前端 - 用户管理界面 - [x] 9.1 创建 UserManagementView 组件 - 创建 `views/user-management-view/` 目录 - 实现用户列表展示(DataTable) - 实现角色筛选功能 - 实现用户搜索功能 - 实现任务统计显示 - _Requirements: 1.1, 1.2, 1.3, 1.4_ - [x] 9.2 添加用户管理路由 - 在 App.tsx 添加 /users 路由 - 在侧边栏添加用户管理菜单项(仅管理员可见) - _Requirements: 1.1_ - [x] 10. 前端 - 任务分配功能 - [x] 10.1 创建 TaskAssignmentDialog 组件 - 创建 `components/task-assignment-dialog/` 目录 - 实现用户选择列表 - 实现当前工作量显示 - 实现单个任务分配 - 实现批量分配功能 - 实现平均分配选项 - _Requirements: 2.1, 2.2, 2.3, 2.5, 2.6, 2.7_ - [x] 10.2 更新任务列表视图 - 在 TaskListView 添加任务选择功能 - 添加分配按钮 - 显示当前分配人员 - 集成 TaskAssignmentDialog - _Requirements: 2.1, 2.7_ - [x] 10.3 创建标注人员任务视图 - 更新 TaskListView 支持标注人员模式 - 只显示分配给当前用户的任务 - 显示任务完成进度 - _Requirements: 3.1, 3.2, 3.5_ - [x] 11. Checkpoint - 任务分配功能完成 - 确保任务分配功能正常工作 - 确保标注人员只能看到自己的任务 - 询问用户是否有问题 - [x] 12. 前端 - 模板选择功能 - [x] 12.1 创建 TemplateGallery 组件 - 创建 `components/template-gallery/` 目录 - 实现模板分类筛选 - 实现模板搜索 - 实现模板卡片展示 - 实现模板预览 - 实现模板选择 - _Requirements: 4.1, 4.2, 4.3, 4.5_ - [x] 12.2 创建预设模板数据 - 创建 `templates/index.ts` 文件 - 添加图像分类模板 - 添加目标检测模板 - 添加图像分割模板 - 添加文本分类模板 - 添加命名实体识别模板 - 添加文本标注模板 - 添加音频转写模板 - 添加视频标注模板 - _Requirements: 4.2_ - [x] 12.3 集成模板选择到项目创建 - 更新 ProjectForm 组件 - 添加模板选择步骤 - 实现模板配置填充 - 支持自定义修改 - _Requirements: 4.4, 4.6_ - [ ]* 12.4 编写 Property 6 的属性测试 - **Property 6: 模板选择填充** - **Validates: Requirements 4.4, 4.5** - 测试模板选择后配置正确填充 - [x] 13. 前端 - 配置编辑器 - [x] 13.1 安装 Monaco Editor - 安装 @monaco-editor/react 依赖 - 配置 webpack 支持 Monaco Editor - _Requirements: 5.1_ - [x] 13.2 创建 ConfigEditor 组件 - 创建 `components/config-editor/` 目录 - 实现代码编辑模式(Monaco Editor) - 实现 XML 语法高亮 - 实现实时语法验证 - 实现错误提示显示 - 实现模式切换功能 - _Requirements: 5.1, 5.3, 5.4, 5.6_ - [ ]* 13.3 编写 Property 8 的属性测试 - **Property 8: 配置编辑器同步 (Round-trip)** - **Validates: Requirements 5.6, 5.8** - 测试模式切换后配置内容同步 - [ ] 14. 前端 - 可视化配置构建器 - [ ] 14.1 创建 VisualConfigBuilder 组件 - 创建 `components/visual-config-builder/` 目录 - 实现组件面板 - 实现拖拽功能 - 实现组件树视图 - 实现属性编辑面板 - 实现 XML 代码生成 - _Requirements: 6.1, 6.2, 6.3, 6.4, 6.5, 6.6_ - [ ]* 14.2 编写 Property 9 的属性测试 - **Property 9: 可视化编辑器 XML 生成** - **Validates: Requirements 6.3, 6.6** - 测试组件操作后 XML 正确生成 - [ ] 15. 前端 - 配置预览功能 - [ ] 15.1 创建 ConfigPreview 组件 - 创建 `components/config-preview/` 目录 - 集成 @humansignal/editor 预览 - 实现示例数据支持 - 实现自定义预览数据 - 实现错误显示 - 实现全屏模式 - _Requirements: 7.1, 7.2, 7.3, 7.4, 7.5, 7.6_ - [ ]* 15.2 编写 Property 10 的属性测试 - **Property 10: 配置预览错误处理** - **Validates: Requirements 7.5** - 测试无效配置的错误处理 - [ ] 16. Checkpoint - 模板和编辑器功能完成 - 确保模板选择功能正常工作 - 确保配置编辑器功能正常工作 - 确保预览功能正常工作 - 询问用户是否有问题 - [x] 17. 前端 - 数据导出功能 - [x] 17.1 创建 DataExportDialog 组件 - 创建 `components/data-export-dialog/` 目录 - 实现格式选择 - 实现状态筛选 - 实现导出进度显示 - 实现文件下载 - _Requirements: 8.1, 8.2, 8.3, 8.4, 8.6_ - [x] 17.2 集成导出功能到项目详情 - 在 ProjectDetailView 添加导出按钮 - 集成 DataExportDialog - _Requirements: 8.1_ - [ ] 18. 前端 - 统计面板 - [ ] 18.1 创建 ProjectStatisticsPanel 组件 - 创建 `components/project-statistics-panel/` 目录 - 实现项目级统计显示 - 实现人员级统计显示 - 实现进度条可视化 - 实现实时更新 - _Requirements: 9.1, 9.2, 9.3, 9.4, 9.5, 9.7_ - [ ] 18.2 集成统计面板到项目详情 - 在 ProjectDetailView 添加统计面板 - 实现统计数据加载 - _Requirements: 9.1_ - [ ] 18.3 更新任务列表显示进度 - 在 TaskListView 显示任务完成进度 - 实现进度条组件 - _Requirements: 3.5, 9.7_ - [ ] 19. 前端 - 任务状态自动更新 - [ ] 19.1 实现任务完成状态自动更新 - 在标注保存后检查任务完成状态 - 自动更新任务状态为 completed - 更新统计数据 - _Requirements: 3.6, 9.6_ - [ ] 19.2 编写 Property 5 的属性测试 - **Property 5: 任务状态自动更新** - **Validates: Requirements 3.6** - 测试任务完成后状态自动更新 - [ ] 20. Checkpoint - 所有功能完成 - 确保所有功能正常工作 - 确保所有测试通过 - 询问用户是否有问题 - [ ] 21. 集成测试和优化 - [ ] 21.1 完整流程测试 - 测试管理员创建项目(使用模板) - 测试管理员创建任务 - 测试管理员分配任务 - 测试标注人员查看任务 - 测试标注人员完成标注 - 测试管理员查看统计 - 测试管理员导出数据 - _Requirements: All_ - [ ] 21.2 性能优化 - 优化统计查询性能 - 优化大量任务的分配性能 - 优化导出大量数据的性能 - _Requirements: All_ - [ ] 22. Final Checkpoint - 完整功能验证 - 确保所有功能正常工作 - 确保所有测试通过 - 进行代码审查 - 询问用户是否满意 ## Notes - 标记 `*` 的任务为可选测试任务,可以跳过以加快 MVP 开发 - 每个任务都引用了具体的需求编号以便追溯 - Checkpoint 任务确保增量验证 - 属性测试验证通用正确性属性 - 单元测试验证具体示例和边缘情况 - 前端和后端任务可以并行开发 - Monaco Editor 需要额外的 webpack 配置 - 可视化配置构建器是较复杂的功能,可以在 MVP 后迭代完善