Chengfang Lu 7f3b84faf0 docs: DEPLOY 增加接手人环境差异清单(均可本机自行解决)
说明勿拷贝开发者 .env/feishu.env、常见排障与部署前自检,明确不绑定单机环境。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-16 17:40:14 +08:00
2026-05-25 16:59:59 +08:00

HSAP — Huaxu Sentinel Active Safety Platform

华胥 Sentinel 主动安全算法迭代平台HSAP卡车主动安全DMS / Lane / ADAS算法迭代平台Web UI + API + 审核 + Job 队列 + CVAT 标注 + 算法适配器 + 车队地图

克隆本仓库即可运行;算法源码与数据集脚手架已内嵌。大文件(图像、训练权重)通过外部 workspace送标数据湖 挂载,不进入 Git。

新机器 3 步部署 → 见下方 快速部署到其他机器 · 详细文档 docs/DEPLOY.md


快速部署到其他机器

在目标 Linux 机器上执行(需 Docker + Node 18+

# 1. 克隆HTTPS 需 Gitea 用户名 + Access Token 作密码;或配置 SSH 公钥)
git clone https://git.sanyele.com/ChengFang.LU/HSAP.git
cd HSAP

# 2. 初始化:.env、feishu.env、前端构建、lake_example 样例植入
bash scripts/init_after_clone.sh

# 3. 启动平台 + CVAT
bash scripts/dev_up.sh

浏览器打开 http://127.0.0.1:8787 → 开发登录 → 批次台账 → 扫描数据湖 → 登记 → 送标工作台开标(样例已自动就位)。

检查项 命令 / 地址
平台健康 make health
容器状态 docker compose ps
样例批次 lake/lake_example/datasets/manifest.yaml
局域网访问 .envAS_FRONTEND_URLCVAT_PUBLIC_URLhttp://<IP>:8787 / :8080

目录布局(推荐与仓库平级):

/opt/DATA/
├── HSAP/          ← git clone
└── data/          ← AS_DATA_LAKE_HOSTinit 自动创建 送标/adas/inbox

AS_WORKSPACE_ROOTDMS 训练大图)验收送标流程不必配置;有外部 workspace 时再在 .env 填写。

环境差异说明: 路径、端口、Docker 权限、前端构建等项因机器而异,但均可在本机按 docs/DEPLOY.md §9 自行解决,不依赖开发者个人目录。

推送代码到远端:

git push origin main
# 用户名 Chengfang.LU密码填 Gitea Access Token设置 → 应用 → 生成令牌)

仓库结构

HSAP/
├── as.py / workflow.registry.yaml
├── platform/
│   ├── as_platform/           # FastAPI 后端
│   │   └── labeling/          # CVAT 客户端、格式转换、任务分配
│   └── web/                   # React (Vite) 前端 → build 到 ui-hsap/dist
├── algorithms/
│   ├── dms_yolo/code/         # DMS YOLO
│   └── lane_ufld/code/        # Lane UFLD
├── datasets/
│   ├── dms/                   # DMS 配置/脚本
│   ├── lane/
│   ├── adas -> ../../data/送标/adas   # ADAS 送标数据湖符号链接clone 后可手动创建)
│   └── labeling.registry.yaml
├── lake/lake_example/         # 数据湖 inbox 目录示例与 manifest
├── vendor/cvat/patches/       # CVAT no_auth + iframe 补丁
├── scripts/                   # dev_up、build_web、init_after_clone 等
├── docs/DEPLOY.md             # 新机器部署(推荐阅读)
├── docs/HANDOVER.md           # 详细交接文档
├── docker-compose.yml         # 平台 + CVAT单文件已合并
└── manifests/
    ├── feishu.env.example
    └── feishu.env             # 本地生成,不入 Git
内容 是否在 Git 中 说明
平台 + 前端源码 + 适配器 直接提交
CVAT 补丁 / compose vendor/cvat/patches/
前端构建产物 ui-hsap/dist bash scripts/build_web.sh 生成
算法 Python 源码 scripts/vendor_workspace.sh 可同步
送标图像 / 标定 / 标注 数据湖挂载
图像 / 视频 / 权重 .gitignore

快速开始Docker推荐

依赖: Docker 20+、Docker Compose v2、Node 18+(仅构建前端)

git clone https://git.sanyele.com/ChengFang.LU/HSAP.git
cd HSAP

bash scripts/init_after_clone.sh   # .env / feishu.env、构建前端、植入 lake_example 样例
bash scripts/dev_up.sh             # 或: make up

按上面两步即可 启动平台init_after_clone.sh 会自动把 lake/lake_example 里的示例送标批次复制到数据湖 inbox接手人无需再手动拷文件。

服务 地址 说明
HSAP 平台 UI + API http://127.0.0.1:8787 登录、送标、标注、审核、车队地图
CVAT 标注画布 http://127.0.0.1:8080 HSAP iframe 嵌入;内部 no_auth
PostgreSQL localhost:5433 .env AS_DB_PORT
Redis localhost:6380 Job 队列
make logs      # platform / worker / cvat 日志
make down      # 停止全部服务
make health    # API 健康检查

开发登录: manifests/feishu.envAS_DEV_AUTH=true 时无需飞书即可登录。

改前端后:bash scripts/build_web.shdocker compose restart platform

局域网部署: 修改 .envAS_FRONTEND_URLCVAT_PUBLIC_URL,详见 docs/DEPLOY.md


接手走通送标流程lake_example

仓库内 lake/lake_example/DMS / ADAS 2D / ADAS 3D / Lane 各一条样例批次(含少量图片),用于验收全流程。

一键植入(部署时自动执行)

bash scripts/init_after_clone.sh    # 已包含 seed
# 或单独执行:
bash scripts/seed_lake_example.sh

样例落盘位置:

业务 路径 样例批次
ADAS 2D data/送标/adas/inbox/det_7cls/ 20260616_adas2d_pilot
ADAS 3D data/送标/adas/inbox/cuboid_7cls/ 20260616_3d_pilot
DMS datasets/dms/inbox/addw/ 20260616_addw_pilot
Lane datasets/lane/inbox/ 20260616_lane_pilot

默认 AS_DATA_LAKE_HOST=../data(与 HSAP 仓库平级)。完整清单见 lake/lake_example/datasets/manifest.yaml

UI 操作顺序

  1. 打开 http://127.0.0.1:8787 → 开发登录
  2. 批次台账扫描数据湖 → 勾选样例批次 → 登记到台账
  3. 送标工作台 → 选批次(建议先试 adas / det_7cls / 20260616_adas2d_pilot)→ 开标
  4. 标注进度分配任务 → 标注员进入 我的标注 → CVAT 画框保存
  5. 协调员 提交批次 → 审核员 审核队列 通过 → 导出入库

清空标注记录重来:bash scripts/reset_labeling.sh(不删 inbox 文件,可再次扫描登记)。


标注与送标

HSAP 统一使用 CVAT 作为标注画布;账号、任务分配、权限在 HSAP 管理CVAT 仅作内部引擎。

流程概览

数据湖登记批次 → 协调员「开标」→ CVAT 自动建 Task / 上传图片
    → 协调员分配任务(飞书通讯录 + 可选 DM
    → 标注员「我的标注」→ CVAT 画框 / Cuboid → 保存 → 同步回数据湖
    → 协调员提交批次 → 质检 → 导出入库

角色与页面

角色 典型页面
协调员 (engineer) 送标工作台、标注进度、任务分配
标注员 (labeler) 我的标注、标注页
审核员 (reviewer) 审核队列

支持的标注类型

Profile 范围 CVAT 工具
ddaw / addw DMS 2D 检测 Rectangle
lane__lane_v1 车道线 Polyline
det_7cls ADAS 2D 七类检测 Rectangle
cuboid_7cls ADAS 单目 3D Cuboid Cuboid

ADAS 7 类:car, pedestrian, truck, bus, motorcycle, tricycle, traffic cone

送标数据湖路径

宿主机(默认 AS_DATA_LAKE_HOST = 仓库上级 ../data

类型 inbox 路径 project task
ADAS 2D 送标/adas/inbox/det_7cls/<batch>/ adas det_7cls
ADAS 3D 送标/adas/inbox/cuboid_7cls/<batch>/ adas cuboid_7cls
DMS 送标/dms/inbox/<profile>/<batch>/ dms 见 profile

批次目录示例见 lake/lake_example/。登记:批次台账 → 扫描数据湖 → 登记

部署时执行 bash scripts/seed_lake_example.sh(已包含在 init_after_clone.sh)可自动植入样例批次。

清空送标/标注 DB保留账号bash scripts/reset_labeling.sh


环境变量(.env

变量 默认 说明
AS_PLATFORM_PORT 8787 HSAP 端口
CVAT_PORT 8080 CVAT Traefik 端口
AS_DB_PORT 5433 PostgreSQL 宿主机端口
AS_REDIS_PORT 6380 Redis 宿主机端口
AS_WORKSPACE_ROOT 占位目录 DMS/Lane 大文件
AS_DATA_LAKE_HOST ../data 送标数据湖根
AS_FRONTEND_URL http://127.0.0.1:8787 浏览器访问 HSAP
CVAT_PUBLIC_URL http://127.0.0.1:8080 浏览器访问 CVAT

完整列表见 .env.example


数据挂载

# .env
AS_WORKSPACE_ROOT=/path/to/DATA/workspace
AS_DATA_LAKE_HOST=/path/to/DATA/data

bash scripts/setup_links.sh   # 可选:切换为 workspace 软链模式
docker compose up -d --build

确保 datasets/adas 指向数据湖(若缺失):

ln -sfn ../../data/送标/adas datasets/adas

本机直跑(不用 Docker 跑 Platform

pip install -r requirements.txt
bash scripts/init_after_clone.sh
bash scripts/run_local.sh
  • Job 默认 AS_JOB_EXECUTOR=thread
  • 无 PostgreSQL 时回退 SQLite
  • 标注需 CVAT 可达

仅基础设施用 Dockerdocker compose up -d postgres redis cvat_traefik cvat_server ...


认证(飞书 + PostgreSQL

cp manifests/feishu.env.example manifests/feishu.env
角色 权限
admin 全部 + 用户管理
reviewer 审核
engineer 送标开标、任务分配、build/train
labeler 我的标注、CVAT 保存
viewer 只读

CLI 示例

python as.py pending
python as.py add dms dam --src /path/to/batch ...
python as.py train dms dam --track local

维护者

从 workspace 刷新内嵌代码

bash scripts/vendor_workspace.sh
git add algorithms/ datasets/ manifests/repo_layout.json
git commit -m "chore: refresh vendored algorithm scaffolds"

同步到训练服务器

bash scripts/sync_to_server.sh user@host:/opt/HSAP

推送到 Git 远端

git status   # 确认无 .env、feishu.env、*.pt、送标图像
git push origin main

远端:https://git.sanyele.com/ChengFang.LU/HSAP.git


更多文档

文档 说明
docs/DEPLOY.md 新机器部署(含 §9 环境差异清单)
docs/HANDOVER.md 架构、API、运维、排障
docs/DEVELOPMENT_GUIDE.md 开发指南
lake/lake_example/README.md 数据湖 inbox 示例

Job 执行模式

AS_JOB_EXECUTOR 行为
worker Docker 默认Redis 队列 + worker
thread 本机调试API 进程内线程
Description
Huaxu Sentinel Active Safety Platform — 华胥主动安全算法迭代平台(DMS/Lane/ADAS)
Readme 29 MiB
Languages
Python 64.8%
TypeScript 31.4%
Shell 3%
CSS 0.6%