tasks.md 11 KB

Implementation Plan: 任务分配与模板管理

Overview

本实现计划将任务分配与模板管理功能分解为可执行的开发任务。任务按照从后端 API 到前端组件的顺序组织,确保每一步都可以独立测试和验证。

Tasks

  • [x] 1. 后端 - 用户管理 API 扩展

    • 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

    • 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

    • 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

    • 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

    • 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. 前端 - 用户管理界面

    • 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. 前端 - 任务分配功能

    • 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. 前端 - 模板选择功能

    • 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. 前端 - 配置编辑器

    • 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. 前端 - 数据导出功能

    • 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 后迭代完善