feat: add selectable demo flow tasks
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user