О проекте
Проблема: «Слепые зоны» 2D-мнемосхем и критические задержки телеметрии (до 5 сек), приводящие к аварийным простоям горнотранспортного комплекса.
Решение: Разработка 3D-двойника фабрики. Внедрен IoT-пайплайн (MQTT → Redpanda) для 2500+ ПЛК. HMI-интерфейс перенесен в браузер на связке React и Godot 4.
Результат: Задержка телеметрии снижена до 40 мс. Интерактивный 3D-мониторинг 15 000+ сенсоров поверх оборудования (Faceplates). Отправка команд — менее 10 мс.
Стек технологий
- Frontend & 3D: React 19, TypeScript, Godot 4 (GDScript, WebAssembly, WebGL), Zustand, Apollo GraphQL.
- Backend & Microservices: NestJS 11, Node.js, GraphQL, PostgreSQL (RLS), Redis.
- Data Pipeline & IoT: Redpanda (Kafka-compatible), Mosquitto MQTT, ClickHouse (TSDB), ESP32 Edge Devices.
- Infrastructure & Observability: Docker Compose, OpenTelemetry (Arize Phoenix), Prometheus Metrics, Opossum Circuit Breaker.
Архитектура и Управление (Control Plane)
- Событийная микросервисная архитектура: Единый Docker-образ NestJS с разделением ролей (api, telemetry-ingest, storage-consumer, command-gateway, outbox-worker).
- Command Center & Транзакции: Реализация Outbox Pattern в PostgreSQL для гарантированной публикации команд управления в Redpanda, защита от split-brain и частичных сбоев.
- Two-Phase ACK Contract: Двухфазное подтверждение исполнения команд оборудованием (requested → sent → acked/rejected).
- Rules Engine: Декларативные JSON-правила для автоматики с функцией Deterministic Dry-Run (безопасный прогон команд на исторической телеметрии).

Высоконагруженный Data Pipeline
- Edge & Ingest (MQTT): Прием сырой телеметрии от оборудования и ESP32 через Mosquitto. Жесткая валидация payload (< 8KB) и генерация UUIDv7 (event_id/boot_id) для time-sorted индексации.
- Стриминг (Redpanda): Высокоскоростная маршрутизация и буферизация событий телеметрии (топики raw.v1 / invalid.v1).
- Дедупликация и Rate Limiting: Защита шины данных на уровне Redis (алгоритм Token Bucket) и фильтрация дублирующихся пакетов от нестабильных edge-устройств.
- Хранилище временных рядов (ClickHouse): Realtime-агрегация метрик, хранение исторических графов и аудит сессий в колоночной TSDB.
Интеграция Godot 4 WebAssembly и React
- 3D Digital Twin в браузере: Компиляция тяжелой сцены цеха из Godot 4 в WebAssembly (WebGL runtime) и нативная интеграция в React-приложение.
- Schema-Versioned JS Bridge: Двусторонний типизированный postMessage-контракт между React UI и движком Godot (инициализация godot:ready → renderer:capabilities).
- Интеллектуальный 3D-маппинг: Привязка поступающей телеметрии к .glb-объектам на сцене. Реализация умных ракурсов камеры (overview / topology / asset) при клике на станок.
- World-Anchored HUD: Динамический рендеринг HTML-интерфейсов поверх WebGL-канваса с отслеживанием 3D-координат (статусы LOADING / READY / ERROR парят прямо над моделями оборудования).
Observability и Изоляция данных
- Multi-tenancy (PostgreSQL RLS): Изоляция данных заказчиков и цехов (workspace/tenant) на уровне базы данных с помощью Row-Level Security.
- Audit Log Explorer: Глубокий аудит изменений активов и сцен с diff-анализом и строгой проверкой прав (Four-Eyes Approval для критических команд).
- Сквозной мониторинг: Трейсинг всего пути сигнала от Edge-устройства до базы через OpenTelemetry. Защита баз данных паттерном Circuit Breaker при пиковых нагрузках.