Перейти к содержанию

Приложение Д. Исходные тексты схем Mermaid

Приложение содержит исходный Mermaid-код графических схем ПД. Диаграммы остаются в основных разделах и приложениях документа, а этот раздел предназначен для копирования, проверки и редактирования кода схем в Mermaid-редакторе.

Перечень схем

Код Раздел / приложение Расположение
ПД-MER-001 2.1. Участники взаимодействия Раздел 2. Описание автоматизируемых функций
ПД-MER-002 А.1. Контекст решения Приложение А. Схема функциональной структуры (С2)
ПД-MER-003 А.2.1. Пользовательский и прикладной контур Приложение А. Схема функциональной структуры (С2)
ПД-MER-004 А.2.2. Событийный обмен Приложение А. Схема функциональной структуры (С2)
ПД-MER-005 А.2.3. Данные и хранилища Приложение А. Схема функциональной структуры (С2)
ПД-MER-006 А.2.4. Эксплуатационная инфраструктура Приложение А. Схема функциональной структуры (С2)
ПД-MER-007 А.3. Ключевые потоки данных Приложение А. Схема функциональной структуры (С2)
ПД-MER-008 Б.1. Общая схема соединений по группам сервисов Приложение Б. Схема соединений (С4)
ПД-MER-009 Б.2.1. ui-rest: внешний вход и API gateway Приложение Б. Схема соединений (С4)
ПД-MER-010 Б.2.2. statistics: авторизация, события, отчёты и аудит Приложение Б. Схема соединений (С4)
ПД-MER-011 Б.2.3. inference и extended-inference: медиаконтур и NRI Приложение Б. Схема соединений (С4)
ПД-MER-012 Б.2.4. severstal: интеграционный контур с системами заказчика Приложение Б. Схема соединений (С4)
ПД-MER-013 Б.2.5. Инфраструктурные домены: kafka-domain, data-storage, elk-log Приложение Б. Схема соединений (С4)
ПД-MER-014 Б.2.6. node-red-sandbox: песочница сценариев Приложение Б. Схема соединений (С4)
ПД-MER-015 В.1. Схема внешних взаимодействий Приложение В. Реестр внешних систем

Исходные тексты Mermaid

ПД-MER-001. 2.1. Участники взаимодействия

Расположение схемы: Раздел 2. Описание автоматизируемых функций.

flowchart LR
    users["Пользовательские роли<br/>функциональный администратор, эксперт, аналитик, ОТиПБ"] --> ui["Web UI и API BOX5-DIT-MGSN"]
    ui --> core["Внутренние подсистемы BOX5-DIT-MGSN"]
    core --> data["Kafka, хранилища, наблюдаемость"]
    core --> ext["Внешние системы и источники данных"]
    svc["Сервисные учётные записи"] --> core
    sysadmins["Системные администраторы"] --> ops["Контур развёртывания<br/>конфигурация, мониторинг, сопровождение"]
    ops --> core
    ops --> data

ПД-MER-002. А.1. Контекст решения

Расположение схемы: Приложение А. Схема функциональной структуры (С2).

flowchart LR
  classDef external fill:#fff7e6,stroke:#b7791f,color:#1f2937;
  classDef user fill:#eef6ff,stroke:#2563eb,color:#1f2937;
  classDef core fill:#eefaf3,stroke:#15803d,color:#1f2937;

  subgraph users["Пользователи"]
    operator["Эксперт центра компетенций<br/>События и сценарии"]
    admin["Функциональный администратор<br/>Полный доступ в UI"]
    engineer["Аналитик данных<br/>Камеры, модели, сценарии"]
    otipb["Сотрудник ОТиПБ<br/>Видео и нарушения"]
  end

  subgraph sources["Источники данных"]
    cameras["IP-камеры<br/>live-видеопотоки"]
    vms["CSVN / VMS<br/>Cisco, Milestone, Macroscop<br/>архивные записи"]
    virtualVideo["Виртуальные камеры<br/>подгруженные видеозаписи"]
    asutp["АСУ ТП<br/>сигналы и состояния"]
    pkkot["ПК-КОТ<br/>справочники и статусы"]
    keycloak["Keycloak / OpenID Connect<br/>SSO-авторизация"]
  end

  sova["ИТ-решение BOX5-DIT-MGSN<br/>видеоаналитика, события,<br/>интеграционный контур"]

  subgraph consumers["Внешние получатели данных"]
    notify["Email<br/>канал уведомлений"]
    extApi["Внешние API<br/>получателей данных"]
  end

  operator -->|"видео, нарушения,<br/>сценарии и модели"| sova
  admin -->|"полный доступ<br/>по всем площадкам"| sova
  engineer -->|"камеры, модели,<br/>сценарии и нарушения"| sova
  otipb -->|"просмотр видео,<br/>нарушения вручную"| sova

  cameras -->|"RTSP<br/>прямой видеопоток"| sova
  vms -->|"API систем видеонаблюдения<br/>архивные видеозаписи"| sova
  virtualVideo -->|"HTTP / MP4<br/>файлы для анализа"| sova
  asutp -->|"Kafka / Avro"| sova
  pkkot -->|"PostgreSQL / HTTP"| sova
  keycloak -->|"OIDC / authorization code"| sova

  sova -->|"email-уведомления"| notify
  sova -->|"события,<br/>статусы, медиа"| extApi

  class operator,admin,engineer,otipb user;
  class cameras,vms,virtualVideo,asutp,pkkot,keycloak,notify,extApi external;
  class sova core;

ПД-MER-003. А.2.1. Пользовательский и прикладной контур

Расположение схемы: Приложение А. Схема функциональной структуры (С2).

flowchart LR
  classDef core fill:#eefaf3,stroke:#15803d,color:#1f2937;
  classDef edge fill:#eef6ff,stroke:#2563eb,color:#1f2937;

  ui["Пользовательский контур<br/>ui-rest"]
  stats["Статистика и события<br/>statistics"]
  inf["Видеоаналитика и инференс<br/>inference, extended-inference"]
  svr["Интеграционный контур<br/>severstal"]
  sandbox["Песочница сценариев<br/>node-red-sandbox"]

  ui -->|"API-доступ"| stats
  ui -->|"управление<br/>видеоаналитикой"| inf
  ui -->|"customer-domain API"| svr
  ui -->|"работа<br/>со сценариями"| sandbox
  stats -->|"лента событий,<br/>отчёты"| ui

  class ui edge;
  class stats,inf,svr,sandbox core;

ПД-MER-004. А.2.2. Событийный обмен

Расположение схемы: Приложение А. Схема функциональной структуры (С2).

flowchart TB
  classDef core fill:#eefaf3,stroke:#15803d,color:#1f2937;
  classDef infra fill:#f5f3ff,stroke:#6d28d9,color:#1f2937;

  kafka[("Событийная шина<br/>kafka-domain")]
  inf["inference,<br/>extended-inference"]
  stats["statistics"]
  svr["severstal"]
  sandbox["node-red-sandbox"]

  inf <-->|"результаты,<br/>heartbeats"| kafka
  stats <-->|"события,<br/>команды"| kafka
  svr <-->|"синхронизация,<br/>статусы"| kafka
  sandbox -->|"модельные<br/>и sandbox-события"| kafka

  class inf,stats,svr,sandbox core;
  class kafka infra;

ПД-MER-005. А.2.3. Данные и хранилища

Расположение схемы: Приложение А. Схема функциональной структуры (С2).

flowchart LR
  classDef core fill:#eefaf3,stroke:#15803d,color:#1f2937;
  classDef infra fill:#f5f3ff,stroke:#6d28d9,color:#1f2937;

  stats["statistics"]
  inf["inference"]
  svr["severstal"]

  subgraph stores["Хранилища данных"]
    pg[("PostgreSQL")]
    ch[("ClickHouse")]
    redis[("Redis")]
    minio[("MinIO / DTS")]
  end

  stats -->|"пользователи,<br/>камеры, события"| pg
  stats -->|"аналитика,<br/>витрины"| ch
  inf -->|"модели,<br/>состояние"| pg
  inf -->|"изображения,<br/>видеофрагменты"| minio
  svr -->|"справочники,<br/>сценарии, активы"| pg
  svr -->|"медиа<br/>и файлы"| minio

  class stats,inf,svr core;
  class pg,ch,redis,minio infra;

ПД-MER-006. А.2.4. Эксплуатационная инфраструктура

Расположение схемы: Приложение А. Схема функциональной структуры (С2).

flowchart LR
  classDef core fill:#eefaf3,stroke:#15803d,color:#1f2937;
  classDef infra fill:#f5f3ff,stroke:#6d28d9,color:#1f2937;

  domains["Подсистемы BOX5-DIT-MGSN<br/>ui-rest, statistics, inference,<br/>severstal, node-red-sandbox"]
  obs["Наблюдаемость<br/>elk-log"]

  domains -.->|"логи,<br/>метрики"| obs

  class domains core;
  class obs infra;

ПД-MER-007. А.3. Ключевые потоки данных

Расположение схемы: Приложение А. Схема функциональной структуры (С2).

flowchart TB
  classDef external fill:#fff7e6,stroke:#b7791f,color:#1f2937;
  classDef core fill:#eefaf3,stroke:#15803d,color:#1f2937;
  classDef infra fill:#f5f3ff,stroke:#6d28d9,color:#1f2937;

  cameras["IP-камеры<br/>RTSP live"]
  virtualVideo["Виртуальные камеры<br/>подгруженные записи"]
  media["Медиасервер<br/>и балансировщик"]
  nri["NRI-инференс"]
  kafka[("Kafka")]
  stats["Статистика и события"]
  ui["Web UI"]

  severstalSrc["ПК-КОТ, CSVN/VMS, АСУ ТП"]
  svr["Интеграционный контур"]
  storage[("PostgreSQL / ClickHouse / MinIO / Redis")]

  engineer["Аналитик данных"]
  sandbox["Node-RED Sandbox"]
  notify["Email / внешние API"]
  obs["Prometheus / Loki"]

  cameras -->|"live-видео"| media
  virtualVideo -->|"видеофайл / URL"| media
  media -->|"кадры"| nri
  nri -->|"события,<br/>heartbeat"| kafka
  kafka -->|"принятые события"| stats
  stats -->|"лента событий,<br/>отчёты"| ui
  stats -->|"события и медиа"| notify

  severstalSrc -->|"справочники,<br/>топология, архивы,<br/>сигналы"| svr
  svr -->|"нормализованные данные"| kafka
  svr -->|"справочники<br/>и сценарии"| storage
  stats -->|"события,<br/>отчёты, аудит"| storage
  nri -->|"изображения,<br/>видеофрагменты"| storage

  engineer -->|"разработка"| sandbox
  sandbox -->|"версии сценариев"| svr
  sandbox -->|"flows и модели"| nri

  media -.->|"метрики и логи"| obs
  nri -.->|"метрики и логи"| obs
  stats -.->|"метрики и логи"| obs
  svr -.->|"метрики и логи"| obs

  class cameras,virtualVideo,severstalSrc,engineer,notify external;
  class media,nri,stats,ui,svr,sandbox core;
  class kafka,storage,obs infra;

ПД-MER-008. Б.1. Общая схема соединений по группам сервисов

Расположение схемы: Приложение Б. Схема соединений (С4).

flowchart LR
  classDef external fill:#fff7e6,stroke:#b7791f,color:#1f2937;
  classDef edge fill:#eef6ff,stroke:#2563eb,color:#1f2937;
  classDef domain fill:#eefaf3,stroke:#15803d,color:#1f2937;
  classDef infra fill:#f5f3ff,stroke:#6d28d9,color:#1f2937;
  classDef sandboxCls fill:#fff1f2,stroke:#be123c,color:#1f2937;

  users["Пользователи<br/>web UI"]
  video["IP-камеры,<br/>CSVN/VMS,<br/>виртуальные камеры"]
  industrial["ПК-КОТ,<br/>АСУ ТП"]
  sso["Keycloak / OIDC"]
  email["SMTP / Email"]
  externalApi["Внешние системы<br/>получатели данных"]

  ui["ui-rest<br/>edge и API gateway"]
  stats["statistics<br/>события, отчёты, аудит, auth"]
  inference["inference + extended-inference<br/>медиа, NRI, модели, ресурсы"]
  severstal["severstal<br/>интеграционный контур"]
  kafka["kafka-domain<br/>основная событийная шина"]
  data["data-storage<br/>MinIO / DTS"]
  obs["elk-log<br/>Prometheus / Loki"]
  sandbox["node-red-sandbox<br/>подготовка сценариев"]

  users -->|"HTTP/HTTPS, WS"| ui
  sso -->|"OIDC authorization code"| users
  video -->|"RTSP, VMS API, HTTP upload"| inference
  video -->|"VMS API, архивы"| severstal
  industrial -->|"PostgreSQL, HTTP, Kafka/Avro"| severstal

  ui -->|"HTTP/gRPC, REST"| stats
  ui -->|"HTTP/gRPC, REST"| inference
  ui -->|"customer-domain API"| severstal
  ui -->|"S3 proxy"| data
  ui -->|"/sandbox"| sandbox

  stats <-->|"events, audit, commands"| kafka
  inference <-->|"inference events, heartbeats"| kafka
  severstal <-->|"sync, statuses, events"| kafka
  sandbox -.->|"публикация flows"| ui

  stats -->|"SMTP"| email
  stats -->|"события, отчёты, медиа"| externalApi
  severstal -->|"event statuses"| externalApi

  stats -->|"files, media"| data
  inference -->|"images, video fragments"| data
  severstal -->|"files, exports"| data

  stats -.->|"metrics, logs"| obs
  inference -.->|"metrics, logs"| obs
  severstal -.->|"metrics, logs"| obs
  ui -.->|"logs"| obs
  class users,video,industrial,sso,email,externalApi external;
  class ui edge;
  class stats,inference,severstal domain;
  class kafka,data,obs infra;
  class sandbox sandboxCls;

ПД-MER-009. Б.2.1. ui-rest: внешний вход и API gateway

Расположение схемы: Приложение Б. Схема соединений (С4).

flowchart LR
  classDef external fill:#fff7e6,stroke:#b7791f,color:#1f2937;
  classDef edge fill:#eef6ff,stroke:#2563eb,color:#1f2937;
  classDef domain fill:#eefaf3,stroke:#15803d,color:#1f2937;
  classDef infra fill:#f5f3ff,stroke:#6d28d9,color:#1f2937;

  browser["Пользовательский браузер"]
  nginx["ui-nginx<br/>80, 443"]
  react["ui-react<br/>SPA HTTP 8000"]
  gateway["ui-rest-to-gprc<br/>REST / GraphQL / WS"]

  stats["statistics services"]
  inf["inference services"]
  svr["severstal services"]
  minio["ds-minio / DTS"]
  kafka["inf-kafka"]
  clickhouse["ClickHouse<br/>analytics routes"]
  sandbox["node-red-sandbox-nginx"]

  browser -->|"HTTP/HTTPS"| nginx
  nginx -->|"/"| react
  nginx -->|"/api/*, /api/ws, /api/graphql"| gateway
  nginx -->|"/api/s3*"| minio
  nginx -->|"/sandbox/"| sandbox

  gateway -->|"HTTP/gRPC"| stats
  gateway -->|"HTTP/gRPC, REST"| inf
  gateway -->|"CUSTOM_DOMAINS=[severstal]"| svr
  gateway -->|"S3 API / files"| minio
  gateway -->|"Kafka audit/ws"| kafka
  gateway -->|"ClickHouse client"| clickhouse

  class browser external;
  class nginx,react,gateway edge;
  class stats,inf,svr domain;
  class minio,kafka,clickhouse,sandbox infra;

ПД-MER-010. Б.2.2. statistics: авторизация, события, отчёты и аудит

Расположение схемы: Приложение Б. Схема соединений (С4).

flowchart TB
  classDef edge fill:#eef6ff,stroke:#2563eb,color:#1f2937;
  classDef service fill:#eefaf3,stroke:#15803d,color:#1f2937;
  classDef data fill:#f5f3ff,stroke:#6d28d9,color:#1f2937;
  classDef external fill:#fff7e6,stroke:#b7791f,color:#1f2937;

  gateway["ui-rest-to-gprc"]
  keycloak["Keycloak / OIDC"]
  smtp["SMTP / Email"]
  kafka["inf-kafka"]
  minio["ds-minio / DTS"]

  auth["st-auth"]
  access["st-access"]
  camera["st-camera-storage"]
  event["st-event-storage"]
  statistic["st-event-statistic"]
  audit["st-audit"]
  reportEmail["st-report-email"]
  reportPdf["st-report-pdf-xlsx-generator"]

  pg[("PostgreSQL sidecars")]
  redis[("Redis sidecars")]
  ch[("ClickHouse sidecars")]

  gateway -->|"HTTP/gRPC"| auth
  gateway -->|"HTTP/gRPC"| access
  gateway -->|"HTTP/gRPC"| camera
  gateway -->|"HTTP/gRPC"| event
  gateway -->|"HTTP/gRPC"| statistic
  gateway -->|"HTTP/gRPC"| audit
  gateway -->|"HTTP/gRPC"| reportEmail
  gateway -->|"HTTP/gRPC"| reportPdf

  auth -->|"OIDC code exchange"| keycloak
  auth -->|"SMTP reset mail"| smtp
  reportEmail -->|"SMTP notifications"| smtp

  camera <-->|"camera/object topics"| kafka
  event <-->|"event topics"| kafka
  statistic <-->|"event analytics topics"| kafka
  audit <-->|"add_audit_record"| kafka
  access -->|"privilege topics"| kafka
  reportEmail <-->|"notification topics"| kafka

  auth --> pg
  access --> pg
  camera --> pg
  event --> pg
  statistic --> ch
  audit --> pg
  reportEmail --> pg
  reportPdf --> minio
  event --> minio
  camera --> minio
  auth --> redis
  access --> redis

  class gateway edge;
  class auth,access,camera,event,statistic,audit,reportEmail,reportPdf service;
  class pg,redis,ch,kafka,minio data;
  class keycloak,smtp external;

ПД-MER-011. Б.2.3. inference и extended-inference: медиаконтур и NRI

Расположение схемы: Приложение Б. Схема соединений (С4).

flowchart TB
  classDef external fill:#fff7e6,stroke:#b7791f,color:#1f2937;
  classDef edge fill:#eef6ff,stroke:#2563eb,color:#1f2937;
  classDef service fill:#eefaf3,stroke:#15803d,color:#1f2937;
  classDef data fill:#f5f3ff,stroke:#6d28d9,color:#1f2937;

  gateway["ui-rest-to-gprc"]
  cameras["IP-камеры<br/>RTSP"]
  virtual["Виртуальные камеры<br/>HTTP/MP4"]
  kafka["inf-kafka"]
  minio["ds-minio"]

  mediaserver["inf-mediaserver"]
  balancer["inf-load-balancer"]
  nri["inf-nri-inference"]
  monitoring["inf-monitoring"]
  images["inf-image-storage"]
  extractor["inf-report-video-extractor"]
  flows["inf-flows-manager"]
  resources["inf-vl-resource-manager"]
  converters["mm-conversion / yolo-conversion"]
  guardant["inf-guardant-control-center"]
  coturn["inf-coturn"]

  pg[("PostgreSQL sidecars")]
  redis[("Redis sidecars")]

  cameras -->|"RTSP"| mediaserver
  virtual -->|"HTTP/MP4"| mediaserver
  mediaserver -->|"frames / streams"| balancer
  balancer -->|"camera tasks"| nri
  nri -->|"events, heartbeat"| kafka
  nri -->|"images, fragments"| images
  nri -->|"model artifacts"| registry

  registry["svr-models-registry"]

  gateway -->|"HTTP/gRPC"| balancer
  gateway -->|"HTTP/gRPC"| mediaserver
  gateway -->|"HTTP/gRPC"| monitoring
  gateway -->|"HTTP/gRPC"| flows
  gateway -->|"HTTP/gRPC"| resources

  flows -->|"flow versions"| nri
  resources -->|"GPU reservations"| nri
  registry -->|"artifacts"| minio
  images -->|"images"| minio
  extractor -->|"video fragments"| minio
  monitoring <-->|"status topics"| kafka
  converters -->|"converted artifacts"| registry
  balancer --> guardant
  mediaserver --> coturn

  balancer --> pg
  monitoring --> pg
  flows --> pg
  resources --> redis
  images --> redis

  class cameras,virtual external;
  class gateway edge;
  class mediaserver,balancer,nri,monitoring,images,extractor,flows,resources,converters,guardant,coturn,registry service;
  class kafka,minio,pg,redis data;

ПД-MER-012. Б.2.4. severstal: интеграционный контур с системами заказчика

Расположение схемы: Приложение Б. Схема соединений (С4).

flowchart TB
  classDef external fill:#fff7e6,stroke:#b7791f,color:#1f2937;
  classDef edge fill:#eef6ff,stroke:#2563eb,color:#1f2937;
  classDef service fill:#eefaf3,stroke:#15803d,color:#1f2937;
  classDef data fill:#f5f3ff,stroke:#6d28d9,color:#1f2937;

  gateway["ui-rest-to-gprc<br/>customer-domain API"]
  vms["CSVN / VMS<br/>Cisco, Milestone, Macroscop"]
  pkkot["ПК-КОТ"]
  asutpExt["АСУ ТП<br/>signal Kafka"]
  kafka["inf-kafka"]
  minio["ds-minio / DTS"]

  integration["svr-severstal-integration"]
  pkdb["svr-postgres-pk-kot"]
  org["svr-severstal-org-sync"]
  asutp["svr-asutp"]
  asutpKafka["svr-asutp-kafka"]
  schema["svr-asutp-schema-registry"]
  nifi["svr-severstal-nifi-integration"]
  scenario["svr-scenario-storage"]
  liteScenario["svr-lite-scenario-storage"]
  asset["svr-asset-storage"]
  launch["svr-launch-storage"]
  registry["svr-models-registry"]
  translations["svr-translations-store"]
  security["svr-security-notice<br/>audit consumer"]

  pg[("PostgreSQL sidecars")]
  redis[("svr-asutp-redis")]

  gateway -->|"HTTP/gRPC/REST"| integration
  gateway -->|"HTTP/gRPC"| scenario
  gateway -->|"HTTP/gRPC"| liteScenario
  gateway -->|"HTTP/gRPC"| asset
  gateway -->|"HTTP/gRPC"| launch
  gateway -->|"HTTP/gRPC"| registry
  gateway -->|"HTTP/gRPC"| translations

  vms -->|"SOAP/WSDL или HTTP VMS API"| integration
  pkkot -->|"PostgreSQL read"| pkdb
  pkdb -->|"read model"| integration
  integration -->|"HTTP push statuses"| pkkot
  org -->|"org/camera sync"| integration

  asutpExt -->|"Kafka / Avro"| asutpKafka
  asutpKafka --> asutp
  schema -->|"Schema Registry API"| asutp
  asutp -->|"unit state events"| kafka
  integration <-->|"status, sync, events"| kafka
  security -->|"consume add_audit_record only"| kafka

  scenario --> pg
  liteScenario --> pg
  asset --> pg
  launch --> pg
  registry --> pg
  translations --> pg
  integration --> pg
  nifi --> pg
  asutp --> pg
  asutp --> redis
  scenario --> minio
  registry --> minio

  class vms,pkkot,asutpExt external;
  class gateway edge;
  class integration,pkdb,org,asutp,asutpKafka,schema,nifi,scenario,liteScenario,asset,launch,registry,translations,security service;
  class kafka,minio,pg,redis data;

ПД-MER-013. Б.2.5. Инфраструктурные домены: kafka-domain, data-storage, elk-log

Расположение схемы: Приложение Б. Схема соединений (С4).

flowchart LR
  classDef edge fill:#eef6ff,stroke:#2563eb,color:#1f2937;
  classDef domain fill:#eefaf3,stroke:#15803d,color:#1f2937;
  classDef infra fill:#f5f3ff,stroke:#6d28d9,color:#1f2937;
  classDef external fill:#fff7e6,stroke:#b7791f,color:#1f2937;

  ui["ui-rest"]
  stats["statistics"]
  inf["inference"]
  svr["severstal"]
  kafka["inf-kafka"]
  minio["ds-minio"]
  dts["ds-data-temporary-storage"]
  dsGateway["ds-domain-gateway"]
  prom["log-prometheus"]
  loki["log-loki"]

  stats <-->|"Kafka"| kafka
  inf <-->|"Kafka"| kafka
  svr <-->|"Kafka"| kafka

  ui -->|"/api/s3*"| minio
  ui -->|"DTS API"| dts
  stats -->|"S3 / HTTP"| minio
  inf -->|"S3 / HTTP"| minio
  svr -->|"S3 / HTTP"| minio
  dsGateway --> minio

  stats -.->|"/metrics"| prom
  inf -.->|"/metrics"| prom
  svr -.->|"/metrics"| prom
  ui -.->|"docker logs"| loki
  stats -.->|"docker logs"| loki
  inf -.->|"docker logs"| loki
  svr -.->|"docker logs"| loki

  class ui edge;
  class stats,inf,svr domain;
  class kafka,minio,dts,dsGateway,prom,loki infra;

ПД-MER-014. Б.2.6. node-red-sandbox: песочница сценариев

Расположение схемы: Приложение Б. Схема соединений (С4).

flowchart TB
  classDef external fill:#fff7e6,stroke:#b7791f,color:#1f2937;
  classDef edge fill:#eef6ff,stroke:#2563eb,color:#1f2937;
  classDef service fill:#fff1f2,stroke:#be123c,color:#1f2937;
  classDef data fill:#f5f3ff,stroke:#6d28d9,color:#1f2937;

  user["Аналитик данных"]
  box["Основной UI/API BOX5-DIT-MGSN<br/>ui-nginx"]
  nginx["nr-sbx-nginx<br/>81 / /sandbox"]
  frontend["nr-sbx-frontend"]
  backend["nr-sbx-backend"]
  nodeRed["nr-sbx-node-red-vl"]
  nri["nr-sbx-nri<br/>Jupyter 18889"]
  celery["nr-sbx-celery"]
  flower["nr-sbx-flower"]
  mm["nr-sbx-mm-conversion"]
  yolo["nr-sbx-yolo-conversion"]
  kafka["sandbox Kafka"]
  redis["sandbox Redis"]
  volumes[("shared volumes<br/>flows, models, configs")]
  minio["ds-minio"]

  user -->|"HTTP /sandbox"| box
  box -->|"proxy"| nginx
  user -->|"direct 18889"| nri

  nginx --> frontend
  nginx --> backend
  nginx --> nodeRed
  nginx --> flower
  backend -->|"REST / Socket.IO"| frontend
  backend -->|"Node-RED API"| nodeRed
  backend -->|"tasks"| celery
  backend --> redis
  backend --> kafka
  celery --> redis
  celery --> kafka
  celery --> mm
  celery --> yolo
  celery --> minio
  nri --> nodeRed
  nri --> volumes
  nodeRed --> volumes
  mm --> volumes
  yolo --> volumes
  backend -.->|"publish flows / Box API"| box

  class user external;
  class box,nginx edge;
  class frontend,backend,nodeRed,nri,celery,flower,mm,yolo service;
  class kafka,redis,volumes,minio data;

ПД-MER-015. В.1. Схема внешних взаимодействий

Расположение схемы: Приложение В. Реестр внешних систем.

flowchart LR
  classDef source fill:#fff7e6,stroke:#b7791f,color:#1f2937;
  classDef auth fill:#eef6ff,stroke:#2563eb,color:#1f2937;
  classDef core fill:#eefaf3,stroke:#15803d,color:#1f2937;
  classDef consumer fill:#fdf2f8,stroke:#be185d,color:#1f2937;

  cameras["IP-камеры<br/>live RTSP"]
  vms["CSVN / VMS<br/>Cisco, Milestone, Macroscop"]
  virt["Виртуальные камеры<br/>загруженные записи"]
  pkkot["ПК-КОТ<br/>справочники и статусы"]
  asutp["АСУ ТП<br/>сигналы Kafka / Avro"]
  keycloak["Keycloak / OpenID Connect<br/>SSO"]
  email["SMTP / Email<br/>уведомления"]
  consumers["Системы заказчика<br/>API / выгрузки данных"]

  sova["BOX5-DIT-MGSN<br/>продуктовый контур"]

  cameras -->|"RTSP"| sova
  vms -->|"VMS API / архивы"| sova
  virt -->|"HTTP / MP4"| sova
  pkkot <-->|"PostgreSQL read / HTTP push"| sova
  asutp -->|"Kafka / Schema Registry"| sova
  keycloak -->|"OIDC authorization code"| sova
  sova -->|"SMTP"| email
  sova -->|"HTTP API / выгрузки данных"| consumers

  class cameras,vms,virt,pkkot,asutp source;
  class keycloak auth;
  class email,consumers consumer;
  class sova core;