Приложение А. Схема функциональной структуры (С2)¶
Схема С2 показывает решение BOX5-DIT-MGSN как единую информационную систему: пользователей, внешние источники данных, внешних получателей данных, основные функциональные подсистемы, внутреннюю событийную шину, хранилища и эксплуатационные компоненты.
Детализация до отдельных сервисов и контейнеров приведена в Приложении Г. Состав функциональных доменов раскрыт через функциональные подсистемы и основные потоки продуктового контура. Схема разделена на три подсхемы: контекст решения, функциональные подсистемы внутри BOX5-DIT-MGSN и ключевые потоки данных.
А.1. Контекст решения¶
Контекстная схема показывает границу ИТ-решения BOX5-DIT-MGSN и внешние стороны взаимодействия: пользователей, источники данных и внешних получателей данных.
События и сценарии"] 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-интерфейс и направляет их в прикладные домены решения.
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- сообщения.
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. Данные и хранилища¶
На схеме данных показаны не отдельные контейнеры БД, а типы хранилищ и домены, для которых они являются источником состояния.
камеры, события"| 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. Эксплуатационная инфраструктура¶
Эксплуатационная инфраструктура обобщает однотипные связи: логи и метрики поступают в контур наблюдаемости.
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. Ключевые потоки данных¶
Схема потоков показывает не все межсервисные связи, а основные маршруты данных, которые определяют работу решения: видеоаналитику, интеграционный обмен с системами заказчика, подготовку сценариев, уведомления и наблюдаемость.
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/.