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>
This commit is contained in:
2026-06-16 17:06:31 +08:00
parent 0b8ade048e
commit 483e027482
117 changed files with 5933 additions and 1499 deletions

View File

@@ -370,11 +370,11 @@ def append_log(root: Path, record: dict) -> None:
f.write(json.dumps(record, ensure_ascii=False) + "\n")
def run_refresh(root: Path) -> None:
subprocess.run(
[sys.executable, str(SCRIPT_DIR / "refresh_yaml.py"), "--root", str(root)],
check=True,
)
def run_refresh(root: Path, task: str | None = None) -> None:
cmd = [sys.executable, str(SCRIPT_DIR / "refresh_yaml.py"), "--root", str(root)]
if task:
cmd.extend(["--task", task])
subprocess.run(cmd, check=True)
def ingest_one(
@@ -588,7 +588,7 @@ def promote_inbox_batch(
if not dry_run:
append_log(root.resolve(), {"src": str(src), "pack": pack, **result})
if refresh:
run_refresh(root.resolve())
run_refresh(root.resolve(), task=task)
return result

View File

@@ -36,7 +36,18 @@ def resolve_pack_dir(root: Path, pack_name: str) -> Path:
name = reg.get("aliases", {}).get(pack_name, pack_name)
for item in reg.get("packs", []):
if item.get("name") == name:
return (root / item["path"]).resolve()
candidate = root / item["path"]
if candidate.is_symlink():
try:
resolved = candidate.resolve()
if resolved.is_dir():
return resolved
except OSError:
pass
if not candidate.exists():
candidate.unlink()
candidate.mkdir(parents=True, exist_ok=True)
return candidate.resolve()
candidate = root / name
if candidate.is_dir():
return candidate.resolve()