tasks.md 3.4 KB

Implementation Plan: External API Enhancement

Overview

本实现计划将外部API增强功能分解为可执行的编码任务,包括标签传入功能、多边形标注支持、Token生成脚本和API测试脚本。

Tasks

  • [x] 1. 更新Schema定义和枚举类型

    • 1.1 在 schemas/external.py 中添加 TagItem 模型
    • 添加 tag 字段(必填)和 color 字段(可选)
    • 添加颜色格式验证器
    • Requirements: 1.1, 1.2, 1.3
    • 1.2 更新 TaskType 枚举添加 POLYGON 类型
    • 在 TaskType 枚举中添加 POLYGON = "polygon"
    • Requirements: 2.1
    • 1.3 更新 ProjectInitRequest 添加 tags 参数
    • 添加 tags: Optional[List[TagItem]] = None
    • Requirements: 1.1
  • [x] 2. 实现标签处理和配置生成逻辑

    • 2.1 在 services/external_service.py 中添加颜色生成函数
    • 实现 generate_random_color() 返回 #RRGGBB 格式
    • Requirements: 1.3
    • 2.2 添加 polygon 类型的默认配置模板
    • 在 DEFAULT_CONFIGS 中添加 POLYGON 配置
    • Requirements: 2.2
    • 2.3 实现 generate_config_with_tags 函数
    • 根据任务类型和标签生成完整的XML配置
    • 处理有颜色和无颜色的标签
    • Requirements: 1.2, 1.3, 1.4
    • 2.4 更新 init_project 方法使用新的配置生成逻辑
    • 调用 generate_config_with_tags 生成配置
    • Requirements: 1.1, 1.4
  • [x] 3. Checkpoint - 验证标签功能

    • 确保所有测试通过,如有问题请询问用户
  • [x] 4. 更新导出服务支持多边形数据

    • 4.1 更新 _export_yolo 方法支持多边形
    • 处理 polygonlabels 类型的标注数据
    • Requirements: 2.3, 2.4
    • 4.2 更新 _export_coco 方法支持多边形
    • 添加 segmentation 字段支持
    • Requirements: 2.3, 2.4
  • [x] 5. 创建管理员Token生成脚本

    • 5.1 创建 scripts/generate_admin_token.py
    • 实现查找管理员用户逻辑
    • 实现生成99999天有效期Token
    • 输出Token并验证有效性
    • Requirements: 3.1, 3.2, 3.3, 3.4
  • [x] 6. 创建API测试脚本

    • 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文档

    • 7.1 更新 EXTERNAL_API_DOCUMENTATION.md
    • 添加 tags 参数说明
    • 添加 polygon 任务类型说明
    • 更新示例代码
    • Requirements: 1.1, 2.1
  • [x] 8. 前端多边形标注类型支持

    • 8.1 更新 task-type-selector.tsx
    • 添加 'polygon' 到 TaskType 类型联合
    • 添加多边形选项到 TASK_TYPE_OPTIONS(使用 Hexagon 图标)
    • 8.2 更新 external-projects-view.tsx
    • 添加 polygon: '多边形标注' 到 typeLabels
    • 8.3 更新 project-config-view.tsx
    • 添加 PolygonLabels 配置解析逻辑
    • 8.4 更新 xml-generator.ts
    • 添加 generatePolygon 函数生成多边形标注XML
    • 更新 getDataFormat 和 getTaskTypeName 支持 polygon 类型
  • [x] 9. Final Checkpoint

    • 确保所有测试通过,如有问题请询问用户

Notes

  • 任务按依赖顺序排列,先完成Schema更新,再实现服务逻辑
  • 脚本文件放在 backend/scripts/ 目录
  • 测试文件放在 backend/test/ 目录
  • 所有代码遵循项目现有的编码规范