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)
This commit is contained in:
2026-06-03 11:40:21 +08:00
parent 7c43b44c57
commit e72bc061c5
5487 changed files with 979207 additions and 6197 deletions

View File

@@ -0,0 +1,43 @@
# addw_face37 点顺序与 Label Studio dms_pose.xml 中 kp_XX 标签一一对应
task: addw_face
kpt_shape: [37, 3]
class_names:
0: face
keypoints:
- {id: 0, label: kp_00}
- {id: 1, label: kp_01}
- {id: 2, label: kp_02}
- {id: 3, label: kp_03}
- {id: 4, label: kp_04}
- {id: 5, label: kp_05}
- {id: 6, label: kp_06}
- {id: 7, label: kp_07}
- {id: 8, label: kp_08}
- {id: 9, label: kp_09}
- {id: 10, label: kp_10}
- {id: 11, label: kp_11}
- {id: 12, label: kp_12}
- {id: 13, label: kp_13}
- {id: 14, label: kp_14}
- {id: 15, label: kp_15}
- {id: 16, label: kp_16}
- {id: 17, label: kp_17}
- {id: 18, label: kp_18}
- {id: 19, label: kp_19}
- {id: 20, label: kp_20}
- {id: 21, label: kp_21}
- {id: 22, label: kp_22}
- {id: 23, label: kp_23}
- {id: 24, label: kp_24}
- {id: 25, label: kp_25}
- {id: 26, label: kp_26}
- {id: 27, label: kp_27}
- {id: 28, label: kp_28}
- {id: 29, label: kp_29}
- {id: 30, label: kp_30}
- {id: 31, label: kp_31}
- {id: 32, label: kp_32}
- {id: 33, label: kp_33}
- {id: 34, label: kp_34}
- {id: 35, label: kp_35}
- {id: 36, label: kp_36}

View File

@@ -0,0 +1,7 @@
<View>
<Image name="image" value="$image"/>
<RectangleLabels name="label" toName="image">
<Label value="face" category="0"/>
<Label value="driver" category="14"/>
</RectangleLabels>
</View>

View File

@@ -0,0 +1,9 @@
<View>
<Image name="image" value="$image"/>
<RectangleLabels name="label" toName="image">
<Label value="face"/>
<Label value="eye_open"/>
<Label value="nod_eye"/>
<Label value="nod_face"/>
</RectangleLabels>
</View>

View File

@@ -0,0 +1,46 @@
<View>
<Image name="image" value="$image" zoom="true"/>
<RectangleLabels name="bbox" toName="image">
<Label value="face"/>
</RectangleLabels>
<KeyPointLabels name="kpts" toName="image" choice="single">
<Label value="kp_00" maxUsages="1"/>
<Label value="kp_01" maxUsages="1"/>
<Label value="kp_02" maxUsages="1"/>
<Label value="kp_03" maxUsages="1"/>
<Label value="kp_04" maxUsages="1"/>
<Label value="kp_05" maxUsages="1"/>
<Label value="kp_06" maxUsages="1"/>
<Label value="kp_07" maxUsages="1"/>
<Label value="kp_08" maxUsages="1"/>
<Label value="kp_09" maxUsages="1"/>
<Label value="kp_10" maxUsages="1"/>
<Label value="kp_11" maxUsages="1"/>
<Label value="kp_12" maxUsages="1"/>
<Label value="kp_13" maxUsages="1"/>
<Label value="kp_14" maxUsages="1"/>
<Label value="kp_15" maxUsages="1"/>
<Label value="kp_16" maxUsages="1"/>
<Label value="kp_17" maxUsages="1"/>
<Label value="kp_18" maxUsages="1"/>
<Label value="kp_19" maxUsages="1"/>
<Label value="kp_20" maxUsages="1"/>
<Label value="kp_21" maxUsages="1"/>
<Label value="kp_22" maxUsages="1"/>
<Label value="kp_23" maxUsages="1"/>
<Label value="kp_24" maxUsages="1"/>
<Label value="kp_25" maxUsages="1"/>
<Label value="kp_26" maxUsages="1"/>
<Label value="kp_27" maxUsages="1"/>
<Label value="kp_28" maxUsages="1"/>
<Label value="kp_29" maxUsages="1"/>
<Label value="kp_30" maxUsages="1"/>
<Label value="kp_31" maxUsages="1"/>
<Label value="kp_32" maxUsages="1"/>
<Label value="kp_33" maxUsages="1"/>
<Label value="kp_34" maxUsages="1"/>
<Label value="kp_35" maxUsages="1"/>
<Label value="kp_36" maxUsages="1"/>
</KeyPointLabels>
</View>