Реструктуризация проекта и генератор синтетических датасетов эхолота.

Перенесены backend/frontend/desktop/engine, добавлены вкладки конструктора сцен и генератора датасета с параметрами лучей и длины сетки рельефа, обновлены API и Docker-сборка.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-17 12:25:00 +03:00
co-authored by Cursor
parent 18a58f2e85
commit 4f253b860f
134 changed files with 5263 additions and 863 deletions
+38 -24
View File
@@ -1,4 +1,19 @@
# DotsToSirface (Qt 5.11)
# DotsToSurface (Qt 5.11)
## Структура репозитория
| Слой | Папка | Назначение |
|------|-------|------------|
| **Engine** | `src/engine/` | C++ пайплайн, PCL, CLI `--cli` |
| **Backend** | `backend/` | FastAPI — HTTP-обёртка над CLI |
| **Frontend (Web)** | `frontend/web/` | Vue 3 dashboard + Three.js |
| **Frontend (Desktop)** | `src/desktop/` | Qt QML dashboard |
Подробнее: [ARCHITECTURE.md](ARCHITECTURE.md)
Сборка Web-версии полностью воспроизводится в Docker (`docker compose up --build`). В git — исходники; артефакты (`build/`, `frontend/web/dist/`) не коммитятся.
---
Демонстрационная программа на Qt 5.11 C++, которая:
- принимает массив 3D-точек `QVector<Point3f>`;
@@ -7,7 +22,7 @@
## Вход/выход API
`src/algorithms/reconstruction/surface_reconstruction.h`:
`src/engine/algorithms/reconstruction/surface_reconstruction.h`:
- `struct Point3f { float x, y, z; };`
- `struct Triangle { int i0, i1, i2; };`
@@ -38,7 +53,7 @@
## Этап 1 (backend-first, без CLI)
- Парсинг и применение `defaults` параметров стадий вынесены из UI в `core`:
`src/core/pipeline_stage_defaults.h` и `src/core/pipeline_stage_defaults.cpp`.
`src/engine/core/pipeline_stage_defaults.h` и `src/engine/core/pipeline_stage_defaults.cpp`.
- `MainWindow` больше не содержит backend-логику разбора параметров, а вызывает
`core::applyStageDefaultsToConfig(...)`.
- Это позволяет использовать один и тот же backend API из GUI сейчас и из будущего
@@ -78,10 +93,10 @@
Рабочий поток для этого проекта на Windows: собирать и запускать через WSL.
```bash
cd /mnt/d/yakupov/Projects/DotsToSirface/build-wsl
qmake ../DotsToSirface.pro 'DEFINES+=PCL_ENABLED'
cd /mnt/d/yakupov/Projects/DotsToSurface/build-wsl
qmake ../DotsToSurface.pro 'DEFINES+=PCL_ENABLED'
make -j4
LIBGL_ALWAYS_SOFTWARE=1 QT_QPA_PLATFORM=xcb ./DotsToSirface
LIBGL_ALWAYS_SOFTWARE=1 QT_QPA_PLATFORM=xcb ./DotsToSurface
```
Примечания:
@@ -92,22 +107,22 @@ LIBGL_ALWAYS_SOFTWARE=1 QT_QPA_PLATFORM=xcb ./DotsToSirface
Перезапуск после правок:
```bash
pkill -f '^./DotsToSirface$' || true
cd /mnt/d/yakupov/Projects/DotsToSirface/build-wsl
qmake ../DotsToSirface.pro 'DEFINES+=PCL_ENABLED'
pkill -f '^./DotsToSurface$' || true
cd /mnt/d/yakupov/Projects/DotsToSurface/build-wsl
qmake ../DotsToSurface.pro 'DEFINES+=PCL_ENABLED'
make -j4
LIBGL_ALWAYS_SOFTWARE=1 QT_QPA_PLATFORM=xcb ./DotsToSirface
LIBGL_ALWAYS_SOFTWARE=1 QT_QPA_PLATFORM=xcb ./DotsToSurface
```
## Smoke tests (отдельный runner)
Для быстрой проверки пайплайна без GUI добавлен отдельный консольный таргет:
`DotsToSirfaceTests.pro`.
`DotsToSurfaceTests.pro`.
```bash
qmake DotsToSirfaceTests.pro
qmake DotsToSurfaceTests.pro
make
./release/DotsToSirfaceTests.exe
./release/DotsToSurfaceTests.exe
```
При успешном запуске runner печатает `Smoke tests passed.` и завершаетcя с кодом `0`.
@@ -119,10 +134,10 @@ make
Пример:
```bash
cd /mnt/d/yakupov/Projects/DotsToSirface/build-wsl
qmake ../DotsToSirface.pro 'DEFINES+=PCL_ENABLED'
cd /mnt/d/yakupov/Projects/DotsToSurface/build-wsl
qmake ../DotsToSurface.pro 'DEFINES+=PCL_ENABLED'
make -j4
./DotsToSirface --cli \
./DotsToSurface --cli \
--input /mnt/d/path/to/cloud.xyz \
--profile desktop_debug \
--preprocess pcl_remove_nan,pcl_voxel_grid,pcl_statistical_outlier \
@@ -155,7 +170,7 @@ CLI печатает краткую сводку по метрикам (`input`,
Запуск:
```bash
./DotsToSirface --cli --input /mnt/d/path/to/cloud.xyz --config-json /mnt/d/path/to/pipeline_config.json
./DotsToSurface --cli --input /mnt/d/path/to/cloud.xyz --config-json /mnt/d/path/to/pipeline_config.json
```
Если одновременно переданы `--config-json` и обычные CLI-флаги (`--preprocess`, `--reconstruction`, `--stage-default`), флаги командной строки имеют приоритет.
@@ -193,7 +208,7 @@ CLI печатает краткую сводку по метрикам (`input`,
Запуск:
```bash
./DotsToSirface --cli \
./DotsToSurface --cli \
--input /mnt/d/path/to/cloud.xyz \
--autotune-config /mnt/d/path/to/autotune_config.json
```
@@ -208,13 +223,12 @@ CLI печатает краткую сводку по метрикам (`input`,
Для запуска пайплайна с PCL в изолированной среде (без конфликтов с `libpq` на хосте) добавлены:
- `docker/Dockerfile` — сборка `DotsToSirface` с `PCL_ENABLED` + Vue 3 dashboard;
- `docker/Dockerfile` — сборка `DotsToSurface` с `PCL_ENABLED` + Vue 3 dashboard;
- `docker/docker-compose.yml`;
- `api/main.py` — HTTP API (`/api/run`, `/api/presets`, `/api/validate-config`, …);
- `web-vue/` — Vue 3 + Pinia + Three.js (полный dashboard, паритет с Qt);
- `web/` — legacy MVP (fallback, если Vue `dist` не собран).
- `backend/main.py` — HTTP API (`/api/run`, `/api/presets`, `/api/validate-config`, …);
- `frontend/web/` — Vue 3 + Pinia + Three.js (полный dashboard, паритет с Qt);
**Qt desktop (`./DotsToSirface`) сохраняется** как локальный fallback без Docker.
**Qt desktop (`./DotsToSurface`) сохраняется** как локальный fallback без Docker.
### Быстрый старт
@@ -228,7 +242,7 @@ docker compose up --build
### Локальная разработка frontend
```bash
cd web-vue
cd frontend/web
npm install
npm run dev
```