Files
HSAP/docs/DEVELOPMENT_ROADMAP.md
Chengfang Lu e72bc061c5 feat: HSAP platform v2 — modular navigation, quality review, audit log, world model simulation
Major changes:
- New frontend (platform/web/): Vite + React 18 + TypeScript + Tailwind
- 4-module navigation: 数据送标 / 模型管理 / 车队管理 / 系统管理
- Data catalog with charts (DMS/ADAS/Lane 3-tab view)
- Quality review workflow (标注质检): Good/Fine/Bad scoring with auto-advance
- Audit enhancements: batch operations, rejection categories, Feishu notifications
- Operation audit log (操作日志)
- World model simulation studio (仿真工坊)
- Dataset version management with snapshots and diff
- ADAS 7-class dataset integration (138K images organized + compressed)
- User management with Feishu integration and pagination
- CRUD/search/filter on all pages, card layout redesign
- PIL-optimized image overlay rendering
- Auto-snapshot on build, in_review workflow stage
- Removed embedded algorithm code (now in workspace)
2026-06-03 11:40:21 +08:00

9.3 KiB
Raw Blame History

HSAP 开发计划2026 Q2

本文是 HSAPHuaxu Sentinel Active Safety Platform分期开发路线图,与现有文档对齐:


1. 架构原则(维持当前技术栈)

结论:现阶段不引入 RabbitMQ / KafkaDB + thread/worker + Redis 足够。

层级 选型 用途
API FastAPI + Label Studio Editor 壳 送标 / 标注 / 审核 / 训练 / 车队
持久化 PostgreSQL生产/ SQLite本机 Job、Campaign、用户、审批
异步 Job thread(本机)/ workerDocker 导出、build、训练、入湖分析
Redis List 队列 + Pub/Sub + 标注锁 仅 worker 模式强依赖;本机可跳过
训练/数据 as.py + DMS/Lane registry inbox → pack → train
flowchart TB
  subgraph dev [本机开发 thread 模式]
    RunLocal[run_local.sh]
    ThreadExec[daemon Thread 跑 Job]
    RunLocal --> ThreadExec
  end
  subgraph prod [生产 Docker worker 模式]
    Platform[platform :8787]
    RedisQ[Redis as:job_queue]
    Worker[worker.py]
    Platform -->|push_job| RedisQ
    RedisQ -->|brpop| Worker
  end
  subgraph future [未来可选 触发条件见 §6]
    MQ[RabbitMQ / Kafka]
    MQ -.->|替换 Redis List| RedisQ
  end

环境对照

场景 启动方式 Job 执行 Redis
本机快速开发 bash scripts/run_local.sh 进程内 thread 可选(锁回退 memory
联调 / 演示 docker compose up -d platform worker redis postgres 独立 worker 必须
训练机 worker.py + Redis GPU 节点消费队列 必须

2. 阶段总览

阶段 时间盒 目标 退出标准
A 标注闭环 12 周 dam/addw/addw_face 画布→导出→入库可 E2E P0+P1 清单全绿
B 生产运行态 1 周 Docker worker + Redis 稳定跑导出/训练 Job smoke + Jobs 页成功
C 数据入湖 2 周 批次台账、飞书、MinIO 主路径打通 DATA_LAKE checklist AE
D 扩展任务 23 周 forward / lane 画布 + 导出 P2 清单
E 体验与治理 持续 关键点 UX、审计、权限、文档 标注员可独立操作
F 架构演进 按需 MQ / 多 worker / 监控 见 §6 触发条件

3. 阶段 A标注闭环当前最高优先级

A.1 已完成(代码侧)

  • dms_pose.xmlface + 37 关键点)
  • export_ls_to_yolo.pydetect 5 字段 / pose 116 字段)
  • runner.py 导出前转换 + as.py build
  • batch_stage.py 有 txt 才设 returned
  • test_export_ls_to_yolo.py 单元测试
  • run_local.sh / wait_for_db.py thread 模式跳过 Redis 等待

A.2 待完成(验收)

# 任务 负责人建议 验收
A2.1 inbox 放入样例图dam/addw_face 各 ≥3 张) 数据/协调员 GET .../tasks 非空
A2.2 浏览器dam 检测框标注保存 标注员 labels/ls_annotations/*.json
A2.3 浏览器addw_face 框 + 关键点保存 标注员 JSON 含 rectanglelabels + keypointlabels
A2.4 导出 Job → labels/train/*.txt 协调员 dam 5 字段addw_face 116 字段
A2.5 提交入库审核 → build 进 pack 工程师 数据目录可见新 sources
A2.6 审核预览叠加框 + 关键点 审核员 preview 缩略图正确
A2.7 更新 QA_GAPexport 已对接) 开发 文档与代码一致

命令

# 离线
python3 /home/chengfanglu/DATA/HSAP/datasets/dms/scripts/test_export_ls_to_yolo.py

# 本机平台
cd /home/chengfanglu/DATA/HSAP && bash scripts/run_local.sh

# API 冒烟(平台起来后)
bash /home/chengfanglu/DATA/HSAP/scripts/smoke_labeling_api.sh

A.3 addw_face 专项增强可选A 通过后)

任务 说明
关键点语义名 addw_face_37.yamldisplay_name(若有外协规范)
标注进度 进度 API 增加「已标 kpt 数/37」
多脸策略 文档化 bbox-关键点分配规则;必要时 UI 约束单脸

4. 阶段 B生产运行态worker + Redis

B.1 基础设施

cd /home/chengfanglu/DATA/HSAP
docker compose up -d postgres redis platform worker
# .env: AS_REDIS_PORT=6380 → run_local 已自动对齐
任务 说明
B1.1 确认 AS_JOB_EXECUTOR=worker 在 compose 内生效
B1.2 导出/训练 Job 仅 worker 消费platform 不阻塞
B1.3 /api/v1/healthredis_connected=true
B1.4 标注锁走 Redis多标注员并行时不抢标

B.2 可观测性(轻量)

任务 说明
B2.1 Jobs 页failed Job 展示 export_convert / stderr 摘要
B2.2 manifests/trace_log.jsonl 关键 span 文档化
B2.3 worker 日志:执行 Job job-xxx 与 platform 对齐

B.3 本机 vs Docker 文档

DEVELOPMENT_GUIDE.md 增加一节:

  • 日常改代码 → run_local.shthread无 Redis
  • 验证导出/训练链路 → docker compose up worker
  • 禁止混用thread 模式提交的 Job 不会被 Docker worker 消费(同一 Redis 时可消费,但 DB 需一致)

5. 阶段 CE数据入湖与任务扩展

C. 数据入湖(见 DATA_LAKE_GAP.md

  • 批次台账 → 审批入湖 → inbox 出现在送标工作台
  • 飞书多维表格同步(可选,FEISHU_BITABLE_SYNC_ENABLED=0 可关)
  • MinIO stagingdocker compose --profile minio up
  • 上传 ZIP → 分析 → promote inbox

D. forward / laneP2

任务 文件/动作
forward_4cls.xml / forward_cls.xml 补 label_studio 模板
lane_ufld_mask.xml + export_ls_to_lane_gt.py 已实现BrushLabels → PNG + train_gt.txt
registry profile lane__lane_v1 导出 lane_gt_txt + build lane

E. 体验与治理

  • 37 关键点侧栏分组Header 分块)
  • 角色权限:internal_labeler / labeler / reviewer 回归
  • 外协 ZIPimport-vendor 与平台标注双轨说明(VENDOR_RETURN.md
  • 前端变更后:bash scripts/build_hsap_ls_ui.sh + 强刷

6. 阶段 F何时引入 MQ暂不实施

当前不引入。 满足以下 任意 2 条 时再立项:

  1. Job 入队 > 10/s sustained或 Redis List 延迟明显
  2. 需要优先级队列(训练插队、导出低优先级)
  3. 需要死信队列 + 自动重试(现仅靠 Job 表 failed + 人工重跑)
  4. 多机房 / 多 worker 池Redis 单点成为瓶颈
  5. 消息审计与回放成为合规要求

迁移策略(预留,不改 API

  • 保持 enqueue_job / Job 表不变
  • redis/bus.pypush_job / pop_job 抽象为 JobTransport 接口
  • 实现 RedisListTransport(现逻辑)与 RabbitMQTransport(新)
  • 事件 Pub/Sub 可迁至 MQ fanout或保留 Redis

7. 里程碑与依赖

gantt
  title HSAP 开发里程碑(示意)
  dateFormat YYYY-MM-DD
  section 标注闭环
  A_inbox样例与浏览器E2E     :a1, 2026-05-27, 7d
  A_export_build验收         :a2, after a1, 5d
  section 生产态
  B_docker_worker稳定        :b1, after a2, 5d
  section 入湖
  C_批次台账与promote        :c1, after a1, 14d
  section 扩展
  D_forward_lane             :d1, after a2, 14d

硬依赖

  • A 完成前:不启动 forward/lane 大改
  • B 与 A 可并行Docker 环境给工程师,标注 E2E 给协调员
  • C 依赖 A 至少 dam 一条链路通

8. 风险与对策

风险 对策
inbox 无图tasks 为空 A2.1 放样例PILOT_BATCH 文档
本机无 Redis误以为平台坏了 已改 thread 跳过等待;文档说明
Redis 端口 6379 vs 6380 run_local.sh.env AS_REDIS_PORT
37 点 UX 差、漏标 maxUsages=1后续进度 KPI
关键点顺序与历史 pack 不一致 严格 addw_face_37.yaml;导出单测
thread 与 worker 混用同一 DB 开发指南写明一种 Job 执行器
QA_GAP 过时 A2.7 同步更新

9. 近期两周行动清单(可执行)

第 1 周

  1. 协调员dam/batch_0516、addw_face inbox 各放样例图
  2. 标注员:各标 2 张,确认保存 JSON
  3. 开发:run_local.sh 或 compose 起 platform跑通 export → build
  4. 全员:勾选 BROWSER_QA_CHECKLIST.md

第 2 周

  1. compose 起 worker + redis重复 export 验证 Job 在 worker 日志出现
  2. addw_face 导出 txt 抽 1 条对照 dms_v1/addw_face 历史样本116 字段)
  3. 提交入库审核 → 数据目录刷新
  4. 更新 QA_GAP / PHASE_ROLLOUT 勾选状态

10. 文档维护

文档 更新时机
PHASE_ROLLOUT_DMS.md 每完成一个 pilot 勾选
QA_GAP_REPORT.md export/ML/入湖状态变化时
DEVELOPMENT_ROADMAP.md本文 阶段切换或 MQ 触发条件变化时
LABELING_SOP.md 标注流程或格式变更时

版本2026-05-27 · 与关键点接入、thread/worker 架构讨论对齐