修复陈旧标注保存404

- dirty 标注 PATCH 404 时改用 POST 重新创建,保留几何、分类和传播 lineage metadata

- 保存后回显替换本地旧 annotationId,避免保存改动和开始传播被陈旧 id 中断

- 增加工作区回归测试,覆盖本地旧 annotationId 重新创建流程

- 更新接口契约、需求冻结、设计冻结、测试计划和 AGENTS 说明
This commit is contained in:
2026-05-03 19:26:07 +08:00
parent 4d6bbf2b80
commit 0ba5a8c094
7 changed files with 106 additions and 13 deletions

View File

@@ -156,7 +156,7 @@
19. AI 画布根据容器和当前帧尺寸按 86% 适配比例计算初始 scale/position使底图默认居中且尽量大但保留画布边距。
20. Canvas 按当前帧过滤并渲染 mask。
21. 新 mask 会带上当前选择的模板分类元数据,包括 `classId``className``classZIndex``metadata.source=ai_segmentation` 和保存状态 `draft`
20. 顶栏保存状态按钮按当前项目待保存数量显示为“保存 X 个改动”或“已全部保存”;用户点击保存后,前端将像素 `segmentation` 转成 normalized `mask_data.polygons`;未保存 mask 调用 `POST /api/ai/annotate`dirty mask 调用 `PATCH /api/ai/annotations/{annotation_id}`;保存成功后本次提交的 draft mask id 会从本地保留列表中排除,并由后端 saved annotation 回显替换。
20. 顶栏保存状态按钮按当前项目待保存数量显示为“保存 X 个改动”或“已全部保存”;用户点击保存后,前端将像素 `segmentation` 转成 normalized `mask_data.polygons`;未保存 mask 调用 `POST /api/ai/annotate`dirty mask 调用 `PATCH /api/ai/annotations/{annotation_id}`如果 dirty mask 的后端标注已被其它操作删除导致 `PATCH` 返回 404保存链路会保留同一 `mask_data`、几何、分类和传播 lineage metadata改用 `POST /api/ai/annotate` 重新创建,并在随后回显时排除本地旧 mask id保存成功后本次提交的 draft mask id 会从本地保留列表中排除,并由后端 saved annotation 回显替换。
21. 工作区加载项目帧后通过 `GET /api/ai/annotations` 取回已保存标注并转成前端 mask。
22. 工作区“清空遮罩”可从画布右下角或左侧工具栏触发;删除当前帧已保存标注、清除当前帧本地 mask并通过传播 lineage 同步清空这些 mask 的自动传播结果,不删除其它帧独立 AI 推理或人工 mask。