feat: add selectable demo flow tasks

This commit is contained in:
2026-09-02 15:23:15 +08:00
parent f879328562
commit e3dc7ebe21
19 changed files with 871 additions and 110 deletions

View File

@@ -19,6 +19,7 @@ v2.2 变更:
from __future__ import annotations
import os
import re
import sys
import traceback
from pathlib import Path
@@ -33,6 +34,18 @@ from _plugin_io import (
)
def _task_no_from_name(name: object) -> str | None:
match = re.match(r"^任务\s*(\d+)", str(name or ""))
return match.group(1) if match else None
def _selected_task_nos(config: dict) -> set[str] | None:
raw = config.get("demoTaskNos")
if not isinstance(raw, list):
return None
return {str(int(value)) for value in raw if isinstance(value, (int, float)) and float(value).is_integer()}
def _to_float(value):
if value is None:
return None
@@ -155,6 +168,13 @@ def main() -> int:
if t.get("enabled", True)
}
tm.tasks = [t for t in tm.tasks if t.name in _enabled_names]
selected_task_nos = _selected_task_nos(config)
if selected_task_nos is not None:
available_task_nos = {_task_no_from_name(task.name) for task in tm.tasks}
missing_task_nos = selected_task_nos - available_task_nos
if missing_task_nos:
raise RuntimeError(f"测距配置中找不到所选任务:{','.join(sorted(missing_task_nos, key=int))}")
tm.tasks = [task for task in tm.tasks if _task_no_from_name(task.name) in selected_task_nos]
# 注入可视化输出目录
viz_dir = out_dir / "visualizations"