О проекте

Проблема: «Слепые зоны» 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 (безопасный прогон команд на исторической телеметрии).
SCADA & Digital Twin Control Plane Dashboard

Высоконагруженный 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 при пиковых нагрузках.
Описание
SCADA-система и 3D Цифровой двойник ГОК. Обработка 100k+ событий/сек (OPC UA /Redpanda /ClickHouse /NestJS /QraphQL /React /Godot).
Роль
Architect / Fullstack Developer
Стек
TypeScript, NestJS 11, React 19, Godot 4 (GDScript), Redpanda, Mosquitto MQTT, ClickHouse, PostgreSQL, Redis
Теги
SCADA Digital Twin Godot WebAssembly MQTT Redpanda NestJS ClickHouse PostgreSQL RLS