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

Перенесены 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
+9 -8
View File
@@ -1,10 +1,10 @@
FROM node:20-bookworm-slim AS web-builder
WORKDIR /web
COPY web-vue/package.json ./
COPY frontend/web/package.json ./
RUN npm install
COPY web-vue/ ./
COPY frontend/web/ ./
RUN npm run build
FROM ubuntu:24.04 AS builder
@@ -25,13 +25,13 @@ WORKDIR /src
COPY . .
RUN mkdir -p build && cd build \
&& qmake ../DotsToSirface.pro 'DEFINES+=PCL_ENABLED' \
&& qmake ../DotsToSurface.pro 'DEFINES+=PCL_ENABLED' \
&& make -j"$(nproc)"
FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
ENV DOTSTOSIRFACE_BIN=/usr/local/bin/DotsToSirface
ENV DOTSTOSURFACE_BIN=/usr/local/bin/DotsToSurface
ENV PIPELINE_CONFIG=/app/docker/default_pipeline.json
ENV USER_PRESETS_DIR=/app/data/user-presets
ENV PYTHONUNBUFFERED=1
@@ -58,13 +58,14 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1 \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /src/build/DotsToSirface /usr/local/bin/DotsToSirface
COPY --from=web-builder /web/dist /app/web-vue/dist
COPY api /app/api
COPY --from=builder /src/build/DotsToSurface /usr/local/bin/DotsToSurface
COPY --from=web-builder /web/dist /app/frontend/web/dist
COPY backend /app/backend
COPY docker /app/docker
COPY presets /app/presets
COPY assets /app/assets
WORKDIR /app/api
WORKDIR /app/backend
RUN python3 -m venv /opt/venv \
&& /opt/venv/bin/pip install --no-cache-dir -r requirements.txt
+44
View File
@@ -0,0 +1,44 @@
# Docker
**Infra** — сборка и запуск Web-стека (Frontend + Backend + Engine).
## Быстрый старт
Запуск **только в контейнере** (на хосте ставить Python/npm для работы приложения не нужно).
```bash
cd docker
docker compose up --build
# → http://localhost:8080
```
Или из корня репозитория:
```bash
./scripts/run-docker.sh # с логами в терминале
./scripts/run-docker.sh -d # в фоне
```
Если порт **8080** занят, в `docker-compose.yml` измените маппинг, например `"8081:8080"`.
Перед первым запуском должен быть запущен Docker Engine (`docker ps` без ошибки).
## Multi-stage сборка
| Stage | Результат |
|-------|-----------|
| `web-builder` | `frontend/web/dist` |
| `builder` | `DotsToSurface` binary |
| runtime | API + binary + dist |
## Runtime-контейнер
| Путь | Содержимое |
|------|------------|
| `/usr/local/bin/DotsToSurface` | C++ Engine (CLI) |
| `/app/frontend/web/dist` | Vue frontend |
| `/app/backend` | FastAPI |
**CMD:** `uvicorn main:app --host 0.0.0.0 --port 8080` (WORKDIR `/app/backend`)
См. также: [../ARCHITECTURE.md](../ARCHITECTURE.md)
+4 -4
View File
@@ -1,17 +1,17 @@
services:
dotstosirface-web:
dottosurface-web:
build:
context: ..
dockerfile: docker/Dockerfile
ports:
- "8080:8080"
environment:
DOTSTOSIRFACE_BIN: /usr/local/bin/DotsToSirface
DOTSTOSURFACE_BIN: /usr/local/bin/DotsToSurface
PIPELINE_CONFIG: /app/docker/default_pipeline.json
USER_PRESETS_DIR: /app/data/user-presets
volumes:
- ../presets:/app/presets:ro
- dotstosirface-user-presets:/app/data/user-presets
- dottosurface-user-presets:/app/data/user-presets
volumes:
dotstosirface-user-presets:
dottosurface-user-presets: