# Implementation Plan: External API Enhancement ## Overview 本实现计划将外部API增强功能分解为可执行的编码任务,包括标签传入功能、多边形标注支持、Token生成脚本和API测试脚本。 ## Tasks - [x] 1. 更新Schema定义和枚举类型 - [x] 1.1 在 schemas/external.py 中添加 TagItem 模型 - 添加 tag 字段(必填)和 color 字段(可选) - 添加颜色格式验证器 - _Requirements: 1.1, 1.2, 1.3_ - [x] 1.2 更新 TaskType 枚举添加 POLYGON 类型 - 在 TaskType 枚举中添加 POLYGON = "polygon" - _Requirements: 2.1_ - [x] 1.3 更新 ProjectInitRequest 添加 tags 参数 - 添加 tags: Optional[List[TagItem]] = None - _Requirements: 1.1_ - [x] 2. 实现标签处理和配置生成逻辑 - [x] 2.1 在 services/external_service.py 中添加颜色生成函数 - 实现 generate_random_color() 返回 #RRGGBB 格式 - _Requirements: 1.3_ - [x] 2.2 添加 polygon 类型的默认配置模板 - 在 DEFAULT_CONFIGS 中添加 POLYGON 配置 - _Requirements: 2.2_ - [x] 2.3 实现 generate_config_with_tags 函数 - 根据任务类型和标签生成完整的XML配置 - 处理有颜色和无颜色的标签 - _Requirements: 1.2, 1.3, 1.4_ - [x] 2.4 更新 init_project 方法使用新的配置生成逻辑 - 调用 generate_config_with_tags 生成配置 - _Requirements: 1.1, 1.4_ - [x] 3. Checkpoint - 验证标签功能 - 确保所有测试通过,如有问题请询问用户 - [x] 4. 更新导出服务支持多边形数据 - [x] 4.1 更新 _export_yolo 方法支持多边形 - 处理 polygonlabels 类型的标注数据 - _Requirements: 2.3, 2.4_ - [x] 4.2 更新 _export_coco 方法支持多边形 - 添加 segmentation 字段支持 - _Requirements: 2.3, 2.4_ - [x] 5. 创建管理员Token生成脚本 - [x] 5.1 创建 scripts/generate_admin_token.py - 实现查找管理员用户逻辑 - 实现生成99999天有效期Token - 输出Token并验证有效性 - _Requirements: 3.1, 3.2, 3.3, 3.4_ - [x] 6. 创建API测试脚本 - [x] 6.1 创建 scripts/test_external_api.py - 实现命令行参数解析(base-url, token) - 实现5种任务类型的测试用例 - 实现标签传入功能测试 - 输出测试结果 - _Requirements: 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8_ - [x] 7. 更新API文档 - [x] 7.1 更新 EXTERNAL_API_DOCUMENTATION.md - 添加 tags 参数说明 - 添加 polygon 任务类型说明 - 更新示例代码 - _Requirements: 1.1, 2.1_ - [x] 8. 前端多边形标注类型支持 - [x] 8.1 更新 task-type-selector.tsx - 添加 'polygon' 到 TaskType 类型联合 - 添加多边形选项到 TASK_TYPE_OPTIONS(使用 Hexagon 图标) - [x] 8.2 更新 external-projects-view.tsx - 添加 polygon: '多边形标注' 到 typeLabels - [x] 8.3 更新 project-config-view.tsx - 添加 PolygonLabels 配置解析逻辑 - [x] 8.4 更新 xml-generator.ts - 添加 generatePolygon 函数生成多边形标注XML - 更新 getDataFormat 和 getTaskTypeName 支持 polygon 类型 - [x] 9. Final Checkpoint - 确保所有测试通过,如有问题请询问用户 ## Notes - 任务按依赖顺序排列,先完成Schema更新,再实现服务逻辑 - 脚本文件放在 backend/scripts/ 目录 - 测试文件放在 backend/test/ 目录 - 所有代码遵循项目现有的编码规范