本实现计划将对外API接口和内部管理功能分为多个阶段实现:
[x] 1. 数据库扩展和基础设施
Requirements: 6.1, 10.1
[x] 1.2 创建对外API的Schema定义
创建 backend/schemas/external.py
定义 TaskType 枚举
定义 ProjectInitRequest/Response
定义 ProgressResponse 和 AnnotatorProgress
定义 ExternalExportFormat 枚举
定义 ExternalExportRequest/Response
定义 ExportCallbackPayload
Requirements: 1.2, 1.4, 2.2, 3.1
[x] 1.3 扩展项目Schema定义
更新 backend/schemas/project.py
添加 ProjectStatus 枚举
添加 ProjectSource 枚举
添加 ProjectStatusUpdate 模型
添加 ProjectConfigUpdate 模型
添加 LabelConfig 模型
添加 ProjectResponseExtended 模型
Requirements: 6.2, 6.3, 7.1, 10.1
[x] 1.4 创建任务分发相关Schema
添加 DispatchRequest 模型
添加 AssignmentPreviewRequest 模型
添加 AnnotatorAssignment 模型
添加 AssignmentPreviewResponse 模型
添加 DispatchResponse 模型
Requirements: 8.1, 9.1, 9.2
[x] 2. Checkpoint - 确保数据库迁移和Schema定义完成
[x] 3. 对外API服务层实现
backend/services/external_service.pyRequirements: 1.2, 1.3, 5.5
[ ]* 3.2 编写项目创建完整性属性测试
Property 2: 项目创建完整性
验证创建的任务数量等于输入数据项数量
Validates: Requirements 1.2, 1.3, 1.4
[x] 3.3 实现进度查询服务
实现 get_project_progress 方法
计算总任务数、已完成、进行中、待处理
计算完成百分比
获取每个标注人员的统计信息
Requirements: 2.1, 2.2, 2.3, 2.4
[ ]* 3.4 编写进度计算正确性属性测试
Property 3: 进度计算正确性
验证完成百分比 = 已完成任务数 / 总任务数
Validates: Requirements 2.2, 2.3
[x] 3.5 实现数据导出服务
实现 export_project_data 方法
支持多种导出格式(JSON, CSV, ShareGPT, YOLO, COCO, Alpaca)
实现文件生成和存储
实现回调通知功能
Requirements: 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.13, 3.14
[ ]* 3.6 编写导出过滤正确性属性测试
Property 5: 导出过滤正确性
验证 completed_only=true 时只导出已完成任务
Validates: Requirements 3.9, 3.10
[x] 4. 对外API路由实现
backend/routers/external.pyRequirements: 1.1, 1.5, 2.1, 3.1, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6
[ ]* 4.2 编写Token验证一致性属性测试
Property 1: Token验证一致性
验证无效Token返回401,非管理员返回403
Validates: Requirements 1.5, 4.2, 4.4, 4.5, 4.6
[x] 4.3 注册External Router到主应用
更新 backend/main.py
导入并注册 external router
Requirements: 1.1
[x] 5. Checkpoint - 确保对外API功能完成
[x] 6. 内部管理功能 - 项目状态管理
backend/routers/project.pyRequirements: 7.9, 10.2, 10.3, 10.4, 10.5, 10.7
[ ]* 6.2 编写项目状态流转正确性属性测试
Property 9: 项目状态流转正确性
验证只允许合法的状态转换
Validates: Requirements 10.2, 10.3, 10.4, 10.5, 10.7
[x] 6.3 更新项目列表接口
返回扩展的项目信息(状态、来源、任务类型)
支持按状态筛选
支持按来源筛选
Requirements: 6.2, 6.3, 6.4
[x] 7. 内部管理功能 - 任务分发
backend/services/assignment_service.pyRequirements: 8.6, 8.7, 9.1, 9.2, 9.3
[ ]* 7.2 编写一键分发任务数量一致性属性测试
Property 10: 一键分发任务数量一致性
验证分配的任务总数等于项目总任务数
Validates: Requirements 8.6, 8.7
[x] 7.3 扩展Task Router
更新 backend/routers/task.py
添加 POST /api/tasks/preview-assignment 端点
添加 POST /api/projects/{id}/dispatch 端点
Requirements: 8.1, 8.2, 9.1, 9.5
[ ]* 7.4 编写分配预览与实际分配一致性属性测试
Property 11: 分配预览与实际分配一致性
验证预览结果与实际分配结果一致
**Validates: Requirements 9.1, 9.2, 9.5_
[x] 8. Checkpoint - 确保内部管理API功能完成
[x] 9. 前端 - 项目列表扩展
Requirements: 6.2, 6.3, 6.4
[x] 9.2 添加项目状态操作按钮
根据状态显示不同操作按钮
draft状态显示"配置项目"按钮
ready状态显示"一键分发"按钮
Requirements: 6.5, 8.1
[x] 10. 前端 - 项目配置页面
Requirements: 7.2, 7.3, 7.4, 7.5
[x] 10.2 创建XML配置预览组件
显示当前XML配置
支持手动编辑XML
实时预览配置效果
Requirements: 7.1, 7.6
[x] 10.3 实现配置保存和状态更新
保存配置时验证XML有效性
显示验证错误提示
更新项目状态
Requirements: 7.7, 7.8, 7.9, 7.10
[x] 11. 前端 - 一键分发对话框
Requirements: 8.2, 8.3, 8.4, 8.5
[x] 11.2 创建分配预览组件
显示每个人员将分配的任务数
显示分配百分比
Requirements: 9.1, 9.2, 9.3
[x] 11.3 实现分发确认和结果展示
确认分发后执行分配
显示分配结果摘要
更新项目状态
Requirements: 8.8, 8.9, 9.5
[x] 12. Checkpoint - 确保前端功能完成
[x] 13. 集成测试和文档
Requirements: 全部
[x] 13.2 更新API文档
确保 EXTERNAL_API_DOCUMENTATION.md 与实现一致
添加内部API文档(如需要)
Requirements: 全部
[x] 14. Final Checkpoint - 确保所有功能完成
最终测试结果 (2026-02-03):
* are optional and can be skipped for faster MVP