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 @@
## Configs
Config files in *PytorchAutoDrive* (`./configs/`) are used to define models,
how they are trained, tested, visualized, *etc*.
### Registry Mechanism
Different to existing class-based registers, we can also register functions.
For functions, you only write static args in your config,
while passing the dynamic ones on-the-fly by:
```
REGISTRY.from_dict(
<config dict for a function/class>,
kwarg1=1, kwarg2=2, ...
)
```
Note that each argument must be keyword (k=v), and some kwargs can overwrite dict configs.
### Use An Existing Config
Modify customized options like the root of your datasets (in `configs/*/common/_*.py`).
### Write A New Config
Copy the config file most similar to your use case and modify it.
Note that you can simply import config parts from `common` or other config files, it is like writing Python.
### Register A New Class/Func
Choose the appropriate registry and register your Class/Func by:
```
@REGISTRY.register()
```
Remember you still need to import this Class/Func for the registering to take effects.
### How To Read The Code
Since you can't just click 'go to definition' in your IDE,
it is suggested to search the directory for each Class/Function by `name` in configs.