NODEDC_BIM_VIEWER/server
CODEX f5d6d622ec Update BIM comments data 2026-06-23 21:27:22 +03:00
..
data Update BIM comments data 2026-06-23 21:27:22 +03:00
README.md Configure BIM Synology deployment 2026-06-22 13:09:23 +03:00
index.js Sync BIM login state and stabilize zoom 2026-06-23 19:28:47 +03:00
package.json Initial import of NODEDC BIM Viewer 2026-06-04 13:25:42 +03:00

README.md

Server

Лёгкий файловый backend без внешних зависимостей.

Быстрый старт

  • Сервер: npm --prefix server start (PORT=8080 по умолчанию). Если порт занят, сервер попробует 8081/8082/8083 автоматически.
  • Ручной выбор порта: PORT=8088 npm --prefix server start
  • Клиент отдельно (только статика, без API): npx http-server frontend -p 9001 и открыть http://localhost:9001

Статика: раздаётся из ../frontend/dist, при отсутствии сборки — из ../frontend.

Хранилище: server/data/projects/index.json (список) + server/data/projects/proj_<id>.json (полный проект). Upload-артефакты лежат в server/data/uploads, публичные share-ссылки — в server/data/shares/index.json, а пользовательские ссылки/ref-count моделей — в server/data/models/registry.json. При старте директории и индексы создаются при необходимости.

API:

  • GET /api/projects[?type=project|template] — укороченный список из index.json.
  • GET /api/projects/:id — полный JSON проекта.
  • POST /api/projects — создать проект, генерируется id, createdAt, updatedAt, сохраняется файл и обновляется индекс.
  • POST /api/uploads?filename=<name>&projectId=<id> — сохранить оригинальный файл модели в server/data/uploads.
  • DELETE /api/uploads/asset — снять ссылку текущего пользователя на модель и физически удалить asset только если больше нет user/share refs.
  • DELETE /api/uploads/version — удалить версию, если на неё нет чужих refs или публичных share-ссылок.
  • GET /api/conversions/status?src=<uploads/...> — получить статус подготовки viewer-артефакта. Для .step/.stp ответ помечается conversion.status=conversion_required: оригинал уже доступен для скачивания, а preview должен появиться после работы NodeDcBimConverter, который готовит GLB и metadata/tree.

Локальный Beam compose:

  • docker compose -f docker-compose.beam.yml up ndc-beam-viewer
  • docker compose -f docker-compose.beam.yml up nodedc-bim-converter

Synology Beam compose:

  • скопировать .env.synology.example в .env рядом с docker-compose.beam.yml;
  • заполнить NODEDC_INTERNAL_ACCESS_TOKEN тем же значением, что и в platform .env.synology;
  • запустить docker compose -f docker-compose.beam.yml up -d ndc-beam-viewer nodedc-bim-converter.

Поле ownerId пока всегда null, но оставлено для будущих пользователей/шаринга.

NODE.DC auth/share:

  • NODEDC_BIM_AUTH_REQUIRED=1 включает вход через Launcher handoff.
  • NODEDC_BIM_SERVICE_SLUG=bim-viewer должен совпадать со slug сервиса в Launcher.
  • NODEDC_INTERNAL_ACCESS_TOKEN должен совпадать с Launcher internal token.
  • NODEDC_LAUNCHER_BASE_URL — публичный Launcher URL для редиректа на login/launch.
  • NODEDC_LAUNCHER_INTERNAL_URL — внутренний URL Launcher для /api/internal/handoff/consume.
  • NODEDC_BIM_PUBLIC_URL — публичный URL viewer-а для share-ссылок, на проде https://bim.nodedc.tech.
  • NODEDC_BIM_HOST_PORT — host-port для docker-compose.beam.yml; на Synology BIM публикуется как 18100:8080.
  • NODEDC_BIM_COOKIE_SAMESITE=None и NODEDC_BIM_COOKIE_SECURE=1 нужны для BIM в iframe на ops.nodedc.ru.
  • NODEDC_BIM_DATA_ROOT — опциональный корень файлового storage вместо server/data.
  • POST /api/shares создаёт публичную read-only ссылку на upload artifact; /share/<token> открывает viewer в guest mode.
  • GET /api/models возвращает личные активные модели текущего пользователя.
  • POST /api/models/refs сохраняет существующий upload artifact в личные модели текущего пользователя.
  • DELETE /api/models/refs снимает личную ссылку и удаляет физические файлы только при отсутствии других refs/share.