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

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

Схема С2 показывает решение BOX5-DIT-MGSN как единую информационную систему: пользователей, внешние источники данных, внешних получателей данных, основные функциональные подсистемы, внутреннюю событийную шину, хранилища и эксплуатационные компоненты.

Детализация до отдельных сервисов и контейнеров приведена в Приложении Г. Состав функциональных доменов раскрыт через функциональные подсистемы и основные потоки продуктового контура. Схема разделена на три подсхемы: контекст решения, функциональные подсистемы внутри BOX5-DIT-MGSN и ключевые потоки данных.

А.1. Контекст решения

Контекстная схема показывает границу ИТ-решения BOX5-DIT-MGSN и внешние стороны взаимодействия: пользователей, источники данных и внешних получателей данных.

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["Эксперт центра компетенций
События и сценарии"] admin["Функциональный администратор
Полный доступ в UI"] engineer["Аналитик данных
Камеры, модели, сценарии"] otipb["Сотрудник ОТиПБ
Видео и нарушения"] end subgraph sources["Источники данных"] cameras["IP-камеры
live-видеопотоки"] vms["CSVN / VMS
Cisco, Milestone, Macroscop
архивные записи"] virtualVideo["Виртуальные камеры
подгруженные видеозаписи"] asutp["АСУ ТП
сигналы и состояния"] pkkot["ПК-КОТ
справочники и статусы"] keycloak["Keycloak / OpenID Connect
SSO-авторизация"] end sova["ИТ-решение BOX5-DIT-MGSN
видеоаналитика, события,
интеграционный контур"] subgraph consumers["Внешние получатели данных"] notify["Email
канал уведомлений"] extApi["Внешние API
получателей данных"] end operator -->|"видео, нарушения,
сценарии и модели"| sova admin -->|"полный доступ
по всем площадкам"| sova engineer -->|"камеры, модели,
сценарии и нарушения"| sova otipb -->|"просмотр видео,
нарушения вручную"| sova cameras -->|"RTSP
прямой видеопоток"| sova vms -->|"API систем видеонаблюдения
архивные видеозаписи"| sova virtualVideo -->|"HTTP / MP4
файлы для анализа"| sova asutp -->|"Kafka / Avro"| sova pkkot -->|"PostgreSQL / HTTP"| sova keycloak -->|"OIDC / authorization code"| sova sova -->|"email-уведомления"| notify sova -->|"события,
статусы, медиа"| extApi class operator,admin,engineer,otipb user; class cameras,vms,virtualVideo,asutp,pkkot,keycloak,notify,extApi external; class sova core;

Исходный Mermaid-код схемы: ПД-MER-002. А.1. Контекст решения.

Доступ пользовательских ролей к производственным площадкам определяется в Keycloak. Функциональный администратор имеет полный доступ ко всем функциям, модулям, справочникам и площадкам; эксперт центра компетенций и аналитик данных имеют расширенные права на работу с видео, нарушениями, сценариями и моделями в пределах назначенных площадок; сотрудник ОТиПБ просматривает видео и нарушения и создаёт нарушения вручную. Для CSVN/VMS на схеме показан обмен архивными видеозаписями и метаданными через API систем видеонаблюдения; RTSP относится к прямым live-потокам IP-камер. Виртуальные камеры отражают анализ заранее подгруженных видеозаписей без постоянного потока с физической камеры.

А.2. Функциональные подсистемы внутри BOX5-DIT-MGSN

Функциональная структура внутри BOX5-DIT-MGSN разделена на четыре подсхемы: прикладной контур, событийный обмен, данные и хранилища, эксплуатационная инфраструктура. Такая разбивка сохраняет состав подсистем, но не перегружает одну диаграмму всеми связями сразу.

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

Пользовательский контур принимает действия пользователей через web-интерфейс и направляет их в прикладные домены решения.

flowchart LR classDef core fill:#eefaf3,stroke:#15803d,color:#1f2937; classDef edge fill:#eef6ff,stroke:#2563eb,color:#1f2937; ui["Пользовательский контур
ui-rest"] stats["Статистика и события
statistics"] inf["Видеоаналитика и инференс
inference, extended-inference"] svr["Интеграционный контур
severstal"] sandbox["Песочница сценариев
node-red-sandbox"] ui -->|"API-доступ"| stats ui -->|"управление
видеоаналитикой"| inf ui -->|"customer-domain API"| svr ui -->|"работа
со сценариями"| sandbox stats -->|"лента событий,
отчёты"| ui class ui edge; class stats,inf,svr,sandbox core;

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

А.2.2. Событийный обмен

Событийный обмен построен вокруг основной Kafka-шины. Через неё подсистемы передают результаты инференса, команды, статусы, справочники и heartbeat- сообщения.

flowchart TB classDef core fill:#eefaf3,stroke:#15803d,color:#1f2937; classDef infra fill:#f5f3ff,stroke:#6d28d9,color:#1f2937; kafka[("Событийная шина
kafka-domain")] inf["inference,
extended-inference"] stats["statistics"] svr["severstal"] sandbox["node-red-sandbox"] inf <-->|"результаты,
heartbeats"| kafka stats <-->|"события,
команды"| kafka svr <-->|"синхронизация,
статусы"| kafka sandbox -->|"модельные
и sandbox-события"| kafka class inf,stats,svr,sandbox core; class kafka infra;

Исходный Mermaid-код схемы: ПД-MER-004. А.2.2. Событийный обмен.

А.2.3. Данные и хранилища

На схеме данных показаны не отдельные контейнеры БД, а типы хранилищ и домены, для которых они являются источником состояния.

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 -->|"пользователи,
камеры, события"| pg stats -->|"аналитика,
витрины"| ch inf -->|"модели,
состояние"| pg inf -->|"изображения,
видеофрагменты"| minio svr -->|"справочники,
сценарии, активы"| pg svr -->|"медиа
и файлы"| minio class stats,inf,svr core; class pg,ch,redis,minio infra;

Исходный Mermaid-код схемы: ПД-MER-005. А.2.3. Данные и хранилища.

А.2.4. Эксплуатационная инфраструктура

Эксплуатационная инфраструктура обобщает однотипные связи: логи и метрики поступают в контур наблюдаемости.

flowchart LR classDef core fill:#eefaf3,stroke:#15803d,color:#1f2937; classDef infra fill:#f5f3ff,stroke:#6d28d9,color:#1f2937; domains["Подсистемы BOX5-DIT-MGSN
ui-rest, statistics, inference,
severstal, node-red-sandbox"] obs["Наблюдаемость
elk-log"] domains -.->|"логи,
метрики"| obs class domains core; class obs infra;

Исходный Mermaid-код схемы: ПД-MER-006. А.2.4. Эксплуатационная инфраструктура.

А.3. Ключевые потоки данных

Схема потоков показывает не все межсервисные связи, а основные маршруты данных, которые определяют работу решения: видеоаналитику, интеграционный обмен с системами заказчика, подготовку сценариев, уведомления и наблюдаемость.

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-камеры
RTSP live"] virtualVideo["Виртуальные камеры
подгруженные записи"] media["Медиасервер
и балансировщик"] 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 -->|"события,
heartbeat"| kafka kafka -->|"принятые события"| stats stats -->|"лента событий,
отчёты"| ui stats -->|"события и медиа"| notify severstalSrc -->|"справочники,
топология, архивы,
сигналы"| svr svr -->|"нормализованные данные"| kafka svr -->|"справочники
и сценарии"| storage stats -->|"события,
отчёты, аудит"| storage nri -->|"изображения,
видеофрагменты"| 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;

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

Функциональные блоки

Блок Назначение Основные домены и компоненты
Пользовательский контур Публикация web-интерфейса, приём запросов пользователей, проксирование REST/WebSocket/API-вызовов во внутренние сервисы. ui-rest: ui-nginx, ui-react, ui-rest-to-gprc
Статистика и события Учёт пользователей и прав, вход через st-auth и Keycloak/OpenID Connect, хранение камер и объектов наблюдения, жизненный цикл событий, отчёты и аудит. statistics: st-auth, st-camera-storage, st-event-storage, st-event-statistic, сервисы отчётов и аудита
Видеоаналитика и инференс Приём live-видеопотоков и подготовленных видеофайлов виртуальных камер, балансировка камер, выполнение NRI-сценариев, управление ресурсами, подготовка изображений и видеофрагментов. inference, extended-inference: медиасервер, inf-load-balancer (load-balancer2), inf-nri-inference, inf-flows-manager, конвертеры моделей
Интеграционный контур с системами заказчика Обмен с предметными системами заказчика, синхронизация CSVN/VMS и ПК-КОТ, получение архивных видеозаписей из CSVN/VMS, обработка сигналов АСУ ТП, хранение сценариев, активов, запусков и реестров моделей. severstal: svr-severstal-integration, svr-asutp, svr-severstal-org-sync, svr-scenario-storage, svr-models-registry
Песочница Node-RED Изолированная среда разработки, проверки и подготовки NRI-сценариев перед переносом в продуктовый контур. node-red-sandbox: Node-RED VL, backend, frontend, Celery, sandbox Kafka/Redis, конвертеры
Событийная шина Асинхронный обмен событиями, командами, статусами, справочниками и heartbeat-сообщениями между подсистемами. kafka-domain: inf-kafka
Хранилища данных Постоянное и временное хранение бизнес-данных, событий, медиа, справочников, кэшей и промежуточных файлов. data-storage, доменные PostgreSQL/ClickHouse/Redis, MinIO, DTS, файловые каталоги compose-контура
Наблюдаемость Сбор и хранение метрик и логов. elk-log: Prometheus, Loki

Основные направления обмена данными

Направление Описание обмена
Пользователи -> BOX5-DIT-MGSN Функциональные администраторы имеют полный доступ ко всей функциональности, модулям, справочникам и производственным площадкам; эксперты центра компетенций работают с видео, нарушениями, сценариями, моделями и отчётами в пределах площадок Keycloak; аналитики данных дополнительно редактируют камеры и создают модели; сотрудники ОТиПБ просматривают видео и нарушения и создают нарушения вручную. Для внешней SSO-авторизации браузер получает код у Keycloak/OpenID Connect, а st-auth обменивает его на локальные JWT BOX5-DIT-MGSN.
Видеопотоки -> инференс -> события IP-камеры передают live-потоки по RTSP. Виртуальные камеры передают на анализ подготовленные видеофайлы или URL загруженных записей. Медиасервер и балансировщик подготавливают кадры для NRI, NRI-сценарии формируют события, а результаты передаются через Kafka в контур статистики и событий.
Справочники и интеграционный обмен ПК-КОТ, CSVN/VMS и АСУ ТП поставляют справочники, топологию камер, архивные видеофрагменты, сигналы и статусы. Для CSVN/VMS управление, метаданные и архивы идут через API систем видеонаблюдения: Cisco/Milestone - SOAP/WSDL, Macroscop - HTTP; для виртуальных источников применяется CSVN-подключатель типа VIRTUAL. Контур severstal нормализует эти данные и синхронизирует их со статистикой, хранилищами и Kafka.
Сценарии и модели Аналитики данных подготавливают сценарии в node-red-sandbox; версии сценариев и модели проходят через хранилища severstal/inference и затем используются NRI-инференсом продуктового контура.
Хранение и аналитика PostgreSQL хранит транзакционные данные сервисов, ClickHouse используется для событийной аналитики и витрин, Redis — для кэшей и очередей, MinIO/DTS — для файлов, изображений, видео и временных объектов.
Уведомления и внешние получатели данных События, статусы и медиа могут передаваться во внешние API и по email через интеграционные адаптеры, сервис рассылки отчётов и customer-domain сервисы.
Наблюдаемость и аудит Сервисы отдают метрики и логи в elk-log; пользовательские действия и часть сервисных операций формируют audit-события, которые хранятся в st-audit.

Границы схемы

Схема фиксирует функциональную структуру решения, а не сетевую топологию. Внутри одного функционального блока могут находиться десятки контейнеров и доменных хранилищ. Сетевые соединения между контейнерами, публикация портов, тома, отдельные PostgreSQL/Redis/ClickHouse-инстансы и compose-проекты расшифрованы в Приложении Г и должны уточняться по фактической эксплуатационной конфигурации перед эксплуатационными работами. Внешние уведомления, интеграционные адаптеры и внешний контур SSO-авторизации показаны как функциональные направления; их конкретные параметры задаются эксплуатационной конфигурацией. Сервис авторизации st-auth использует Keycloak/OpenID Connect и выпускает локальные JWT для сервисов BOX5-DIT-MGSN.

Основание схемы: состав доменов и сервисов решения BOX5-DIT-MGSN по реестру сервисов. Для схемы С2 учтены функциональные контуры: elk-log, kafka-domain, data-storage, statistics, inference, severstal, extended-inference, ui-rest и node-red-sandbox. Схема С2 отражает применяемые сервисы решения; полный реестр контейнеров приведён в Приложении Г. Базовые контрольные точки web-входа: /login и /api/base/ping/.