Добавить Vue 3 web-dashboard с расширенным API и Docker-сборкой.

Полноценный браузерный UI (Pinia, Three.js) с паритетом Qt: редактор цепочки, wizard, пресеты, метрики и 3D viewer; API расширен для catalog/validate/demo/user-presets; CLI отдаёт step metrics в JSON.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-18 14:53:53 +03:00
co-authored by Cursor
parent 45b2ed6e22
commit 18a58f2e85
33 changed files with 4304 additions and 56 deletions
+80
View File
@@ -0,0 +1,80 @@
"""Built-in pipeline presets (mirrors MainWindow::applyPreset)."""
from __future__ import annotations
from typing import Any
BUILTIN_PRESETS: list[dict[str, Any]] = [
{
"title": "LiDAR-скан",
"idValue": "LiDAR_scan",
"config": {
"profile": "desktop_debug",
"preprocessPlugins": [
"pcl_remove_nan",
"keep_largest_cluster",
"pcl_statistical_outlier",
"pcl_voxel_grid",
],
"reconstructionPlugin": "surface_fallback",
"stageDefaults": {},
},
},
{
"title": "RGB-D камера",
"idValue": "RGBD_camera",
"config": {
"profile": "desktop_debug",
"preprocessPlugins": [
"pcl_remove_nan",
"pcl_statistical_outlier",
"pcl_radius_outlier",
"pcl_voxel_grid",
],
"reconstructionPlugin": "pcl_greedy_triangulation",
"stageDefaults": {},
},
},
{
"title": "Синтетика",
"idValue": "Synthetic_clean",
"config": {
"profile": "desktop_debug",
"preprocessPlugins": ["pcl_remove_nan", "downsample_dense", "pcl_voxel_grid"],
"reconstructionPlugin": "pcl_greedy_triangulation",
"stageDefaults": {},
},
},
{
"title": "Fast",
"idValue": "Fast",
"config": {
"profile": "desktop_debug",
"preprocessPlugins": ["pcl_remove_nan", "pcl_voxel_grid"],
"reconstructionPlugin": "surface_fallback",
"stageDefaults": {},
},
},
{
"title": "Robust",
"idValue": "Robust",
"config": {
"profile": "desktop_debug",
"preprocessPlugins": [
"pcl_remove_nan",
"pcl_voxel_grid",
"pcl_statistical_outlier",
"pcl_radius_outlier",
],
"reconstructionPlugin": "surface_fallback",
"stageDefaults": {},
},
},
]
def get_builtin_preset(preset_id: str) -> dict[str, Any] | None:
for preset in BUILTIN_PRESETS:
if preset["idValue"] == preset_id:
return preset
return None