Files
HSAP/docs/DMS_E2E_2IMG_TEST.md
Chengfang Lu 483e027482 feat: 合并 Docker Compose、标注表格优化与部署文档
将 platform + CVAT 合并为单文件 docker-compose.yml,完善 .env 与 init/dev_up 脚本;
新增 docs/DEPLOY.md 与更新 README 以支持新机器部署;含数据湖示例、车队地图、
紧凑表格 UI、ADAS det_7cls 路径与批次台账等近期改动。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-16 17:06:31 +08:00

9.7 KiB
Raw Blame History

DMS 2 图端到端测试手册(上下文备忘)

更新2026-06-16
用途:避免多轮对话丢失状态;记录 E2E 批次、脚本、已知问题与后续待测项。


1. 测试目标

验证 QA 门禁完整链路DMS / ADDW

raw_pool → 开 Campaign 标注 → 提交质检 → 质检通过 → 导出 YOLO → 提交 build → 审核批准 → ingested进训练包

与已完成的 Unified Ingest SDKADAS MOON-3D smoke 并列,本手册专指 2 张图 DMS 小批次 E2E


2. 当前测试批次(已创建)

字段
project dms
task addwADDW 分心检测4 类 bbox
batch e2e_2img_20260616
pack入库目标 dms_v1workflow.registry.yaml active_packs
campaign_id 59f7c8fd8402c072bbbf
cvat_task_id 7
cvat_job_id 7
cvat_job_url http://127.0.0.1:8080/tasks/7/jobs/7

数据路径

HSAP/datasets/dms/inbox/addw/e2e_2img_20260616/
  images/train/
    eye_open__001_snap_dam_0416_cloudy_5_109.jpg
    eye_open__002_snap_dam_0522_smoke_phone_484.jpg
  labels/ls_annotations/          # CVAT 同步后写入
  labels/yolo/                      # 同步时顺带写(可选)
  batch.meta.yaml                   # stage 随流程推进更新

宿主机 inbox 目录为 root 所有docker 创建);标注/同步由 hsap-platform 容器 写入,属正常。

图片来源:从 addw/20260525_pilot/images/train/ 复制前 2 张。

平台入口

  • 标注画布:http://127.0.0.1:8787/labeling/annotate/59f7c8fd8402c072bbbf
  • 标注进度:搜 e2e_2img_20260616
  • 导出与入库:/labeling/export
  • 审核队列:/system/audit

当前进度2026-06-16 实测)

状态
落盘 2 图
register-batch raw_pool
open Campaign out_for_labeling
CVAT 标注 + 同步 APIsaved=2, shapes=2labeled=2/2
提交质检
质检通过 labeling_submitted
导出 YOLO written=2(需 重启 hsap-worker 后 Job 才走新 runner
build + ingested packs/dms_v1/addw/ 含 2 条 labelsstage=ingested

全流程结论:数据已 merge 进 datasets/dms/packs/dms_v1/addw/labels/train + labels/val 各 1 条);stage=ingested


3. 自动化脚本

3.1 Shell 入口

cd /home/chengfanglu/DATA/HSAP

# 查看状态
bash scripts/smoke_dms_e2e_2img.sh info
# 或
python3 platform/as_platform/tests/run_dms_e2e_pipeline.py info

# 标完后跑全流程提交→质检→导出→build→校验 ingested
bash scripts/smoke_dms_e2e_2img.sh run

# 等待标注(最多 600s再跑
DMS_E2E_WAIT_LABEL_SEC=600 bash scripts/smoke_dms_e2e_2img.sh run-wait

# 重新 setup会覆盖复制 2 图 + register + open campaign
bash scripts/smoke_dms_e2e_2img.sh setup

3.2 Python 实现

platform/as_platform/tests/run_dms_e2e_pipeline.py

  • info — 打印 campaign_id、stage、labeled 数
  • setup — 调 API open campaign
  • run — API 驱动submit → review all good → export job → submit-build-batch → approve → 断言 ingested + pack sources

成功标志stdout 末尾 DMS_E2E_PIPELINE_OK

3.3 环境变量

变量 默认
HSAP_API http://127.0.0.1:8787
DMS_E2E_BATCH e2e_2img_20260616
DMS_E2E_TASK addw
DMS_E2E_PACK dms_v1
DMS_E2E_MIN_IMAGES 2

4. 相关已完成工作(同会话 / 前序 commit

Commit 0b8ade0 — Unified Ingest SDK

  • platform/as_platform/data/promote/ — DMS/ADAS promote_batch
  • ADAS cuboid export / fit / adas_moon3d_v1
  • platform/as_platform/tests/test_unified_ingest_sdk.py7 项单元测试)
  • scripts/smoke_adas_promote.sh
  • scripts/smoke_labeling_api.sh 已接入上述测试

离线测试(均已 PASS

bash scripts/smoke_labeling_api.sh          # 含 APIplatform :8787
bash scripts/smoke_adas_promote.sh
python3 platform/as_platform/tests/test_unified_ingest_sdk.py

5. 已知问题与修复记录

5.1 「立即同步」点击无反馈UI

现象:用户点「立即同步」似乎没反应。

根因(已确认)

  1. 后端正常POST /api/v1/labeling/cvat/sync/{campaign_id} 返回 200saved=2, shapes=2
  2. 前端 UX
    • 自动同步每 45s 跑时 syncInFlight=true,手动点击被 静默丢弃(无提示)。
    • shapes=0CVAT 未 Ctrl+S 保存)仅更新顶栏灰色小字,无 alert,易被误认为无效。

修复AnnotationPage.tsx,待 build_web.sh 后生效):

  • 同步进行中再点 → 顶栏提示「同步进行中,请稍候…」
  • 手动同步结束 → 始终 alert(含「暂无新标注,请先 CVAT 保存」说明)

操作提示CVAT 画框后必须 Ctrl+S 保存,再点「立即同步」。

5.2 inbox 目录权限

datasets/dms/inbox/addw/* 由 docker 创建为 root宿主机直接写 labels/ 会 Permission denied。应通过平台 API/容器操作。

5.3 register-batch 计数

images=4 偶发(扫描逻辑);实际仅 2 张 jpgprogress total_tasks=2 为准。

5.4 API labeling/batches limit

查询 limit 最大 100(非 200E2E 脚本已修正。

5.5 get_batch_export_stats ORM

已在 session 外读 camp.project 修为先提取 projectcommit 0b8ade0)。


6. 平台复现步骤(协调员)

  1. 送标工作台 → 待送标 → e2e_2img_20260616 → 开始标注(若已开 Campaign 则跳过)
  2. 标注画布 → CVAT 画框 → Ctrl+S立即同步(或等 45s 自动同步)
  3. 标注进度提交质检
  4. 标注质检 → 逐张 Good或跑脚本自动全 Good
  5. 导出与入库 → 待导出 → 执行导出 → 待 build → 提交 build
  6. 审核队列 → 批准 build_dms
  7. 数据目录 → 训练包 dms_v1addw → 见 sources/e2e_2img_20260616

5.10 质检详情看不到图 / 框(已修)

原因 1主因<img src="/api/.../review-image"> 不会带 Bearer Token → 401页面显示「图片加载失败」或空白。

修复QualityReviewPage 改为 fetchReviewImageBlob + URL.createObjectURL 带鉴权加载。

原因 2:质检 overlay 只读 labels/{stem}.txtCVAT 同步写在 labels/yolo/labels/ls_annotations/

修复review.py 多路径解析 + 支持 ls_annotations JSON 画框。

原因 3:图片列表 rglob *.jpg 重复(大小写扩展名)→ 质检队列显示 4 张实为 2 张。

修复:改用 _iter_batch_images 去重。

注意:若 CVAT 框未保存或宽高为 0底栏仍显示「标注: 无」——需画布内画有效框并 Ctrl+S。


AS_JOB_EXECUTOR=workerJob 在 hsap-worker 进程执行。容器若长期未重启,可能仍跑旧版 labeling_export(误调 as.py build)。

docker restart hsap-worker hsap-platform
bash scripts/build_web.sh && docker restart hsap-platform   # UI 变更后

5.7 build_dms 校验过严(已修)

原问题validate_dms_task() 要求整个 packs/dms_v1/addw 已存在(且常指向损坏的 workspace 软链)。

修复validate_dms_inbox_batch(batch_dir) 只校验 inbox 批次已有 YOLO labels。

5.8 dms_v1 损坏软链(已修)

datasets/dms/packs/dms_v1 曾指向不存在的 /data/workspace/DMS/DATASET/...mkdirFile exists

修复pack_registry.resolve_pack_dir / DmsYoloPromoteAdapter 检测断链并回退为 HSAP 内真实目录。

5.9 refresh_yaml 拖垮 build Job已修

原问题promote_inbox_batchrun_refresh(root)--task,因其他任务(如 ddaw无 pack 目录而 exit 1导致 Job 失败(数据其实已 promote

修复run_refresh(root, task=task);单批次 promote 只刷新对应任务 yaml。

分包给本人走「我的标注」2026-06-16

已用代码将 2 张均分给 卢承方user_id=5飞书登录

  • assigned=2pending=2completed=0
  • Campaign 已重置为 in_progress / out_for_labeling,原标注 JSON 已清空,可重新画框

我的标注入口http://127.0.0.1:8787/labeling/my-tasks?campaign=59f7c8fd8402c072bbbf

若用 dev 登录user_id=9 同名账号),需另分配或改用飞书账号登录。

# 再次分配(协调员 API
curl -X POST -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  http://127.0.0.1:8787/api/v1/labeling/campaigns/59f7c8fd8402c072bbbf/assign-tasks \
  -d '{"mode":"even","user_ids":[5]}'

  • 跑通 submit → 质检 → 导出 → build → ingested
  • 前端 rebuild 后复测「立即同步」反馈(已改 AnnotationPage.tsx
  • UI 手工与脚本结果对照
  • smoke_dms_e2e_2img.sh run 接入 smoke_labeling_api.sh
  • 提交上述 bugfix commit

8. 服务与端口

服务 地址
HSAP 平台 http://127.0.0.1:8787
CVATiframe http://127.0.0.1:8080
API 健康 GET /api/v1/health
docker compose up -d platform worker
docker compose -f docker-compose.yml -f docker-compose.cvat.yml up -d  # CVAT
bash scripts/build_web.sh && docker restart hsap-platform            # UI 更新后

9. 其他参考批次(非本 E2E

batch campaign_id 说明
addw/20260525_pilot 149329641efe128c00f2 24 图,曾 in_review
ADAS val_front6mm_pilot smoke_adas_promote.sh CLI 已 PASS

ADAS registry 在 HSAP 仓库外data/送标/adas/adas.registry.yaml