Описание программы¶
Полное наименование: Компонент среды разработки сценариев видеоаналитики
Обозначение: LPI-VAP-RS
Краткое наименование (для работы с документом): «Сценарии»
Программный продукт: «Vizorlabs Platform 4.0» («Визорлабс Платформа 4.0»)
Стандарт: ГОСТ 19.402-78
Аннотация¶
Настоящий документ содержит описание компонента среды разработки сценариев видеоаналитики (LPI-VAP-RS), являющегося расширением программного продукта «Vizorlabs Platform 4.0» («Визорлабс Платформа 4.0»; далее — Платформа 4.0). Компонент предназначен для создания, настройки, версионирования, отладки и публикации сценариев видеоаналитики, применяемых при обработке видеопотоков в Платформе 4.0.
Компонент представляет собой визуальную low-code/no-code среду: сценарий формируется как граф стандартных и пользовательских логических блоков с настраиваемыми параметрами и связями. Компонент обеспечивает ведение версионного каталога сценариев, сохранение черновиков и публикацию версий, актуализацию используемых моделей, типов зон и видов нарушений, а также отладку рабочей версии на заранее загруженных изображениях или видеозаписях и связанных с ними зонах с получением покадровых изображений, журналов, сообщений и событий отладки. Программные интерфейсы компонента обеспечивают взаимодействие с веб-интерфейсом и смежными компонентами Платформы 4.0.
Исполняемые составные части поставляются контейнерными образами и размещаются в кластере Kubernetes Платформы 4.0 на серверных ЭВМ архитектуры x86 под управлением «Московской серверной операционной системы». Выделенные серверы под компонент не требуются: визуальный редактор, прикладные сервисы и хранилища сценариев, запусков и проверочных данных размещаются на мастер-ноде кластера, а отладочное исполнение сценариев и конвертация моделей — на вычислительной ноде с графическим ускорителем класса NVIDIA T4. Компоненту выделяется доля ресурсов этих узлов, соответствующая позиции поставки. Метаданные сохраняются в PostgreSQL, проверочные медиаданные и результаты отладки — в S3-совместимом объектном хранилище; обмен заданиями и состояниями выполняется с применением очередей сообщений. Пользователь обращается к компоненту через общий веб-интерфейс Платформы 4.0 с персонального компьютера или тонкого клиента; установка исполняемых частей LPI-VAP-RS на рабочее место не требуется.
Серверная часть реализована преимущественно на Python, визуальный редактор — на JavaScript (Node.js); для представления, хранения и обмена данными также используются HTML, CSS, SQL, JSON и YAML. Объём программы определяется составом контейнерных образов, клиентского приложения и каталога логических блоков конкретной версии поставки и должен фиксироваться по ведомости образов и результатам сборки. Сценарии, проверочные медиаданные и результаты отладочных запусков относятся к данным компонента и в объём программы не включаются.
Непосредственная обработка рабочих видеопотоков камер, управление камерами и регистрация событий не входят в назначение LPI-VAP-RS и выполняются другими компонентами Платформы 4.0, которым передаётся опубликованная версия сценария. Документ определяет общие сведения, функциональное назначение, логическую структуру, используемые технические средства, порядок вызова и загрузки, а также входные и выходные данные компонента.
1. Общие сведения¶
1.1. Обозначение и наименование программы¶
| Параметр | Значение |
|---|---|
| Полное наименование | Компонент среды разработки сценариев видеоаналитики |
| Краткое наименование | Компонент «Сценарии» |
| Обозначение (артикул) | LPI-VAP-RS |
| Состав изделия | Расширение программы для ЭВМ «Vizorlabs Platform 4.0» («Визорлабс Платформа 4.0»; далее — Платформа 4.0) |
| Реестровая запись | № 33642 от 21.05.2026 в Едином реестре российских программ для электронных вычислительных машин и баз данных |
| Производитель (правообладатель) | ООО «ЛАБОРАТОРИЯ ПРОМЫШЛЕННОГО ИНТЕЛЛЕКТА» |
| Вид поставки | Простая (неисключительная) лицензия; срок действия прав — весь срок действия исключительного права на программное обеспечение |
| Гарантийное обслуживание | 36 месяцев |
Компонент предназначен для визуальной разработки сценариев видеоаналитики в форматах low-code (соединение готовых логических блоков в алгоритм) и no-code (настройка атрибутов существующих блоков), версионного хранения сценариев и отладки версии сценария на проверочных файлах. Опубликованная версия сценария преобразуется в исполняемое представление, применяемое затем при обработке видеопотоков камер. Классы решаемых задач и границы функциональной ответственности компонента приведены в разделе 2.
Компонент состоит из функциональных блоков, приведённых в таблице 1.1.1. Перечень составных частей каждого блока, их функции, входы и выходы приведены в подразделе 3.3 и в настоящем подразделе не повторяются. Имена сервисов являются техническими обозначениями в схеме развёртывания Платформы 4.0 и не являются самостоятельными программными продуктами.
| Функциональный блок | Краткое назначение |
|---|---|
| Визуальный редактор сценариев | Графическое построение графа из логических блоков, настройка их атрибутов и связей, изолированные сессии редактирования версии |
| Каталог логических блоков | Ведение стандартных и пользовательских Python-блоков; включение, отключение и группировка блоков конфигурационными файлами |
| Каталог сценариев и версий | Ведение сценариев, версий, графов, описаний и атрибутов; каталоги (секции) и комментарии; сохранение черновиков, публикация и архивирование |
| Актуализация зависимостей | Получение доступных моделей и их версий, типов зон и видов нарушений; массовая замена версии модели в выбранных сценариях |
| Проверочные данные | Версии наборов изображений и видеозаписей и связанных с ними зон для отладки; используются совместно с LPI-VAP-MM |
| Отладочные запуски | Создание асинхронных запусков версии сценария на проверочных данных, контроль состояния и прогресса, остановка, перезапуск и удаление запусков |
| Анализ результатов отладки | Покадровые изображения, журналы, сообщения и события по каждому медиафайлу, кадру и логическому блоку |
| Подготовка к исполнению | Преобразование опубликованного графа в исполняемое представление и передача сведений о доступных версиях промышленному контуру |
| Программные интерфейсы | Единая точка вызова операций компонента веб-интерфейсом и интеграционными клиентами Платформы 4.0 |
| Общесистемные средства | Хранение метаданных, объектное хранилище проверочных файлов и результатов, обмен сообщениями, очередь задач и маршрутизация запросов |
Таблица 1.1.1 — Функциональные блоки компонента.
Платформы 4.0"] subgraph RS["LPI-VAP-RS"] direction TB EDIT["Визуальный редактор
и каталог логических блоков"] CAT["Каталог сценариев
и версий"] ASSET["Проверочные данные
и зоны"] RUN["Отладочные запуски
и результаты"] EDIT --> CAT CAT --> EDIT ASSET --> RUN CAT --> RUN RUN --> CAT end UI --> EDIT UI --> ASSET UI --> RUN MM["LPI-VAP-MM
модели и версии"] --> EDIT CORE["LPI-VAP-CORE
доступ, камеры, зоны"] <--> CAT CAT --> INF["Исполняющее ядро
видеоаналитики"]
Схема 1.1 — Место LPI-VAP-RS в Платформе 4.0.
1.2. Программное обеспечение, необходимое для функционирования программы¶
Компонент исполняется на серверных вычислительных средствах в составе Платформы 4.0 и поставляется набором контейнерных образов. Состав программного обеспечения приведён для целевого контура заказчика. Конкретные версии образов, драйверов и библиотек должны быть зафиксированы в формуляре целевой поставки и согласованы между собой.
Уровни программного обеспечения, необходимого для функционирования компонента, приведены на схеме 1.2; состав каждого уровня раскрыт в п. 1.2.1–1.2.5.
серверы x86-64, графические ускорители, накопители, сеть
(раздел 4)"] L2["Уровень 2. Системное программное обеспечение
«Московская серверная операционная система», среда исполнения контейнеров,
Kubernetes, драйвер NVIDIA и средства предоставления ускорителей, CUDA, cuDNN, TensorRT
(п. 1.2.1)"] L3["Уровень 3. Общесистемные сервисы Платформы 4.0
PostgreSQL, MinIO, Apache Kafka, Redis, nginx и веб-шлюз
(п. 1.2.2)"] L4["Уровень 4. Среды исполнения и библиотеки
Python, Node.js, Node-RED, FastAPI, Celery, PyTorch, vlmodels, OpenCV и другие
(п. 1.2.3)"] L5["Уровень 5. Составные части LPI-VAP-RS
визуальный редактор, прикладной API среды, хранилища сценариев,
запусков и проверочных данных, исполнитель отладочных запусков и конвертеры
(п. 1.1, подраздел 3.3)"] L6["Уровень 6. Клиентское программное обеспечение
веб-браузер рабочего места пользователя
(п. 1.2.5)"] EXTC["Смежные компоненты и внешние средства
LPI-VAP-CORE (единая точка входа через СУДИР),
LPI-VAP-MM и исполняющее ядро видеоаналитики
(п. 1.2.4)"] L1 --> L2 --> L3 --> L4 --> L5 --> L6 L5 <--> EXTC
Схема 1.2 — Уровни программного обеспечения, необходимого для функционирования компонента.
1.2.1. Системное программное обеспечение¶
| Наименование | Версия | Назначение |
|---|---|---|
| «Московская серверная операционная система» | По спецификации поставки | Целевая операционная система мастер-ноды и вычислительных нод |
| Среда исполнения контейнеров | По спецификации поставки | Изолированное исполнение составных частей в контейнерах |
| Kubernetes | По спецификации поставки | Оркестрация составных частей, размещение по типам узлов, контроль готовности и перезапуск при отказе |
| Драйвер NVIDIA | Не ниже 580.76.05 либо совместимая с вычислительной средой версия по спецификации поставки | Использование графических ускорителей при отладочных запусках и конвертации |
| NVIDIA Container Toolkit | По спецификации поставки | Предоставление графических ускорителей контейнерам вычислительного контура |
| CUDA, cuDNN, TensorRT | Не ниже 12.6, 9.5 и 10.4 соответственно (в составе согласованных образов) | Исполнение и подготовка моделей при отладке сценариев |
| Служба синхронизации системного времени | В составе целевой операционной системы | Единая шкала времени для версий, сессий, запусков и журналов |
Визуальный редактор, прикладной API среды и хранилища сценариев, запусков и проверочных данных исполняются на процессорах мастер-ноды. Графический ускоритель требуется вычислительной ноде, выполняющей отладочные запуски и конвертацию моделей; для компонента должен быть предусмотрен как минимум один ускоритель класса NVIDIA T4. Конкретная модель ускорителя и совместимые версии драйвера и CUDA уточняются в спецификации целевой поставки. Требования к техническим средствам приведены в разделе 4.
1.2.2. Общесистемные (инфраструктурные) сервисы Платформы 4.0¶
| Наименование | Версия | Использование компонентом |
|---|---|---|
| PostgreSQL | Не ниже 17.5 | Хранение сценариев, их версий, запусков и метаданных проверочных наборов |
| Redis изолированного контура отладки | Не ниже 7 | Брокер и хранилище результатов очереди отладочных задач, шина WebSocket-уведомлений |
| Apache Kafka (режим KRaft) | Не ниже 3.7.0 | Обмен событиями об изменении версий моделей, типов зон и составе сценариев |
| MinIO (S3-совместимое хранилище) | Не ниже выпуска RELEASE.2022-10-24 | Хранение проверочных файлов и артефактов запусков |
| nginx | Не ниже 1.29.0 | Маршрутизация HTTP- и WebSocket-запросов к редактору и API среды |
1.2.3. Среды исполнения и системные библиотеки¶
| Среда исполнения | Версия | Составные части |
|---|---|---|
| Node.js | Не ниже 20.18.0 (npm не ниже 10.8.2) | Визуальный редактор sbx-node-red-vl |
| Node-RED | Не ниже 4.0.5 | Платформа графического редактирования, на которой построен редактор |
| Python | Не ниже 3.12 | Прикладной API среды, хранилища сценариев, запусков и проверочных данных (не ниже 3.14), исполнитель отладочных запусков (не ниже 3.12) и менеджер сессий редактора (не ниже 3.9) |
Основные библиотеки и фреймворки:
| Библиотека | Версия | Назначение |
|---|---|---|
| FastAPI | Не ниже 0.136 | Реализация программных интерфейсов составных частей |
| Uvicorn | Не ниже 0.44 | ASGI-сервер приложений |
| Pydantic | Не ниже 2.13 | Описание и валидация схем данных |
| Tortoise ORM | Не ниже 0.25.4 | Доступ к PostgreSQL в хранилищах сценариев, запусков и проверочных данных |
| Celery | Не ниже 5.3 | Очередь и выполнение отладочных запусков |
| Flower | образ mher/flower:latest |
Наблюдение за очередью отладочных задач |
| aiokafka | Не ниже 0.13.0 | Асинхронное взаимодействие с Apache Kafka |
| MinIO SDK | Не ниже 7.2.20 | Работа с объектным хранилищем |
| vzrpc, grpcio | Не ниже 2.0.76 и 1.78.0 соответственно | Взаимодействие с исполняющим ядром видеоаналитики |
| PyTorch | Не ниже 2.7.0+cu126 | Исполнение моделей при отладочных прогонах |
| vlmodels | Не ниже 2.9.0+cu12 | Унифицированные обёртки моделей видеоаналитики |
| OpenCV, NumPy | Не ниже 4.11.0 и 1.26.4 соответственно | Обработка кадров проверочных файлов |
1.2.4. Смежные компоненты Платформы 4.0 и внешние программные средства¶
| Компонент или программное средство | Обозначение | Взаимодействие |
|---|---|---|
| Компонент управления моделями видеоаналитики | LPI-VAP-MM | Предоставляет перечень опубликованных моделей и их версий для логических блоков и наборы проверочных данных; запрашивает сведения о сценариях, использующих модель, и инициирует массовую замену версии модели в сценариях |
| Центральный модуль управления данными и распределёнными вычислениями | LPI-VAP-CORE | Предоставляет общий веб-интерфейс и единую точку входа; взаимодействует с СУДИР, формирует пользовательский контекст с ролью и полномочиями и передаёт его защищённым запросам к LPI-VAP-RS; предоставляет справочники типов зон и видов нарушений; назначает опубликованные версии сценариев камерам |
| Исполняющее ядро видеоаналитики | В составе Платформы 4.0 | Получает опубликованные версии сценариев и исполняет их при обработке рабочих видеопотоков |
| Общий веб-интерфейс и API-шлюз | В составе Платформы 4.0 | Предоставляет пользователю экранные формы и маршрутизирует запросы к сервисам компонента, включая встроенную область редактора |
Самостоятельное взаимодействие LPI-VAP-RS с СУДИР и регистрация компонента как отдельного OIDC-клиента не предусматриваются. Аутентификацию пользователя через СУДИР выполняет LPI-VAP-CORE; компонент проверяет переданные в пользовательском контексте полномочия на каждую защищённую операцию.
Исполнение опубликованных сценариев на рабочих видеопотоках, управление камерами и фиксация событий не входят в границу ответственности LPI-VAP-RS.
1.2.5. Клиентское программное обеспечение¶
Рабочее место пользователя должно иметь сетевой доступ к веб-интерфейсу Платформы 4.0 и веб-браузер с поддержкой HTML5, JavaScript и WebSocket. Могут использоваться Google Chrome версии не ниже 80, Яндекс.Браузер или Mozilla Firefox сопоставимой поддерживаемой версии. Установка исполняемых частей компонента на рабочее место пользователя не требуется.
1.3. Языки программирования¶
| Язык | Где применён |
|---|---|
| Python | Серверная часть всех составных частей: прикладной API среды, хранилища сценариев, запусков и проверочных данных, исполнитель отладочных запусков, менеджер сессий редактора. На Python также формируется исполняемый код опубликованной версии сценария и реализуются пользовательские логические блоки |
| JavaScript (Node.js) | Визуальный редактор сценариев на базе Node-RED: серверная часть редактора, пользовательские представления логических блоков |
| HTML, CSS | Экранные формы настройки логических блоков в редакторе |
| SQL | Запросы и схемы данных PostgreSQL |
| JSON | Декларативное описание логических блоков (конфигурационные файлы каталога блоков) и описание версии сценария — список блоков, значений их атрибутов и связей между ними |
| YAML | Конфигурации развёртывания составных частей |
Точные версии программного обеспечения целевой поставки указываются в формуляре.
2. Функциональное назначение¶
Компонент предназначен для создания, настройки, версионирования и отладки сценариев видеоаналитики. В составе Платформы 4.0 он образует подготовительный контур: пользователь разрабатывает граф обработки, проверяет его на тестовых медиаданных и публикует версию, пригодную для применения в промышленном контуре.
Результатом работы компонента является опубликованная версия сценария. Она содержит логические блоки, значения их атрибутов и связи между блоками и может быть преобразована в исполняемый Python-код. Привязка опубликованной версии к камерам и обработка рабочих видеопотоков выполняются смежными компонентами Платформы 4.0.
2.1. Классы решаемых задач¶
| Класс задач | Функции компонента | Результат |
|---|---|---|
| Проектирование сценария | Создание и редактирование графа в визуальном редакторе; соединение стандартных логических блоков в режиме low-code; настройка их атрибутов в режиме no-code | Граф сценария с настроенными блоками и связями |
| Расширение и настройка редактора | Создание и редактирование пользовательских Python-блоков; включение, отключение и группировка доступных блоков с помощью конфигурационных файлов | Настроенный для проекта каталог стандартных и пользовательских блоков |
| Актуализация зависимостей | Обновление доступных в редакторе моделей и их версий, типов зон и видов нарушений при изменении соответствующих справочников | Актуальные значения в параметрах логических блоков |
| Управление жизненным циклом сценария | Создание сценария и его версии; хранение графа, описания и атрибутов; сохранение черновика; публикация версии; организация сценариев по каталогам | Версионная история сценария и выделенная опубликованная версия |
| Обновление сценариев | Создание новой версии при замене используемой версии модели; массовое обновление выбранных сценариев; публикация изменений | Новые версии сценариев с актуальными зависимостями |
| Подготовка к исполнению | Преобразование опубликованного графа сценария в исполняемый Python-код и передача сведений о доступных версиях в промышленный контур | Исполняемое представление опубликованной версии |
| Отладка сценария | Запуск версии на проверочных видео или изображениях и заданных зонах; получение прогресса и отладочной информации по каждому медиафайлу, кадру и логическому блоку | Результаты прогона, покадровые изображения, сообщения, журналы и события детекции |
| Программное управление версиями | Создание версии и изменение её описания, атрибутов и ожидаемого вида события или нарушения через программные интерфейсы | Версия сценария, подготовленная к редактированию, проверке или публикации |
Основной функциональный цикл показан на схеме 2.1.
и виды нарушений"] --> EDIT["Создание и настройка
графа сценария"] EDIT --> DRAFT["Сохранение
черновика"] ASSET["Проверочные видео,
изображения и зоны"] --> DEBUG["Отладочный запуск"] DRAFT --> DEBUG DEBUG -->|требуется исправление| EDIT DEBUG -->|результат принят| PUB["Публикация версии"] PUB --> CODE["Исполняемое
представление"] CODE --> OUT["Привязка к камерам и исполнение
смежными компонентами Платформы 4.0"]
Схема 2.1 — Функциональный цикл подготовки сценария.
2.2. Сведения о функциональных ограничениях на применение¶
| Ограничение | Условие применения |
|---|---|
| Граница назначения | Компонент не предназначен для самостоятельного подключения камер, распределения рабочих видеопотоков и регистрации событий промышленного контура. Эти функции выполняются смежными компонентами Платформы 4.0 |
| Состояние версии | Одновременно для одного сценария допускается только одна неопубликованная рабочая версия. Для создания следующей версии текущую рабочую версию необходимо опубликовать либо удалить в установленном порядке |
| Условие публикации | Версия не может быть опубликована, пока для неё не сохранён граф сценария. Штатное редактирование графа опубликованной версии запрещено; изменения вносятся в новую версию |
| Доступность зависимостей | В сценарии могут использоваться только доступные компоненту модели и их версии, типы зон, виды нарушений и логические блоки. Удалённая, архивная, неопубликованная или несовместимая зависимость ограничивает редактирование, обновление либо исполнение сценария |
| Совместимость блоков | Связанные блоки должны иметь совместимые входные и выходные данные. Для блока должны быть заданы обязательные параметры и предусмотрены необходимые предшествующие блоки; иначе корректное выполнение графа не гарантируется |
| Пользовательские Python-блоки | Код блока должен соответствовать интерфейсу исполнения и использовать библиотеки, входящие в поставочную среду. Подключение дополнительных системных библиотек или изменение среды исполнения выполняется как отдельное изменение поставки |
| Проверочные данные | Режим отладки работает с предварительно загруженными версиями ассетов: изображениями, видео MP4 и описаниями зон. Отладочный прогон не заменяет проверку сценария на рабочих камерах после его применения в промышленном контуре |
| Вычислительные ресурсы | Для компонента должны быть выделены ресурсы не ниже минимальной конфигурации, приведённой в разделе 4. При нагрузке свыше установленного показателя одновременной работы пользователей рекомендуемая конфигурация определяется дополнительным расчётом |
| Доступность сервисов | Создание, сохранение, публикация и отладка требуют доступности редактора, хранилищ сценариев, ассетов и запусков, исполнительного сервиса, PostgreSQL, Kafka, Redis и объектного хранилища |
| Архивирование | Сценарий с неопубликованной рабочей версией нельзя архивировать. Опубликованную версию или сценарий, используемые камерами, можно архивировать только после удаления соответствующих привязок в смежном компоненте |
| Разграничение доступа | Функции компонента доступны аутентифицированным пользователям с соответствующими полномочиями. В базовой ролевой модели раздел «Сценарии» и операции создания, редактирования, отладки, публикации и архивирования доступны администратору. Точная матрица полномочий фиксируется для целевой поставки |
2.3. Показатели назначения¶
При соблюдении требований к вычислительным ресурсам компонент должен обеспечивать показатели, приведённые в таблице 2.3.1.
| Показатель | Требование |
|---|---|
| Задержка отклика пользовательского интерфейса | Не более 5 секунд |
| Количество пользователей, одновременно работающих в редакторе сценариев | Не менее 10 пользователей, включая работу в режиме отладки сценария |
Таблица 2.3.1 — Требования к показателям назначения
Показатели относятся к штатному режиму работы среды: задержка отклика отсчитывается от действия пользователя до полной отрисовки экранной формы редактора и обеспечивается при одновременной работе не менее 10 пользователей, включая работу в режиме отладки сценария.
3. Описание логической структуры¶
3.1. Алгоритм программы¶
Логика сценария представляется ориентированным графом. Вершинами графа служат логические блоки, а связями — маршруты передачи данных между выходами и входами блоков. Описание графа хранится в JSON совместно с идентификатором версии, параметрами блоков и ссылками на используемые модели.
3.1.1. Создание, сохранение и публикация сценария¶
Обработка действий пользователя выполняется в следующем порядке:
- Пользователь создаёт сценарий и неопубликованную версию либо выбирает существующую рабочую версию.
- Бэкенд песочницы создаёт сессию редактирования. Для сессии формируется отдельный рабочий каталог и запускается экземпляр визуального редактора.
- Если версия уже содержит граф, бэкенд получает его из хранилища сценариев и загружает в редактор. Для новой версии создаётся пустой граф с корневой вкладкой сценария.
- Редактор формирует палитру из разрешённых стандартных и пользовательских блоков. Параметры моделей, зон и нарушений берутся из синхронизированных конфигураций блоков.
- Пользователь добавляет блоки, задаёт их параметры и соединяет входы и
выходы. Редактор сохраняет результат в сессионный файл
flows.json. - При сохранении бэкенд получает
flows.json, передаёт его сервису обработки графов для извлечения параметров и записывает в хранилище сценариев: граф, настройки блоков, идентификатор вкладки и перечень используемых моделей с версиями. - После сохранения графа версия может быть опубликована. Хранилище изменяет состояние версии и передаёт через Kafka перечень опубликованных версий и актуальные настройки сценариев смежным компонентам.
- Сессия редактора закрывается; временный каталог и процесс редактора освобождаются.
Последовательность показана на схеме 3.1.
Схема 3.1 — Создание и публикация версии сценария.
При массовой замене версии модели сервис обработки графов выбирает указанные версии сценариев, заменяет ссылку на модель и передаёт изменённые графы в хранилище. Для каждого успешно обновлённого сценария создаётся новая версия с новым идентификатором графа; сведения об изменении повторно публикуются через Kafka.
3.1.2. Отладочный запуск¶
Отладка выполняется для конкретной версии сценария и выбранной версии набора проверочных данных:
- Хранилище запусков получает идентификаторы версии сценария и версии ассета.
- Из хранилищ сценариев и ассетов запрашиваются метаданные, граф, ссылки на медиафайлы и описания зон.
- Создаётся запись запуска с уникальным идентификатором и контекст обработки медиафайлов.
- Бэкенд песочницы создаёт исполнительную сессию, помещает в неё
flows.json, подключает проверочные данные и передаёт задачу исполнителю. - Исполнитель обрабатывает изображения или кадры видео согласно графу. Для каждого кадра сохраняются исходное и визуализированное изображения, результирующее сообщение и журнал выполнения; для медиафайла сохраняются общий журнал и сформированные события.
- Исполнитель передаёт статусы через Kafka. Хранилище запусков обновляет состояние, размер результатов и процент выполнения и публикует прогресс для веб-интерфейса.
- Набор изображений обрабатывается в рамках одной сессии. Если ассет содержит несколько видео, они обрабатываются последовательно; после завершения одного файла хранилище запусков передаёт исполнителю следующий.
- После обработки всех файлов прогресс устанавливается в 100 %, исполнительная сессия закрывается, а результаты остаются доступными для просмотра.
Схема 3.2 — Выполнение отладочного запуска.
3.1.3. Выполнение графа¶
Для каждого входного кадра исполнитель создаёт контейнер сообщения. Блок читает данные из именованных входных полей контейнера, выполняет свою операцию и записывает результат в выходные поля. Имена входов и выходов задаются параметрами блока, поэтому связь считается корректной, когда выход предыдущего блока совпадает со входом следующего.
Блоки выполняют четыре основные группы операций:
- получение кадра и подготовка исходных данных;
- запуск моделей детекции, классификации, сегментации и оценки поз;
- логическую обработку результатов — фильтрацию, трекинг, проверку зон, накопление состояния и формирование условий;
- создание события, визуализацию и сохранение результата.
Состояние, необходимое для трекинга и временной логики, хранится в контексте исполнительной сессии между последовательными кадрами. Ошибка блока фиксируется в журнале кадра и переводит запуск в состояние ошибки, если дальнейшее выполнение невозможно.
3.2. Используемые методы¶
| Метод | Реализация в программе |
|---|---|
| Графическое программирование | Сценарий собирается из блоков и связей в редакторе Node-RED; структура сохраняется в flows.json |
| Декларативная настройка | Типы блоков, поля форм, доступные модели, версии и параметры задаются JSON-конфигурациями; перечень блоков может включаться, отключаться и группироваться без изменения пользовательского сценария |
| Объектно-компонентный метод | Тип логического блока сопоставляется с Python-классом исполнения. Стандартные и пользовательские блоки используют единый контракт входов, выходов, параметров и контекста |
| Потоковая передача данных | Результаты блока передаются следующему блоку через поля общего контейнера сообщения; связи графа определяют маршрут данных |
| Покадровая обработка | Видео декодируется в последовательность кадров; один и тот же граф применяется к каждому кадру с сохранением состояния между итерациями, если оно требуется блоку |
| Версионное управление | Граф и настройки относятся к конкретной версии сценария; изменения выполняются в рабочей версии, после чего версия публикуется для применения |
| Изоляция сессий | Для редактирования создаётся отдельный рабочий каталог и экземпляр Node-RED; состояние сессии хранится в Redis и удаляется при закрытии |
| Асинхронное выполнение | Длительные отладочные операции исполняются задачами Celery; статусы и команды продолжения передаются через Kafka, оперативный прогресс — через WebSocket |
| Событийная синхронизация | Изменения моделей и справочников инициируют обновление конфигураций блоков и параметров сохранённых графов через сообщения Kafka |
| Разделение метаданных и файлов | Метаданные сценариев, ассетов и запусков хранятся в PostgreSQL, а медиафайлы и результаты отладки — в S3-совместимом объектном хранилище |
Математические методы детекции, классификации, сегментации и трекинга реализуются выбранными моделями и логическими блоками. Компонент организует их последовательность и обмен данными, но не изменяет математический алгоритм подключённой модели.
3.3. Структура программы с описанием функций составных частей¶
Компонент реализован как совокупность контейнерных сервисов. Бизнес-состояние распределено между хранилищами сценариев, запусков и проверочных данных, сессии редактирования изолированы в отдельных экземплярах редактора, а длительные вычисления вынесены в исполнителя отладочных запусков и конвертеры.
| Составная часть | Основные функции | Основные данные |
|---|---|---|
sbx-node-red-vl |
Визуальное редактирование графа; формирование палитры; управление изолированными экземплярами редактора; проксирование HTTP- и WebSocket-трафика сессий | flows.json, конфигурации блоков, состояние экземпляра редактора |
sbx-sandbox-backend |
Создание и закрытие сессий; загрузка и сохранение графа; подключение медиафайлов и зон; запуск и остановка отладки; выдача покадровых данных | Идентификатор сессии, граф, ссылки на медиафайлы, параметры запуска |
sbx-celery |
Асинхронное покадровое выполнение графа; формирование журналов, сообщений, визуализаций и событий; подготовка сценария для одиночной проверки модели | Задача выполнения, контекст графа, кадры и результаты блоков |
wf-scenario-storage |
Хранение сценариев, версий, графов и настроек; публикация и архивирование; каталоги, атрибуты и комментарии; уведомления о жизненном цикле | Сценарии, версии, flow_data, flow_settings, зависимости от моделей |
inf-flows-manager |
Извлечение параметров из графа; получение сведений об используемых моделях; массовая замена версий моделей в выбранных сценариях | Граф Node-RED, параметры блоков, имена и версии моделей |
wf-asset-storage |
Версионирование наборов проверочных данных; хранение метаданных изображений, видео и зон; выдача ссылок на объекты | Ассеты, версии, медиафайлы, зоны, подписанные ссылки |
wf-launch-storage |
Создание и учёт отладочных запусков; управление очередностью файлов; расчёт прогресса; хранение ссылок на результаты; остановка, перезапуск и удаление запусков | Запуск, контекст медиафайлов, статусы, прогресс, результаты |
sbx-redis |
Хранение состояния сессий и брокер задач исполнителя | Сессии, идентификаторы задач, оперативные сообщения |
sbx-nginx |
Единая маршрутизация запросов к редактору и бэкенду, включая WebSocket | HTTP- и WebSocket-трафик |
sbx-flower |
Наблюдение за очередью задач и состоянием исполнителей | Состояние задач Celery |
sbx-yolo_converter, sbx-mm_converter |
Подготовка весов моделей к использованию при отладке | Исходные и преобразованные веса моделей |
Таблица 3.3.1 — Функции составных частей LPI-VAP-RS.
Связи основных составных частей показаны на схеме 3.3.
реестр моделей"] CORE["LPI-VAP-CORE
камеры и зоны"] NRI["Исполняющее ядро
видеоаналитики"] end UI --> NG NG --> SB NG --> NR NG --> SS NG --> AS NG --> LS SB --> NR SB --> SS SB --> FM LS --> AS LS --> SS LS --> SB SB --> CEL SS --> PG AS --> PG LS --> PG SB --> R CEL --> R AS --> M CEL --> M LS --> M SS <--> K LS <--> K CEL <--> K MR --> FM MR --> K SS --> CORE CORE --> K K --> NRI
Схема 3.3 — Логическая структура компонента и его окружение.
3.4. Связи программы с другими программами¶
| Связанная программа или сервис | Направление относительно LPI-VAP-RS | Передаваемые данные | Протокол и инициатор |
|---|---|---|---|
| Веб-интерфейс и API-шлюз Платформы 4.0 | Двунаправленное | Команды создания, редактирования, сохранения, публикации и отладки; экранные формы редактора, списки сущностей, состояния и результаты | HTTPS; REST/JSON, HTTP-прокси редактора и WebSocket; запрос пользователя или внешнего клиента |
Компонент управления моделями видеоаналитики LPI-VAP-MM (wf-models-registry) |
Двунаправленное | Модели, доступные версии и метаданные; уведомления о публикации, обновлении и удалении версии модели; перечень сценариев, использующих модель; графы до и после массовой замены версии | REST/JSON; запрос редактора или менеджера графов; события Kafka при изменении версий моделей |
LPI-VAP-CORE, хранилище камер (st-camera-storage) |
Двунаправленное | Справочные данные камер, типов зон и видов нарушений; проверка использования сценария камерами перед архивированием; опубликованная версия для назначения камере | REST/JSON; запрос хранилища сценариев; события Kafka при изменении справочников |
Исполняющее ядро видеоаналитики (inf-nri-inference) |
Преимущественно исходящее | Перечень опубликованных версий и их настроек; JSON-описание графа выбранной версии для исполнения на рабочих видеопотоках | Kafka; внутренние программные интерфейсы; инициатор — публикация версии либо запрос исполняющего ядра |
| PostgreSQL | Двунаправленное | Сценарии, версии, графы, каталоги, атрибуты, комментарии, ассеты и запуски | PostgreSQL wire protocol через ORM; запрос соответствующего прикладного сервиса |
| MinIO или совместимое S3-хранилище | Двунаправленное | Проверочные изображения, видеозаписи, описания зон и артефакты отладочных запусков | S3 API; потоковая передача и временные подписанные ссылки |
| Apache Kafka | Двунаправленное | События жизненного цикла сценариев, моделей и зон; состояния отладочных запусков; команды продолжения обработки и сообщения прогресса | Kafka protocol, сообщения JSON; публикация при изменении состояния и потребление фоновыми обработчиками |
| Redis и Celery | Двунаправленное внутри контура отладки | Состояния сессий редактора, очередь задач, идентификаторы и результаты выполнения, оперативные уведомления | Redis protocol и Celery; постановка задачи бэкендом среды, выполнение исполнителем |
| Сервисы конвертации | Исходящий запрос, входящий результат | Команда преобразования, пути к весам и конфигурациям, идентификатор и состояние процесса | Внутренний HTTP/JSON или HTTP через Unix domain socket; вызов из исполнителя |
Таблица 3.4.1 — Связи компонента с другими программами.
Обмен структурированными данными выполняется в кодировке UTF-8. Графы, REST-сообщения и события Kafka передаются в JSON; медиафайлы загружаются через подписанные ссылки объектного хранилища. Идентификаторы сценария, его версии, вкладки графа, ассета и запуска используются совместно для сохранения трассируемости между этапами разработки и отладки.
Все служебные соединения выполняются во внутренних сетях развёртывания. Пользователю и внешним клиентам предоставляются только маршруты API-шлюза Платформы 4.0. Прямой внешний доступ к PostgreSQL, MinIO, Kafka, Redis, исполнителю и конвертерам не требуется.
4. Используемые технические средства¶
Компонент эксплуатируется на серверных технических средствах заказчика в составе Платформы 4.0. Выделенные серверы под компонент не требуются: составные части поставляются контейнерными образами и размещаются на узлах уже развёрнутого кластера Kubernetes Платформы 4.0 — тех же, на которых работает Центральный модуль управления данными и распределёнными вычислениями (LPI-VAP-CORE). Установка исполняемых частей компонента на рабочее место пользователя не требуется: работа выполняется через веб-браузер.
Составные части распределяются по типам узлов кластера:
- мастер-нода — визуальный редактор и менеджер сессий, прикладной API среды, хранилища сценариев, запусков и проверочных данных, маршрутизация, а также используемые ими общесистемные хранилища, брокер сообщений и очередь задач;
- вычислительная нода — исполнитель отладочных запусков и конвертеры моделей: покадровое выполнение версии сценария на проверочных файлах и подготовка весов моделей к отладочному исполнению; этим составным частям необходим графический ускоритель.
Компоненту выделяется доля ресурсов этих узлов, соответствующая позиции поставки LPI-VAP-RS: 8 процессорных ядер, 16 ГБ оперативной памяти, 1000 ГБ дискового пространства и один графический ускоритель класса NVIDIA T4. Состав и назначение выделяемых ресурсов приведены в подразделе 4.3, соотношение с конфигурацией узлов Платформы 4.0 — в п. 4.3.2. Качественные требования, минимально допустимые версии программной среды и удельные величины для расчёта ёмкости приведены в подразделе 4.4 в форме «не ниже».
4.1. Серверные технические средства¶
4.1.1. Размещение составных частей на узлах кластера¶
| Тип узла кластера | Размещаемые составные части компонента | Потребляемые ресурсы узла |
|---|---|---|
| Мастер-нода | Визуальный редактор и менеджер сессий; прикладной API среды; хранилища сценариев, запусков и проверочных данных; маршрутизация; выделенные компоненту базы данных, бакеты объектного хранилища, топики брокера сообщений и очередь задач; маршруты веб-интерфейса и шлюза прикладных интерфейсов | Процессорные ядра и оперативная память прикладных сервисов и сессий редактора; дисковое пространство хранилищ метаданных, конфигурации редактора и объектных данных компонента |
| Вычислительная нода | Исполнитель отладочных запусков и конвертеры моделей | Один графический ускоритель и его видеопамять; процессорные ядра и оперативная память отладочных запусков и конвертации; дисковое пространство контейнерных образов, рабочих каталогов и локального кэша моделей |
Таблица 4.1.1 — Размещение составных частей компонента на узлах кластера.
Узлы кластера входят в состав инфраструктуры Платформы 4.0 и не выделяются под
компонент отдельно. Веб-интерфейс, шлюз прикладных интерфейсов, средства
аутентификации и разграничения доступа, PostgreSQL, объектное хранилище, брокер
сообщений и очередь задач предоставляются Платформой 4.0; компонент использует
в них собственные базы данных, бакеты и топики. Размещение задаётся признаками
узлов и правилами планирования Kubernetes; на вычислительной ноде графический
ускоритель предоставляется рабочим нагрузкам как ресурс nvidia.com/gpu, и один
ускоритель не используется одновременно отладочным запуском и рабочей
видеоаналитикой LPI-VAP-CORE. При развёртывании на одном сервере назначения
мастер-ноды и вычислительной ноды совмещаются; требуемые ресурсы при этом не
изменяются.
4.1.2. Схема развёртывания¶
веб-браузер"] INGRESS["Ingress и веб-шлюз
HTTPS, WebSocket"] subgraph MASTER["Мастер-нода Kubernetes"] UI["Редактор и API"] STORE["Хранилища сценариев
и запусков"] QUEUE["Kafka, Redis
и очередь задач"] PVC["Постоянные тома"] UI --> STORE UI --> QUEUE STORE --> PVC end subgraph COMPUTE["Вычислительная нода Kubernetes (GPU)"] RUN["Исполнитель
отладочных запусков"] CONV["Конвертеры моделей"] WORK["Рабочие каталоги
и временные данные"] RUN --> WORK CONV --> WORK end MM["LPI-VAP-MM
модели и ассеты"] CORE["LPI-VAP-CORE
камеры и применение сценариев"] ARM --> INGRESS --> UI UI --> RUN UI <--> MM UI <--> CORE RUN --> STORE
Схема 4.1 — Размещение составных частей LPI-VAP-RS в Kubernetes.
4.1.3. Требования к техническим средствам узлов¶
| Группа технических средств | Требование |
|---|---|
| Узлы кластера | Физические или виртуальные серверы архитектуры x86-64, совместимые с «Московской серверной операционной системой», средствами оркестрации Kubernetes и поставляемыми контейнерными образами. Узлы предоставляются в составе инфраструктуры Платформы 4.0 и объединяются в общую серверную сеть кластера |
| Оркестрация | Кластер Kubernetes обеспечивает размещение составных частей по типам узлов, контроль их готовности, перезапуск при отказе и управление выделяемыми ресурсами. Размещение задаётся признаками узлов: мастер-нода, вычислительная нода |
| Виртуализация | При использовании виртуализации ресурсы выделяются без переподписки и не ниже значений подраздела 4.3; для узлов с графическими ускорителями обеспечивается проброс ускорителя в режиме прямого доступа без разделения между виртуальными машинами, миграция виртуальных машин с подключённым ускорителем не применяется |
| Графическая подсистема | Исполнителю отладочных запусков и конвертерам предоставляется графический ускоритель класса NVIDIA T4 или эквивалент с характеристиками по таблице 4.3.2, совместимый с согласованными версиями драйвера, средств предоставления ускорителей контейнерам, CUDA, cuDNN и TensorRT. На один отладочный запуск или конвертацию выделяется отдельный ускоритель; разделение одного ускорителя между задачами и совместное использование его с видеоаналитикой Центрального модуля не применяются |
| Оперативная память | Помимо оперативной памяти прикладных сервисов на мастер-ноде резервируется не менее 1 ГБ на каждую сессию редактора, а на вычислительной ноде — объём не менее размера распакованных артефактов модели на каждый параллельный отладочный запуск или конвертацию |
| Дисковая подсистема | Системные данные, хранилища метаданных, данные редактора, объектное хранилище и рабочие каталоги размещаются раздельно. Хранилища метаданных, данные редактора, рабочие каталоги и локальный кэш моделей размещаются на SSD; объектное хранилище проверочных файлов и результатов — на носителях требуемой ёмкости. Данные сохраняются при перезапуске контейнеров и узлов |
| Рабочие каталоги и кэш моделей | Исполнителю отладочных запусков и конвертерам предоставляются общие рабочие каталоги и Unix-сокеты в пределах узла; для исходных и преобразованных весов моделей, временных файлов и локального кэша выделяется отдельная область с регламентом очистки |
| Ресурсы контейнеров | Для составных частей задаются запросы и пределы ресурсов, исключающие вытеснение как сервисов компонента, так и составных частей Центрального модуля, размещённых на тех же узлах, сессиями редактора и длительными отладочными запусками |
| Сетевое оборудование | Обеспечиваются доступ пользователей к единой точке входа LPI-VAP-CORE по HTTPS и WebSocket, обмен между узлами кластера, передача проверочных файлов и результатов между прикладными сервисами, объектным хранилищем и вычислительной нодой, а также связность со смежными компонентами Платформы 4.0. Доступ к СУДИР требуется LPI-VAP-CORE и браузеру пользователя, но не серверным составным частям LPI-VAP-RS |
| Синхронизация времени | Все узлы синхронизируются с единым источником точного времени: от этого зависят хронология версий, сессий, записей о запусках, комментариев и журналов |
| Средства резервного копирования | Резервированию подлежат хранилища метаданных, данные и конфигурация редактора, объектное хранилище проверочных файлов и результатов, а также конфигурация развёртывания. Восстанавливаемые из внешних источников данные (контейнерные образы, локальный кэш моделей, временные файлы) допускается исключить |
| Бесперебойное питание | Узлы кластера и активное сетевое оборудование подключаются к средствам бесперебойного питания, обеспечивающим корректное завершение работы хранилищ |
Таблица 4.1.2 — Требования к техническим средствам узлов, на которых размещается компонент.
Количественные значения по группам таблицы 4.1.2 установлены подразделом 4.3 (ресурсы, выделяемые компоненту) и таблицей 4.4.1 (требования «не ниже») и в настоящем подразделе не повторяются.
4.1.4. Размещение данных¶
| Группа данных | Размещение | Порядок защиты |
|---|---|---|
| Сценарии, версии и метаданные запусков | PostgreSQL на постоянном томе мастер-ноды | Согласованное резервное копирование с объектными данными |
| Данные и конфигурация редактора | PVC, совместно доступный редактору и бэкенду | Резервное копирование при изменении конфигурации и по регламенту |
| Проверочные файлы и результаты | S3-совместимое хранилище и постоянный том результатов | Срок хранения и очистка задаются регламентом |
| Модели и результаты конвертации | Объектное хранилище; локальный кэш вычислительной ноды | Основной экземпляр резервируется, кэш восстанавливается |
| Состояние очереди | Постоянный том брокера на мастер-ноде | Степень защиты определяется допустимостью потери незавершённых задач |
| Временные файлы и Unix-сокеты | Временный том, доступный только связанным рабочим нагрузкам вычислительной ноды | Не резервируется; очищается после завершения или сбоя операции |
Таблица 4.1.3 — Размещение и защита данных компонента.
4.2. Технические средства рабочего места пользователя¶
| Техническое средство | Требование |
|---|---|
| Персональный компьютер или тонкий клиент | Должен обеспечивать работу поддерживаемого веб-браузера, выполнение JavaScript и установление HTTPS- и WebSocket-соединений с Платформой 4.0. Конфигурация — не хуже: процессор уровня Intel Core i3, 8 ГБ оперативной памяти, видеопамять не менее 512 МБ, аппаратное декодирование H.264 средствами графической подсистемы рабочего места для просмотра проверочных видеозаписей и покадровых результатов отладки |
| Монитор | Цветной монитор с разрешением не хуже 1920 × 1080, достаточным для одновременного отображения рабочей области редактора, палитры логических блоков и панели настройки блока |
| Средства ввода | Клавиатура и координатное устройство типа «мышь» либо функционально эквивалентные средства ввода |
| Сетевой интерфейс и канал | Подключение к сети, из которой разрешён доступ к веб-интерфейсу Платформы 4.0 и загрузка проверочных изображений и видеозаписей. Пропускная способность — не менее 100 Мбит/с, рекомендуется 1 Гбит/с |
| Свободное дисковое пространство | Не менее 10 ГБ для подготовки загружаемых проверочных файлов и для сохранения выгружаемых кадров, журналов и результатов отладки. Данные компонента на рабочем месте не хранятся, установка исполняемых частей не требуется |
| Дополнительное оборудование | Камера и графический ускоритель на рабочем месте не требуются: отладка выполняется на заранее загруженных проверочных данных серверными средствами, а исходные и визуализированные кадры передаются пользователю через веб-интерфейс |
Таблица 4.2.1 — Технические средства рабочего места пользователя.
4.3. Ресурсы, выделяемые компоненту¶
Компонент не требует отдельных серверов. Приведённые ниже ресурсы выделяются ему на узлах кластера Платформы 4.0 и соответствуют требованиям к инфраструктуре заказчика для позиции поставки LPI-VAP-RS.
4.3.1. Состав и назначение выделяемых ресурсов¶
| Ресурс | Значение | Узел размещения | На что расходуется |
|---|---|---|---|
| Процессорные ядра x86 | Не менее 8 | Мастер-нода и вычислительная нода | Прикладной API среды, экземпляры редактора и менеджер сессий, хранилища сценариев, запусков и проверочных данных, маршрутизация, обслуживание выделенных компоненту баз данных и бакетов; чтение и декодирование проверочных изображений и видеозаписей, покадровое выполнение графа сценария, конвертация моделей, формирование визуализированных кадров |
| Оперативная память | Не менее 16 ГБ | Мастер-нода и вычислительная нода | Около 2,7 ГБ — фоновое потребление составных частей компонента в состоянии готовности; не менее 1 ГБ — на каждую одновременную сессию редактора; остальной объём — отладочные запуски и конвертация: на каждую параллельную задачу требуется объём не менее размера распакованных артефактов используемых моделей |
| Дисковое пространство | Не менее 1000 ГБ (HDD) | Мастер-нода и вычислительная нода | Не менее 44 ГБ — контейнерные образы редактора, прикладного API, очереди, исполнителя отладочных запусков и конвертеров; не менее 25 ГБ — начальный резерв рабочих данных отладочного контура, данных и конфигурации редактора; остальной объём — рост числа версий сценариев, наборов проверочных данных, результатов запусков и журналов в пределах установленных сроков хранения |
| Графические ускорители | Не менее 1 шт. класса NVIDIA T4 (или эквивалент) с характеристиками по таблице 4.3.2 | Вычислительная нода | Отладочные запуски версии сценария на проверочных данных и конвертация моделей для отладочного контура. Один ускоритель обслуживает одну параллельную задачу; на время её выполнения ускоритель занят полностью |
Таблица 4.3.1 — Ресурсы, выделяемые компоненту, и их назначение.
Минимальные характеристики выделяемого компоненту графического ускорителя приведены в таблице 4.3.2. Допускается применение эквивалента, не уступающего указанным значениям.
| Характеристика ускорителя | Минимальное значение |
|---|---|
| Объём видеопамяти | 16 ГБ |
| CUDA Compute Capability | 7.5 |
| Количество CUDA-ядер | 2 560 |
| Количество Tensor Cores | 300 |
| Пропускная способность видеопамяти | 300 ГБ/с |
| Аппаратная поддержка вычислений | FP16, INT8 |
Таблица 4.3.2 — Минимальные характеристики графического ускорителя.
Дисковое пространство распределяется по классам носителей в соответствии с п. 4.1.4: хранилища метаданных, данные редактора, рабочие каталоги и кэш моделей — на SSD, проверочные файлы и результаты отладочных запусков — в объектном хранилище на носителях требуемой ёмкости. Общий выделяемый объём при этом не изменяется.
Приведённые значения соответствуют одному параллельному отладочному запуску или конвертации и штатному числу одновременных сессий редактора по подразделу 2.3. Они не включают ресурсы общесистемных средств Платформы 4.0 (веб-интерфейс и шлюз, средства аутентификации, серверы PostgreSQL, объектного хранилища, брокера сообщений и очереди задач), которые предоставляются Платформой 4.0 и используются компонентом совместно с другими её компонентами.
4.3.2. Соотношение с конфигурацией узлов Платформы 4.0¶
Узлы, на которых размещается компонент, входят в конфигурацию Платформы 4.0, установленную для позиции поставки LPI-VAP-CORE: мастер-нода и вычислительные ноды с графическими ускорителями. Соотношение ресурсов приведено в таблице 4.3.3.
| Ресурс | Мастер-нода | Вычислительная нода (1 шт.) | Итого по позиции LPI-VAP-CORE | Выделяется LPI-VAP-RS | Итого с учётом компонента |
|---|---|---|---|---|---|
| Процессорные ядра x86 | 48 | 14 | 62 | 8 | 70 |
| Оперативная память, ГБ | 128 | 128 | 256 | 16 | 272 |
| Дисковое пространство, ГБ | 6000 (5000 HDD и 1000 SSD) | 1000 (SSD) | 7000 | 1000 | 8000 |
| Графические ускорители класса NVIDIA T4 | — | 4 | 4 | 1 | 5 |
Таблица 4.3.3 — Ресурсы компонента в составе минимальной конфигурации Платформы 4.0.
Из таблицы 4.3.3 следует:
- отдельные серверы под компонент не требуются: его составные части размещаются на уже имеющихся мастер-ноде и вычислительной ноде;
- ресурсы, выделенные компоненту, не участвуют в обеспечении показателей назначения Центрального модуля: занятый отладочным запуском или конвертацией ускоритель на время выполнения задачи не выполняет видеоаналитику, а выделенные процессорные ядра, оперативная память и дисковое пространство не учитываются в расчёте числа обрабатываемых камер;
- поэтому доля компонента предусматривается сверх минимальной конфигурации узлов либо покрывается запасом ресурсов, заложенным проектом целевой поставки. В целевой конфигурации Центрального модуля из мастер-ноды и четырёх вычислительных нод (104 процессорных ядра, 640 ГБ оперативной памяти, 16 ускорителей класса NVIDIA T4) доля компонента составляет около 8 % процессорных ядер, около 3 % оперативной памяти и один ускоритель из шестнадцати;
- при совмещении нагрузки без такого запаса производительность видеоаналитики на время отладочных запусков и конвертаций снижается пропорционально занятым ресурсам; запросы и пределы ресурсов Kubernetes должны исключать вытеснение рабочих нагрузок Центрального модуля, а регламент выполнения отладки (например, вне периодов пиковой нагрузки) устанавливается проектом целевой поставки.
4.3.3. Масштабирование¶
Выделяемые ресурсы рассчитаны на один одновременно выполняемый отладочный запуск или конвертацию. Пропускная способность отладочного контура масштабируется числом графических ускорителей, предоставленных компоненту, и пропорциональным увеличением процессорных ядер, оперативной памяти и временного дискового пространства; число одновременных сессий редактора масштабируется ресурсами мастер-ноды. Порядок масштабирования приведён на схеме 4.2.
1 отладочный запуск или конвертация
одновременно"] N2["2 ускорителя
2 задачи одновременно"] N4["4 ускорителя
4 задачи одновременно"] NX["Дальнейшее масштабирование
пропорционально числу
выделенных ускорителей"] MASTER["Ресурсы мастер-ноды:
рассчитываются по числу одновременных сессий редактора,
числу сценариев и версий, объёму проверочных данных
и результатов и срокам их хранения"] N1 --> N2 --> N4 --> NX MASTER -.-> N1
Схема 4.2 — Масштабирование отладочного контура компонента.
Ускорители могут выделяться как на одной, так и на нескольких вычислительных нодах кластера. Промежуточные конфигурации рассчитываются пропорционально; ёмкость хранилищ рассчитывается отдельно по удельным величинам п. 4.4.2 и не зависит от числа параллельных задач.
4.4. Требования к узлам целевой конфигурации и параметры проектирования¶
Подраздел устанавливает требования, которые не нормированы подразделом 4.3: качественные требования к узлам, на которых размещается компонент, минимально допустимые версии программной среды, удельные величины для расчёта ёмкости и перечень параметров, которые определяются проектом поставки. Требования приведены раздельно по типам узлов кластера и сформулированы в форме «не ниже»: указанные значения подтверждены проверкой работоспособности компонента в полном составе составных частей и являются минимально допустимыми для целевой поставки.
4.4.1. Требования к узлам по типам¶
| Характеристика | Мастер-нода | Вычислительная нода |
|---|---|---|
| Тип узла | Физический сервер либо виртуальная машина с выделенными без переподписки ресурсами | Физический сервер либо виртуальная машина с выделенными без переподписки ресурсами и прямым доступом к графическим ускорителям |
| Процессорные ядра, оперативная память и дисковое пространство | Не ниже значений, выделяемых компоненту по таблице 4.3.1; минимум учитывается по физическим ядрам, выделенным компоненту; дополнительно не менее 1 ГБ оперативной памяти на каждую одновременную сессию редактора | Не ниже значений, выделяемых компоненту по таблице 4.3.1; дополнительно одно процессорное ядро и объём оперативной памяти не менее размера распакованных артефактов моделей на каждый параллельный отладочный запуск или конвертацию |
| Графические ускорители | Не требуются | Не менее одного ускорителя класса NVIDIA T4 с характеристиками по таблице 4.3.2 (в том числе CUDA Compute Capability — не ниже 7.5); при моделях с повышенными требованиями к видеопамяти — ускорители с 24 ГБ; на каждую параллельную задачу выделяется отдельный ускоритель. Работоспособность подтверждена на ускорителях с 24 ГБ видеопамяти |
| Драйвер и среда исполнения графической подсистемы | Не применяется | Драйвер NVIDIA — не ниже 580.76.05, среда CUDA в контейнерных образах — не ниже 12.6, cuDNN — не ниже 9.5, TensorRT — не ниже 10.4, при совместимости со средствами предоставления ускорителей контейнерам |
| Дисковый массив | Массив уровня не ниже RAID 5 из корпоративных SSD для томов хранилищ и данных редактора; запас свободного места — не менее 20 % | Массив уровня не ниже RAID 5 из корпоративных SSD для контейнерных образов, рабочих каталогов и кэша моделей; запас свободного места — не менее 20 % и резерв для текущей и новой версии образов |
| Операционная система и среда контейнеров | «Московская серверная операционная система» с ядром не ниже 6.8; среда исполнения контейнеров кластера Kubernetes с драйвером хранилища overlay2 |
«Московская серверная операционная система» с ядром не ниже 6.8; среда исполнения контейнеров кластера Kubernetes с драйвером хранилища overlay2 и поддержкой графических ускорителей |
| Ресурсы контейнеров | Запросы и пределы ресурсов задаются раздельно для редактора и менеджера сессий, прикладного API, хранилищ и маршрутизации | Запросы и пределы ресурсов задаются раздельно для исполнителя отладочных запусков и конвертеров |
| Сетевой интерфейс | Не ниже 1 Гбит/с | Не ниже 1 Гбит/с; при регулярной передаче проверочных файлов объёмом более 1 ГБ — 10 Гбит/с между узлом и объектным хранилищем |
| Синхронизация времени | Единый источник точного времени по протоколу NTP; расхождение между узлами — не более 1 секунды | Единый источник точного времени по протоколу NTP; расхождение между узлами — не более 1 секунды |
| Резервное копирование | Согласованное по времени копирование хранилищ метаданных, данных редактора и связанных бакетов объектного хранилища — не реже одного раза в сутки; RPO — не хуже 24 часов, RTO и порядок контрольного восстановления — по регламенту заказчика | Не требуется: контейнерные образы, локальный кэш моделей и временные файлы отладки восстанавливаются из внешних источников |
| Бесперебойное питание | Автономная работа не менее 10 минут с автоматическим завершением работы узла по сигналу источника | Автономная работа не менее 10 минут с автоматическим завершением работы узла по сигналу источника |
Таблица 4.4.1 — Требования к узлам, не нормированные подразделом 4.3.
Число графических ускорителей, выделяемых компоненту, и число вычислительных нод, на которых они размещаются, определяются требуемым параллелизмом отладочных запусков и конвертаций (п. 4.3.3).
4.4.2. Удельные величины для расчёта конфигурации¶
| Величина | Значение | Применение при проектировании |
|---|---|---|
| Суммарный объём контейнерных образов компонента | Не менее 44 ГБ с учётом общих слоёв; предусматривается место для текущей и новой версии | Расчёт дискового пространства мастер-ноды и вычислительной ноды |
| Начальный резерв рабочих данных | Не менее 25 ГБ: рабочие данные отладочного контура, данные и конфигурация редактора, метаданные сценариев | Расчёт ёмкости хранилищ мастер-ноды |
| Фактические объёмы данных при интенсивной эксплуатации | На контуре отладки объём проверочных файлов, результатов запусков, рабочих каталогов и кэша моделей достигает десятков и сотен ГБ | Проверка достаточности выделенного дискового пространства и сроков хранения |
| Фоновое потребление оперативной памяти составными частями в состоянии готовности | Около 2,7 ГБ для полного состава сервисов без активных сессий и запусков | Расчёт оперативной памяти мастер-ноды сверх объёма сессий и задач |
| Дополнительная оперативная память на одну сессию редактора | Не менее 1 ГБ; уточняется по размеру графа и числу открытых вкладок | Расчёт оперативной памяти мастер-ноды по числу одновременных пользователей |
| Дополнительная оперативная память на один отладочный запуск | Не менее размера распакованных артефактов используемых моделей | Расчёт оперативной памяти вычислительной ноды |
| Видеопамять на одну параллельную задачу | Не менее 16 ГБ на выделенном ускорителе | Расчёт числа и типа графических ускорителей |
| Объём клиентского приложения | Не более 39 МБ несжатых статических ресурсов | Расчёт пропускной способности каналов к рабочим местам |
| Объём хранилищ метаданных | Мал по отношению к объектным данным; растёт пропорционально числу сценариев, версий, наборов данных и запусков | Расчёт ёмкости SSD мастер-ноды и параметров резервного копирования |
| Запас свободного места на томах хранилищ | Не менее 20 % | Расчёт ёмкости SSD и объектного хранилища |
Таблица 4.4.2 — Удельные величины для расчёта конфигурации.
Ёмкость объектного хранилища рассчитывается раздельно по проверочным данным и результатам отладочных запусков как произведение ожидаемого числа объектов, их среднего размера и установленного срока хранения, с запасом не менее 20 %. Объёмы локального кэша моделей и рабочих каталогов не суммируются с объёмом объектного хранилища: они частично содержат копии тех же данных.
4.4.3. Параметры, определяемые проектом поставки¶
| Параметр | Что требуется определить | Как используется |
|---|---|---|
| Профиль пользователей | Число одновременно работающих пользователей и сессий редактора, интенсивность сохранения и публикации версий | Определяет процессорные ядра и оперативную память мастер-ноды |
| Профиль параллелизма | Максимальное число одновременно выполняемых отладочных запусков и конвертаций, допустимое время ожидания задачи в очереди | Определяет число выделяемых компоненту ускорителей и объём процессорных ядер, оперативной памяти и рабочих каталогов по п. 4.3.3 |
| Порядок совмещения нагрузки | Наличие запаса ресурсов на узлах кластера, регламент выполнения отладочных запусков относительно периодов пиковой нагрузки видеоаналитики | Определяет, выделяются ресурсы компонента сверх минимальной конфигурации узлов или из их запаса (п. 4.3.2) |
| Профили моделей и проверочные данные | Поддерживаемые типы моделей и требования к видеопамяти; предельные размер, разрешение и длительность проверочных файлов, число версий наборов данных | Определяет тип графических ускорителей, оперативную память, ёмкость объектного хранилища и пропускную способность сети |
| Каталог логических блоков | Состав стандартных и пользовательских блоков и используемых ими библиотек | Определяет состав контейнерных образов и их объём |
| Сроки хранения | Сроки хранения версий сценариев, проверочных файлов, результатов запусков, кадров и журналов | Определяют ёмкость хранилищ и параметры очистки |
| Отказоустойчивость | Допустимое время восстановления, необходимость резервирования узлов, хранилищ, сетевых каналов и источников питания, значения RPO и RTO | Определяет число узлов кластера и схему резервирования |
| Информационная безопасность | Сегментация сети, политики Kubernetes, TLS, порядок доступа обслуживающего персонала и хранения секретов | Определяет схему соединений и правила фильтрации трафика |
Таблица 4.4.3 — Параметры, определяемые проектом поставки.
Конфигурация рассчитывается по параметрам таблицы 4.4.3 и удельным величинам таблицы 4.4.2: определяются число выделяемых компоненту графических ускорителей, ёмкость хранилищ и параметры сети, обеспечивающие показатели подраздела 2.3.
5. Вызов и загрузка¶
Компонент вызывается двумя способами:
- пользователем — из веб-интерфейса Платформы 4.0;
- интеграционным клиентом — через программные интерфейсы Платформы 4.0.
Загрузка серверных составных частей выполняется администратором при запуске Платформы 4.0. Пользователь не запускает исполняемые файлы компонента и не устанавливает их на своё рабочее место. LPI-VAP-CORE выполняет аутентификацию пользователя через СУДИР и формирует пользовательский контекст. После этого браузер загружает клиентское приложение, а оно создаёт сессию редактора и обращается к хранилищам сценариев, запусков и проверочных данных через единый API-шлюз.
5.1. Способ вызова программы¶
5.1.1. Вызов пользователем¶
Для вызова компонента пользователь должен:
- запустить поддерживаемый веб-браузер;
- открыть внешний адрес Платформы 4.0, установленный для целевой поставки;
- пройти единый вход: LPI-VAP-CORE перенаправляет пользователя в СУДИР, после успешного возврата проверяет групповое право и формирует пользовательский контекст с ролью и полномочиями;
- открыть доступный для назначенной роли раздел управления сценариями;
- выбрать сценарий и его версию, после чего вызвать редактирование либо отладочный запуск соответствующей командой интерфейса.
Точный протокол, доменное имя, порт и адрес возврата СУДИР фиксируются в эксплуатационной документации LPI-VAP-CORE конкретной поставки. Самостоятельная аутентификация пользователя и непосредственное взаимодействие LPI-VAP-RS с СУДИР не выполняются; компонент проверяет переданные полномочия при каждой защищённой операции.
После выбора команды редактирования веб-интерфейс передаёт идентификатор версии сценария серверной части компонента. Сервер создаёт изолированную сессию, загружает сохранённый граф и возвращает динамический адрес экземпляра редактора Node-RED. Пользователь продолжает работу во встроенной области редактора; ввод внутреннего адреса сессии вручную не требуется.
единая точка входа participant SUDIR as СУДИР participant UI as Веб-интерфейс Платформы 4.0 participant GW as Web-шлюз participant SB as Бэкенд среды разработки participant SS as Хранилище сценариев participant NR as Экземпляр редактора Node-RED U->>CORE: Открыть Платформу 4.0 CORE->>SUDIR: Аутентификация пользователя SUDIR-->>CORE: Результат и групповые права CORE-->>U: Сеанс и разрешённый интерфейс U->>UI: Выбрать версию сценария UI->>GW: Команда редактирования GW->>SB: Создать сессию для версии SB->>SS: Получить сохранённый граф SS-->>SB: Граф и атрибуты версии SB->>NR: Создать экземпляр и загрузить граф NR-->>SB: Динамический адрес редактора SB-->>UI: Параметры сессии и адрес UI-->>U: Рабочая область редактора
Схема 5.1 — Вызов редактора сценария пользователем
5.1.2. Запуск серверных составных частей¶
Первичный запуск и запуск после остановки выполняет администратор целевого контура. До запуска должны быть выполнены следующие условия:
- узлы Kubernetes подготовлены по разделу 4, имеют проектные метки и состояние готовности;
- компоненту назначены запросы и пределы ресурсов не ниже минимальной
конфигурации; на вычислительной ноде опубликован ресурс
nvidia.com/gpu; - контейнерные образы версии поставки доступны в разрешённом реестре;
- подготовлены постоянные и временные тома, конфигурация и секреты; секретные значения не включены в открытые файлы поставки;
- доступны PostgreSQL, S3-совместимое объектное хранилище и необходимые сервисы Платформы 4.0;
- доступны Kafka и Redis изолированного контура отладки;
- драйвер NVIDIA и средства предоставления GPU доступны рабочим нагрузкам отладочного исполнения.
Запуск выполняется штатными средствами развёртывания целевой поставки: конфигурация кластера применяется, после чего оркестратор создаёт рабочие нагрузки, подключает тома, передаёт конфигурацию и размещает поды на узлах требуемого типа. Точки запуска хранилищ ожидают объявленные зависимости, применяют миграции схемы PostgreSQL и затем запускают прикладной сервер. Хранилища и брокеры запускаются до прикладных сервисов; затем запускаются редактор, менеджер сессий, исполнитель и конвертеры, после чего публикуются внешние маршруты. Запуск отдельных процессов внутри контейнеров вручную не является штатным способом эксплуатации. После перезагрузки узла рабочие нагрузки восстанавливаются Kubernetes в соответствии с контроллерами и политиками развёртывания.
Рекомендуемый порядок загрузки приведён в таблице 5.1.1. Параллельный запуск сервисов одного этапа допустим, если оркестратор контролирует готовность их зависимостей.
| Этап | Загружаемые средства | Условие перехода к следующему этапу |
|---|---|---|
| 1. Базовая инфраструктура | Среда исполнения контейнеров и средства оркестрации Kubernetes, внутренние сети, постоянные тома, доступ к реестру образов, драйвер и средства предоставления графических ускорителей контейнерам | Узлы доступны оркестратору; тома подключены; GPU виден назначенным вычислительным контейнерам |
| 2. Хранение и обмен | PostgreSQL, S3-совместимое хранилище и Kafka Платформы 4.0; Redis изолированного контура отладки | Базы принимают соединения; объектное хранилище доступно; брокеры готовы принимать и выдавать сообщения |
| 3. Прикладные хранилища | wf-scenario-storage, wf-asset-storage, wf-launch-storage |
Миграции завершены; прикладные серверы запущены; программные контракты доступны |
| 4. Среда разработки | sbx-sandbox-backend, sbx-node-red-vl, inf-flows-manager |
Прикладной API отвечает; менеджер сессий может создать экземпляр редактора; каталог логических блоков загружен |
| 5. Отладочный контур | sbx-celery, sbx-yolo_converter, sbx-mm_converter, sbx-flower |
Исполнитель подключён к очереди; рабочие каталоги, конвертеры и GPU доступны |
| 6. Внешний доступ | sbx-nginx, веб-интерфейс и API-шлюз Платформы 4.0 |
Страница входа открывается; защищённый маршрут сценариев требует действующую сессию; запросы маршрутизируются к прикладным сервисам и редактору |
Таблица 5.1.1 — Порядок загрузки серверных составных частей.
Порядок запуска и остановки приведён на схеме 5.2.
среда исполнения контейнеров и Kubernetes,
сети, тома, графические ускорители"] G2["2. Хранение и обмен
PostgreSQL, объектное хранилище, Kafka;
Redis и очередь задач контура отладки"] G3["3. Прикладные хранилища
сценарии, проверочные данные, запуски"] G4["4. Среда разработки
прикладной API, менеджер сессий и редактор,
менеджер графов"] G5["5. Отладочный контур
исполнитель отладочных запусков,
конвертеры, мониторинг очереди"] G6["6. Внешний доступ
маршрутизация, веб-интерфейс и шлюз прикладных интерфейсов"] CHK{"Проверка готовности
группы пройдена?"} RST["Перезапуск сервиса средствами оркестратора;
запуск следующих групп приостановлен"] OK["Компонент готов к работе"] G1 --> G2 --> G3 --> G4 --> G5 --> G6 --> CHK CHK -->|нет| RST RST --> CHK CHK -->|да| OK
Схема 5.2 — Порядок запуска серверных составных частей (остановка выполняется в обратном порядке).
Для пользователя различаются два уровня готовности:
- готовность каталога сценариев — доступны аутентификация, веб-интерфейс, API-шлюз, хранилище сценариев, его PostgreSQL и объектное хранилище; пользователь может просматривать сценарии и версии в пределах назначенных прав;
- полная функциональная готовность — дополнительно доступны прикладной API среды, редактор, хранилища проверочных данных и запусков, Kafka, Redis, исполнитель, конвертеры и GPU; разрешены редактирование, сохранение, публикация и отладка версий.
Контейнер со статусом running не является достаточным признаком
работоспособности всего компонента. После запуска администратор выполняет
проверки из таблицы 5.1.2.
| Объект проверки | Признак готовности |
|---|---|
| Контейнеры прикладных сервисов | Требуемые контейнеры находятся в состоянии выполнения; отсутствуют циклические перезапуски; число перезапусков и последние журналы проверены |
| PostgreSQL | Экземпляр принимает соединения; миграции хранилищ завершились без ошибки |
| S3-совместимое хранилище | Доступны бакеты проверочных данных и результатов; разрешены контрольные операции чтения и записи по регламенту эксплуатации |
| Kafka и Redis | Брокеры доступны; требуемые топики и группы потребителей созданы; очередь задач принимает сообщения |
| Хранилища сценариев, ассетов и запусков | Внутренние OpenAPI-контракты отвечают; чтение каталога сценариев завершается без серверной ошибки |
| Среда разработки | Прикладной API отвечает; создание пробной сессии завершается запуском экземпляра редактора и его закрытием |
| Отладочный контур | Исполнитель подключён к очереди; конвертеры видят общие рабочие каталоги и GPU; пробный запуск по утверждённой методике завершается с ожидаемым состоянием |
| Веб-доступ | Страница входа открывается; защищённый маршрут сценариев перенаправляет неаутентифицированный запрос на вход и открывается для пользователя с назначенной ролью |
Таблица 5.1.2 — Проверка готовности после загрузки.
Штатные команды зависят от утверждённого профиля поставки: применение конфигурации кластера, загрузка образов на узлы, просмотр состояния и журналов составных частей выполняются средствами оркестрации Kubernetes. Точные имена файлов конфигурации, пространств имён, наборов ресурсов и команды запуска, остановки и просмотра журналов требуется предоставить в руководстве администратора целевой поставки. Команды, каталоги и имена ресурсов контура разработки в настоящий документ не включаются.
При плановой остановке сначала прекращают приём новых сессий редактора и отладочных запусков, затем дожидаются завершения либо регламентированно останавливают асинхронные задачи и закрывают сессии. После этого останавливают прикладные сервисы, а PostgreSQL, S3, Kafka и Redis — последними. Закрытие вкладки браузера или выход пользователя из системы не останавливает серверные составные части.
5.2. Входные точки в программу¶
5.2.1. Веб- и программные входные точки¶
Базовые адреса в таблице 5.2.1 указаны относительно внешнего адреса, назначенного при установке. Технические маршруты используются веб-интерфейсом автоматически и не являются отдельными пользовательскими страницами, если не указано иное.
| Входная точка | Адрес или маршрут | Назначение | Инициатор |
|---|---|---|---|
| Единая страница входа Платформы 4.0 | https://<базовый адрес Платформы 4.0>/login |
Вызов LPI-VAP-CORE, который взаимодействует с СУДИР и после успешного входа формирует пользовательский контекст; входной точкой LPI-VAP-RS не является | Пользователь |
| Раздел управления сценариями | Пункт основного веб-интерфейса; типовой встроенный маршрут — /sandbox/settings/sandbox/, точное значение задаётся параметрами поставки |
Выбор сценария и версии, создание версии, переход к редактированию и отладке | Пользователь |
| Клиентская часть среды разработки | /sandbox/ |
Загрузка интерфейса сессии, проверочных файлов, результатов и команд отладки | Веб-интерфейс Платформы 4.0 |
| Конфигурация клиентской части | /sandbox/config.json |
Передача браузеру согласованных адресов API, редактора и канала оперативных обновлений | Браузер |
| Прикладной API среды | /sandbox/backend/ |
Создание и закрытие сессий, управление отладочным запуском и сохранением графа | Клиентская часть среды разработки |
| Канал оперативных обновлений | /sandbox/socket.io/ |
Передача прогресса и состояния отладочного запуска | Клиентская часть среды разработки |
| Общая входная точка редактора | /sandbox/node-red/ |
Загрузка общей части Node-RED и каталога логических блоков | Клиентская часть среды разработки |
| Редактор отдельной сессии | /sandbox/node-red/<идентификатор сессии>/ |
Изолированное редактирование выбранной версии сценария | Бэкенд среды разработки |
| Мониторинг очереди отладочных задач | /sandbox/flower/ |
Технический контроль Celery-задач; доступ разрешается только администратору | Администратор |
Таблица 5.2.1 — Входные точки компонента.
Внешний доступ следует публиковать через web-шлюз Платформы 4.0. Прямой доступ пользователей к внутренним адресам контейнеров, PostgreSQL, Redis, Kafka, объектному хранилищу и Unix-сокетам конвертеров не предусматривается. Перечень внешних REST API, разрешённых для интеграционных клиентов, их полный базовый путь и способ аутентификации определяются спецификацией API целевой поставки в соответствии с приложением Г.
5.2.2. Порядок загрузки пользовательской сессии¶
При открытии раздела выполняются следующие действия:
- браузер загружает клиентское приложение и файл его эксплуатационной конфигурации;
- клиентское приложение устанавливает соединение с прикладным API и каналом оперативных обновлений;
- при выборе версии сценария бэкенд создаёт запись сессии и отдельный рабочий каталог;
- из хранилища сценариев загружаются граф, атрибуты версии и связанные параметры;
- менеджер Node-RED запускает отдельный процесс редактора и возвращает его адрес клиентскому приложению;
- после готовности экземпляра редактор отображается пользователю во встроенной рабочей области.
Если загрузка клиентской конфигурации, создание сессии или запуск экземпляра Node-RED не завершены успешно, рабочая область сценария не считается загруженной. Пользователь должен получить сообщение об ошибке, а незавершённая сессия подлежит закрытию средствами серверной части.
5.2.3. Объём программы и использование памяти¶
Объём загружаемых контейнерных образов и фактическое потребление памяти зависят от версии поставки, набора логических блоков, состава моделей и числа параллельных сессий и запусков. Приведённые ниже значения подтверждены проверкой работоспособности компонента в полном составе составных частей и являются минимально допустимыми («не менее») для целевой поставки; удельные величины для расчёта ёмкости хранилищ приведены в п. 4.4.2.
| Параметр | Подтверждённое значение и порядок определения |
|---|---|
| Суммарный объём контейнерных образов компонента | Не менее 44 ГБ: подтверждено для контрольной сборки с учётом образов редактора, прикладного API, очереди, исполнителя отладочных запусков и конвертеров. Точный состав фиксируется ведомостью образов целевой версии поставки |
| Объём клиентского приложения, загружаемого браузером | Не более 39 МБ несжатых статических ресурсов (подтверждено для контрольной сборки); фактически передаваемый объём меньше за счёт сжатия и кэширования и измеряется при приёмке |
| Потребление ОЗУ серверными составными частями после запуска без пользовательских сессий | Не менее 3 ГБ: подтверждено потребление около 2,7 ГБ составными частями компонента в состоянии готовности |
| Дополнительное потребление ОЗУ одной сессией редактора | Определяется размером графа и числом открытых вкладок; резервируется не менее 1 ГБ на сессию, значение уточняется проектным расчётом при числе сессий выше десяти |
| Потребление ОЗУ одним отладочным запуском | Определяется форматом и разрешением проверочных файлов и составом моделей; резервируется не менее объёма распакованных артефактов модели на каждый параллельный запуск и измеряется при приёмке |
| Потребление видеопамяти одним отладочным запуском | На каждый параллельный запуск выделяется отдельный ускоритель с видеопамятью не менее 16 ГБ (подтверждено на ускорителях с 24 ГБ); значения по моделям измеряются при приёмке |
| Объём постоянных данных и темп их прироста | Подтверждённое наполнение: 21 ГБ рабочих данных отладочного контура, 94 МБ данных редактора, 1,3 МБ конфигураций, 10 МБ метаданных сценариев; прирост рассчитывается по числу версий, объёму проверочных файлов, результатов и срокам хранения |
Таблица 5.2.3 — Сведения об объёме программы и использовании памяти.
Для заполнения таблицы необходимо измерить целевую версию при отсутствии нагрузки и при согласованной минимальной и максимальной нагрузке. Результаты должны содержать значения для серверных узлов, графических ускорителей и браузера, а также запас ресурсов, принятый для рекомендуемой конфигурации.
6. Входные данные¶
Входные данные компонента образуют две группы:
- данные проектирования сценария — сведения о сценарии и его версии, граф логических блоков, параметры блоков и команды пользователя;
- данные отладки — выбранная версия сценария, версия набора проверочных данных, изображения или видеозаписи и связанные с ними зоны.
Справочники моделей, типов зон и видов событий поступают от смежных компонентов Платформы 4.0 и используются для проверки и дополнения пользовательского ввода. Рабочий видеопоток камеры не является непосредственным входом LPI-VAP-RS: компонент отлаживает сценарий на заранее загруженных проверочных файлах. Приём потока от камеры и применение опубликованной версии сценария относятся к промышленному контуру LPI-VAP-CORE и исполняющему ядру видеоаналитики.
6.1. Характер и организация входных данных¶
Входные данные поступают через веб-интерфейс либо по внутренним программным интерфейсам составных частей. Структурированные данные передаются сообщениями и хранятся как записи, связанные идентификаторами. Двоичные медиафайлы хранятся отдельно в S3-совместимом объектном хранилище; в сообщениях между сервисами передаются их идентификаторы и временные подписанные ссылки.
| Группа входных данных | Источник | Организация данных | Назначение |
|---|---|---|---|
| Контекст пользователя и команды | Веб-интерфейс Платформы 4.0 | Идентификатор пользователя, права доступа, идентификатор сессии и команды создания, изменения, сохранения, публикации, запуска и остановки | Управление жизненным циклом сценария и сессией редактора |
| Сведения о сценарии | Пользователь; хранилище сценариев | Одна запись сценария и набор связанных записей версий, атрибутов и комментариев | Идентификация и версионирование разрабатываемой логики |
| Граф версии сценария | Визуальный редактор Node-RED; хранилище сценариев | Упорядоченный массив JSON-объектов вкладок, блоков, групп и связей; относится к одной версии сценария | Визуальное редактирование, сохранение и последующее исполнение сценария |
| Настройки блоков | Визуальный редактор; сервис обработки графов | Набор блоков, в каждом из которых задан перечень параметров, текущих и допустимых значений | Проверка настроек, поиск зависимостей и подготовка исполнения |
| Справочные данные | LPI-VAP-MM и LPI-VAP-CORE | Списки моделей и их версий, типов зон, категорий событий и нарушений | Формирование вариантов выбора в параметрах логических блоков |
| Набор проверочных данных | Пользователь через функции управления проверочными данными | Ассет, его версия, папки, метаданные файлов и ссылки на объекты в хранилище | Организация воспроизводимых исходных данных отладки |
| Проверочные медиафайлы | Пользователь | Один или несколько файлов изображений либо видеозаписей одного типа в пределах ассета | Получение кадров для отладочного выполнения графа |
| Описания зон | Пользователь; справочник типов зон | Перечень геометрических областей, связанный с конкретным медиафайлом и версией ассета | Проверка логики, зависящей от положения объектов в зоне |
| Параметры отладочного запуска | Веб-интерфейс; хранилища сценариев и проверочных данных | Тип проверяемой сущности, идентификаторы версии сценария и версии ассета; при исполнении дополняются идентификаторами запуска, сессии и файлов | Создание и трассировка отладочного запуска |
| Управляющие сообщения | Составные части LPI-VAP-RS | JSON-сообщения с идентификаторами запуска и сессии, адресом следующего файла и командами продолжения или остановки | Асинхронное управление исполнением нескольких файлов |
Таблица 6.1.1 — Характер и организация входных данных.
Связи основных входных наборов показаны на схеме 6.1.
изображения или видео"] U --> ZONES["Зоны для файлов"] REF["Справочники Платформы 4.0
модели, зоны, события"] --> GRAPH META --> VER["Версия сценария"] GRAPH --> VER ASSET --> AVER["Версия ассета"] ZONES --> AVER VER --> RUN["Отладочный запуск"] AVER --> RUN RUN --> EXEC["Исполнительная сессия"]
Схема 6.1 — Формирование входных данных отладочного запуска
Конфигурации каталога блоков и Python-модули пользовательских блоков являются управляемыми данными разработки и поставки. Они загружаются в серверный контур уполномоченным специалистом, а не передаются как часть обычного отладочного запуска. Конфигурации блоков формируются в формате JSON и актуализируются при изменении доступных моделей и справочников.
6.2. Предварительная подготовка входных данных¶
Перед созданием или изменением сценария должны быть выполнены следующие действия:
- Пользователь должен быть аутентифицирован в Платформе 4.0 и иметь права на работу со сценариями и проверочными данными. Идентификатор пользователя и разрешения формируются средствами управления доступом и не вводятся в граф вручную.
- Должны быть созданы сценарий и его рабочая неопубликованная версия либо выбрана существующая версия, доступная для редактирования. Наименование сценария и обозначение версии должны быть непустыми и уникальными в пределах соответствующего хранилища.
- Справочники моделей, их версий, типов зон и видов событий должны быть синхронизированы со смежными компонентами. Выбранные в блоках значения должны существовать и быть доступны в целевой версии поставки.
- В графе следует задать вкладку сценария, разместить требуемые логические блоки, заполнить обязательные параметры и соединить выходы блоков со входами последующих блоков. Имена передаваемых полей должны совпадать у связанных блоков.
- Перед сохранением серверная часть извлекает из графа настройки блоков и проверяет входное сообщение по схеме. Параметры, для которых каталогом определён список допустимых значений, должны содержать значение из этого списка.
Для подготовки данных отладки необходимо:
- Создать ассет требуемого типа — «изображения» или «видео» — и его рабочую версию. Медиафайлы разных типов не следует объединять в одной версии ассета.
- Загрузить файлы JPG или PNG для ассета изображений либо файлы MP4 для видеоассета. Загруженный видеофайл должен открываться установленными в компоненте средствами декодирования: после загрузки система читает его длительность и формирует кадр предварительного просмотра.
- При необходимости задать зоны отдельно для каждого медиафайла. Полигон должен содержать числовые координаты точек, а тип зоны должен присутствовать в справочнике. Координаты должны соответствовать системе координат исходного изображения или кадров видео.
- Убедиться, что требуемые графом модели и их исполняемые веса доступны отладочному исполнителю.
- Выбрать совместимые версии сценария и ассета. При запуске передаются именно их идентификаторы; файлы, зоны и UUID вкладки сценария разрешаются серверной частью автоматически.
Файлы не требуется кодировать в Base64 или включать в JSON-запрос. Клиент сначала получает подписанную ссылку, передаёт по ней двоичное содержимое в объектное хранилище, а затем регистрирует успешную загрузку и метаданные файла.
| Проверка перед использованием | Действие при несоответствии |
|---|---|
| Версия сценария удалена, архивирована либо недоступна | Выбрать действующую версию или восстановить её в установленном порядке |
| Граф отсутствует или содержит неизвестный тип блока | Дополнить граф либо актуализировать каталог блоков; запуск не выполнять до устранения ошибки |
| Указанная модель или её версия недоступна | Выбрать доступную версию либо выполнить регламентированную поставку и подготовку модели |
| Формат файла не соответствует типу ассета | Преобразовать файл в JPG, PNG или MP4 и загрузить повторно |
| Видеофайл не декодируется | Перекодировать файл с параметрами, поддерживаемыми целевой поставкой |
| Подписанная ссылка недействительна или истекла | Получить новую ссылку и повторить загрузку |
| Для логики сценария требуются зоны, но они не заданы | Создать зоны для соответствующих файлов и повторить запуск |
Таблица 6.2.1 — Предварительный контроль входных данных.
Предельный размер одного файла, число файлов в версии ассета, допустимые разрешения изображений, частота кадров, видеокодеки и суммарный объём ассета фиксируются в спецификации программных интерфейсов и эксплуатационной документации целевой поставки в соответствии с приложением Г. Ограничение ёмкости объектного хранилища не следует использовать как предельный размер отдельного файла.
6.3. Формат входных данных¶
| Вид данных | Формат | Представление или тип содержимого |
|---|---|---|
| Запросы веб-интерфейса и составных частей | JSON поверх HTTP/HTTPS | application/json, текст в UTF-8 |
| Граф версии сценария | JSON, сессионное имя файла flows.json |
Массив объектов Node-RED; в хранилище — поле flow_data типа «массив объектов» |
| Извлечённые настройки графа | JSON | Объект flow_settings, содержащий массив blocks |
| Конфигурация каталога блоков | JSON | Массив или объект конфигурации блока с описанием входов, выходов, параметров, вариантов выбора и локализованных названий |
| Проверочное изображение | JPEG/JPG или PNG | Двоичный файл, тип ассета image |
| Проверочная видеозапись | MP4 | Двоичный файл, тип ассета video; иное расширение для видео отклоняется |
| Описание зон | JSON | Перечень зон, геометрия полигонов и связанные идентификаторы файла, версии и типа зоны |
| Сообщения управления запуском | JSON в сообщениях Kafka и HTTP-запросах | Идентификаторы запуска, сессии, версии и файла, статус или команда |
| Оперативные команды и состояние сессии | JSON по HTTP/WebSocket; внутреннее представление Redis | Идентификатор сессии, выбранная вкладка графа, имя файла и номер кадра |
| Подписанная ссылка на файл | Строка URI | Временный HTTP/HTTPS-адрес объекта S3; не является постоянным идентификатором файла |
Таблица 6.3.1 — Форматы входных данных.
Используемый видеоконтейнер установлен — MP4, однако перечень поддерживаемых видеокодеков и профилей кодирования определяется библиотеками целевой сборки. Согласованный перечень кодеков, ограничения разрешения, частоты кадров и длительности видео, а также разрешения, числа каналов и глубины цвета изображений фиксируются для целевой поставки в соответствии с приложением Г.
6.4. Описание входных данных¶
6.4.1. Сценарий и версия¶
Основные поля, из которых формируются сведения о сценарии и его версии, приведены в таблице 6.4.1. Поля системных идентификаторов создаются или дополняются серверной частью; пользователь выбирает соответствующую сущность в интерфейсе и не обязан вводить идентификатор вручную.
| Поле | Тип и допустимое значение | Обязательность | Описание |
|---|---|---|---|
name |
Строка, до 255 символов | Да | Наименование сценария |
description |
Строка, до 255 символов | Нет | Краткое описание сценария или его версии |
section_id |
Целое число или пустое значение | Нет | Идентификатор каталога, в котором размещён сценарий |
scenario_type |
frame_scenario или event_scenario |
Да; по умолчанию frame_scenario |
Тип обработки: кадровый или событийный сценарий |
scenario_id |
Положительное целое число | Формируется системой | Идентификатор сценария |
version |
Строка, до 255 символов | Да | Обозначение версии сценария |
execute_type |
by_camera, by_object или all_cameras |
Для событийного сценария; по умолчанию by_camera |
Область состояния и способ выполнения событийного сценария |
version_id |
Положительное целое число | Формируется системой | Идентификатор записи версии |
version_uuid |
Строковый идентификатор вкладки графа | Формируется из графа | Связывает версию с корневой вкладкой в flows.json |
attributes |
Массив пар name/value; каждая строка — до 255 символов |
Нет | Дополнительные атрибуты сценария или версии, включая проектные классификационные признаки |
user_id |
Целочисленный идентификатор пользователя | Передаётся серверным контекстом | Обеспечивает учёт автора изменения; не является параметром логического блока |
Таблица 6.4.1 — Входные данные сценария и версии
Признаки публикации, архивирования и удаления являются состоянием хранилища, а не свободно задаваемыми данными графа. Их изменение выполняется отдельными командами с проверкой прав и допустимости перехода состояния.
6.4.2. Граф и настройки блоков¶
flow_data содержит JSON-массив объектов Node-RED. Общие поля объектов
приведены в таблице 6.4.2. Набор специальных параметров зависит от типа блока и
его конфигурации, поэтому неизвестные универсальной схеме поля сохраняются в
составе объекта блока.
| Поле | Тип | Описание |
|---|---|---|
id |
Строка | Уникальный в пределах графа идентификатор вкладки, группы или блока |
type |
Строка | Тип объекта; значение tab обозначает вкладку, остальные значения сопоставляются с типами логических блоков |
label или name |
Строка | Отображаемое наименование вкладки или блока |
z |
Строка | Идентификатор вкладки, к которой относится блок |
wires |
Массив массивов строк | Идентификаторы блоков-получателей для каждого выхода блока |
x, y |
Число | Координаты блока на рабочем поле редактора; на вычислительный результат не влияют |
| Параметры блока | Строка, число, логическое значение, объект, массив или пустое значение | Выбранная модель и версия, пороги, имена входных и выходных полей и иные настройки конкретного блока |
Таблица 6.4.2 — Общие поля объекта графа
Производное представление flow_settings имеет следующую структуру:
| Поле | Тип | Описание |
|---|---|---|
blocks |
Массив объектов | Блоки, параметры которых извлечены из графа |
blocks[].id |
Строка | Идентификатор блока в графе |
blocks[].name |
Строка | Наименование блока |
blocks[].type |
Строка | Тип блока |
blocks[].parameters |
Массив объектов | Настраиваемые параметры блока |
parameters[].name |
Строка | Машинное имя параметра |
parameters[].type |
Строка или пустое значение | Тип параметра, заданный конфигурацией блока |
parameters[].value |
Строка, число, логическое значение или null |
Текущее значение |
parameters[].editable |
Логическое значение | Признак возможности изменения |
parameters[].default_value |
Строка, число, логическое значение или null |
Значение по умолчанию |
parameters[].options |
Массив объектов | Допустимые варианты выбора с идентификаторами и отображаемыми названиями |
parameters[].translations |
Массив объектов | Локализованные названия параметра |
Таблица 6.4.3 — Поля настроек блоков
В отдельных полях блока сложное значение может сохраняться как строка,
содержащая вложенный JSON. Перед использованием такое поле разбирается
реализацией соответствующего блока. Ручное изменение flows.json штатным
пользователем не предусматривается: граф и его параметры формируются
визуальным редактором.
6.4.3. Проверочные данные и зоны¶
| Поле | Тип и допустимое значение | Описание |
|---|---|---|
asset_id |
Положительное целое число | Идентификатор набора проверочных данных |
asset_type |
image или video |
Единый тип медиафайлов ассета |
asset_version_id |
Положительное целое число | Идентификатор выбранной версии ассета |
file_name |
Строка, до 255 символов | Исходное имя файла, отображаемое пользователю |
file_type |
image или video |
Тип зарегистрированного медиафайла |
media_uri |
Строка URI | Внутреннее имя объекта в S3-совместимом хранилище; формируется системой |
folder_id |
Целое число | Идентификатор папки файла внутри версии ассета |
file_id |
Положительное целое число | Идентификатор медиафайла, с которым связаны зоны |
zone_type_id |
Целое число | Идентификатор типа зоны из справочника |
zid |
Строка | Машинное обозначение типа зоны |
name, title |
Строки | Наименование и необязательный заголовок зоны |
model |
Строка или пустое значение | Обозначение модели, если зона связана с конкретной моделью |
is_active |
Логическое значение | Признак использования зоны; по умолчанию true |
polygons |
Строка с сериализованным JSON-массивом координат | Один или несколько полигонов зоны; при исполнении преобразуются в числовые массивы |
color_hex |
Строка вида #RRGGBB, 7 символов |
Цвет отображения зоны |
Таблица 6.4.4 — Входные данные проверочного ассета и зон
Логическое представление геометрии одного полигона — упорядоченный список
точек [[x1, y1], [x2, y2], ...]; для нескольких полигонов используется
внешний массив. Координаты задаются числами. Точное правило нормализации
координат — абсолютные пиксели либо доли ширины и высоты — определяется в
спецификации API и руководстве пользователя целевой поставки в соответствии с
приложением Г.
6.4.4. Отладочный запуск¶
Минимальный запрос на создание отладочного запуска содержит:
| Поле | Тип и допустимое значение | Описание |
|---|---|---|
entity_type |
Строка scenario |
Вид проверяемой сущности |
entity_version_id |
Положительное целое число | Идентификатор версии сценария |
asset_version_id |
Положительное целое число | Идентификатор версии проверочного ассета |
Таблица 6.4.5 — Входные данные создания отладочного запуска
После проверки запроса серверная часть добавляет UUID запуска, UUID вкладки сценария, идентификатор исполнительной сессии, тип ассета, список идентификаторов файлов и их подписанные URI. Для запуска на видео сначала передаётся один файл; остальные видео версии ассета подаются исполнителю последовательно. Для ассета изображений список изображений передаётся в одну исполнительную сессию.
Команда покадровой работы дополнительно может содержать имя видео, номер кадра
— целое число от нуля — и признак выдачи визуализированного кадра. Команда
запуска графа содержит идентификатор сессии и объект выбранной вкладки с полями
id, name и type.
6.5. Способ кодирования входных данных¶
Структурированные входные данные кодируются по следующим правилам:
- текст JSON и строковые поля передаются в Unicode, кодировка UTF-8;
- объект JSON заключается в фигурные скобки, массив — в квадратные; имена полей и строковые значения заключаются в двойные кавычки;
- целые и вещественные числа передаются десятичными цифрами, разделитель дробной части — точка;
- логические значения передаются литералами
trueиfalse, отсутствие значения — литераломnull; - перечисления передаются строковыми машинными значениями с учётом регистра,
например
scenario,image,video,frame_scenario; - числовые идентификаторы сценариев, версий, файлов и сессий кодируются десятичными целыми числами без разделителей;
- идентификатор запуска кодируется строкой UUID с дефисами; идентификатор вкладки и блока Node-RED передаётся строкой без преобразования;
- время создания, изменения и границы фильтра передаются как целое число секунд с начала эпохи Unix; значения времени формируются серверной частью;
- геометрия зон кодируется вложенными JSON-массивами числовых координат, цвет
— строкой
#RRGGBB; - изображения и видео передаются как исходная последовательность байтов файла с соответствующим MIME-типом и не включаются в JSON в виде Base64;
- подписанный URI используется только в течение срока его действия; постоянная связь обеспечивается системными идентификаторами ассета, версии и файла.
Имена полей JSON, машинные значения перечислений, идентификаторы блоков и имена входных и выходных полей графа чувствительны к регистру. Отображаемые русские наименования не должны использоваться вместо машинных значений, если контрактом поля предусмотрено фиксированное перечисление.
Ограничения форматов и объёмов файлов, правила валидации полигонов, контракты поставляемых логических блоков и сроки действия подписанных ссылок фиксируются для целевой поставки по перечню приложения Г. Значения со стендов разработки без проектного подтверждения не применяются.
7. Выходные данные¶
Основными результатами работы компонента являются сохранённая или опубликованная версия сценария и результаты её отладки на проверочных данных. Пользователю также выдаются сведения о сессии редактора, состояние операций, прогресс запуска, журналы и сообщения об ошибках.
Опубликованная версия становится доступна смежным компонентам Платформы 4.0 для применения в промышленном контуре. События и нарушения, сформированные при последующем исполнении сценария на рабочих видеопотоках камер, не являются выходными данными LPI-VAP-RS. К выходам данного компонента относятся только описание опубликованной версии и результаты её проверки на заранее загруженных файлах.
7.1. Характер и организация выходных данных¶
Выходные данные разделяются на постоянные и оперативные. Метаданные сценариев, версий и запусков сохраняются в PostgreSQL. Графы и извлечённые настройки хранятся совместно с соответствующей версией сценария. Файловые результаты отладки размещаются в S3-совместимом объектном хранилище, а пользователю передаются их метаданные или временные подписанные ссылки. Оперативный прогресс и ошибки передаются в веб-интерфейс через WebSocket.
| Группа выходных данных | Получатель | Организация и срок существования | Назначение |
|---|---|---|---|
| Результат прикладной операции | Веб-интерфейс или интеграционный клиент | JSON-ответ с признаком успеха, сообщением либо описанием ошибки | Подтверждение создания, изменения, сохранения, публикации и других операций |
| Сведения о сессии редактора | Веб-интерфейс Платформы 4.0 | Идентификатор сессии и динамический адрес экземпляра Node-RED; существуют в течение сессии | Открытие изолированной рабочей области редактора |
| Сценарий и его версия | Пользователь; хранилище сценариев | Связанные записи сценария, версии, атрибутов, комментариев и признаков состояния | Просмотр, редактирование и управление жизненным циклом сценария |
| Сохранённый граф и настройки | Хранилище сценариев; отладочный и промышленный контуры | JSON-граф flow_data, объект flow_settings, UUID вкладки и перечень моделей с версиями |
Повторное редактирование, отладка и формирование исполняемой цепочки |
| Сведения об опубликованных версиях | LPI-VAP-CORE и исполняющее ядро видеоаналитики | Сообщение о текущем перечне опубликованных версий и отдельные сообщения об изменении настроек | Актуализация доступных для применения сценариев |
| Запись отладочного запуска | Пользователь; хранилище запусков | Постоянная запись, связанная с версией сценария и версией проверочного ассета | Трассировка запуска, его состояния, результата и объёма артефактов |
| Оперативный прогресс | Веб-интерфейс Платформы 4.0 | Последовательность WebSocket-сообщений в ходе выполнения | Отображение номера шага, кадра, общего прогресса, событий и ошибок |
| Контекст обработки файлов | Пользователь; хранилище запусков | Перечень файлов запуска с состоянием каждого файла, числом шагов и обнаружений | Контроль обработки нескольких изображений или видеозаписей |
| Покадровые результаты | Пользователь; объектное хранилище | Каталог запуска, разделённый по медиафайлам и номерам кадров | Просмотр исходного и визуализированного кадра, сообщения и журнала выполнения |
| Итоговые результаты по медиафайлу | Пользователь; объектное хранилище | Общий журнал и перечень сформированных при отладке событий | Анализ выполнения сценария на всём файле |
| Сообщения об ошибках | Пользователь; администратор | JSON-ответ или оперативное сообщение; подробная трассировка остаётся в серверном журнале | Диагностика некорректного ввода, недоступности зависимости или ошибки исполнения |
Таблица 7.1.1 — Характер и организация выходных данных.
Формирование основных выходных данных показано на схеме 7.1.
версии сценария"] GRAPH --> SS[("Хранилище сценариев")] SS --> UI["Веб-интерфейс Платформы 4.0"] SS -->|"опубликованные версии
и настройки"| CORE["Промышленный контур Платформы 4.0"] GRAPH --> RUN["Отладочный запуск"] ASSET["Версия проверочного ассета"] --> RUN RUN --> PROGRESS["Состояние и прогресс"] RUN --> FRAME["Кадры, сообщения,
журналы и события"] PROGRESS --> LS[("Хранилище запусков")] FRAME --> S3[("Объектное хранилище")] LS --> UI S3 -->|"подписанные ссылки"| UI
Схема 7.1 — Формирование и передача выходных данных
Сроки хранения версий сценариев, результатов запусков, журналов и временных сессий должны определяться политикой целевой поставки. Значения, заданные на стендах разработки, не устанавливают требования к контуру заказчика.
7.2. Формат выходных данных¶
| Вид выходных данных | Формат | Представление или тип содержимого |
|---|---|---|
| Ответы прикладных программных интерфейсов | JSON поверх HTTP/HTTPS | application/json, текст в UTF-8 |
| Сведения о версиях, запусках и файлах | JSON | Объект либо массив объектов по соответствующей схеме данных |
| Граф сценария | JSON, логическое имя flows.json |
Массив объектов Node-RED; в ответах хранилища — поле flow_data |
| Настройки блоков сценария | JSON | Объект flow_settings с массивом блоков и их параметров |
| Сообщения об опубликованных версиях и настройках | JSON в сообщениях Kafka | Перечень опубликованных версий либо настройки одной версии |
| Оперативный прогресс и ошибки | JSON по WebSocket | Сведения о сессии, шаге, кадре, прогрессе, событиях или ошибке |
| Исходный кадр результата | JPEG | Двоичное изображение image.jpg, тип image/jpeg |
| Визуализированный кадр | JPEG | Двоичное изображение image_vis.jpg с графическими обозначениями результата |
| Сообщение после обработки кадра | JSON | Файл last_message.json; программный интерфейс возвращает его содержимое в строковом поле |
| Покадровый журнал | Текстовый файл | last_execution_log.txt, текст в UTF-8 |
| Общий журнал обработки | Текстовый файл | log.txt, текст в UTF-8 |
| События отладочного запуска | JSON | Файл events.json с объектом, содержащим массив events |
| Визуализированная видеозапись | MP4, при формировании исполнителем | Двоичный файл с суффиксом _vis.mp4; доступность долговременного хранения требует уточнения |
| Ссылка на файловый результат | Строка URI | Временная подписанная HTTP/HTTPS-ссылка на объект S3 |
| Представление результата в веб-интерфейсе | HTML5, CSS, JavaScript | Таблицы, граф, индикаторы прогресса, изображения, журналы и сообщения |
Таблица 7.2.1 — Форматы выходных данных.
Публикуемым межсервисным представлением версии сценария является JSON-граф с UUID вкладки, настройками и сведениями об используемых моделях. Отдельный файл с автоматически сформированным исходным Python-кодом в проверенных контрактах составных частей не выдаётся пользователю. Если спецификацией целевой поставки предусмотрена выгрузка такого файла, её формат, состав, интерфейс получения и правила версионирования фиксируются в соответствии с приложением Г.
7.3. Описание выходных данных¶
7.3.1. Результаты сохранения и публикации версии сценария¶
После сохранения графа серверная часть возвращает результат операции, сохраняет граф и вычисляет производные сведения: UUID корневой вкладки, настройки блоков и уникальные пары «модель — версия». Основные поля результата приведены в таблице 7.3.1.
| Поле | Тип | Описание |
|---|---|---|
status |
Логическое значение | Признак успешного выполнения операции |
msg |
Строка или null |
Краткое пояснение результата операции |
version_id |
Целое число | Идентификатор сохранённой версии сценария |
scenario_id |
Целое число | Идентификатор сценария |
version |
Строка | Обозначение версии |
description |
Строка или null |
Описание версии |
version_uuid |
Строка или null |
Идентификатор корневой вкладки графа |
models |
Массив объектов | Уникальные пары model и version, извлечённые из блоков графа |
execute_type |
Строковое перечисление | Способ выполнения событийного сценария |
is_published |
Логическое значение | Признак опубликованной версии |
is_default |
Логическое значение | Признак версии, выбранной по умолчанию |
is_editable |
Логическое значение | Признак возможности изменения версии |
is_deleted |
Логическое значение | Признак логического удаления |
archived_at |
Целое число или 0 |
Время помещения в архив; 0 означает, что версия не архивирована |
created_at, updated_at |
Целые числа | Время создания и последнего изменения |
attributes |
Массив объектов | Дополнительные пары наименования и значения, связанные с версией |
Таблица 7.3.1 — Выходные данные версии сценария
Публикация допускается только для версии, содержащей сохранённый граф. После
успешной публикации компонент формирует сообщение с актуальным перечнем
опубликованных версий. Сообщение содержит объект scenarios, внутри которого
для каждой версии передаются:
| Поле | Тип | Описание |
|---|---|---|
scenario_id |
Целое число | Идентификатор сценария |
scenario_name |
Строка | Наименование сценария |
scenario_version_id |
Целое число | Идентификатор опубликованной версии |
scenario_version |
Строка | Обозначение опубликованной версии |
scenario_version_uuid |
Строка или null |
Идентификатор вкладки графа, по которому загружается версия |
models |
Массив объектов | Модели и их версии, используемые графом |
Таблица 7.3.2 — Сведения об опубликованной версии
При изменении параметров отдельно передаётся объект со следующими полями:
scenario_id, scenario_version_id и settings. Поле settings содержит
описанную в таблице 6.4.3 структуру настроек блоков. Полный граф загружается
смежным компонентом по UUID версии через внутренний программный интерфейс.
7.3.2. Сведения об отладочном запуске¶
Созданный запуск представлен объектом со следующими полями:
| Поле | Тип | Описание |
|---|---|---|
launch_uuid |
Строка UUID | Уникальный идентификатор запуска и корневой идентификатор его файловых результатов |
created_at, updated_at |
Целые числа | Время создания и последнего изменения запуска |
description |
Строка или null |
Описание запуска |
entity_info |
Объект | Тип проверяемой сущности, идентификаторы и наименования сценария и версии, UUID вкладки графа |
asset |
Объект | Идентификаторы и наименования ассета и его версии, тип image или video |
sandbox_session_id |
Целое число или null |
Идентификатор исполнительной сессии |
progress_percent |
Целое число от 0 до 100 | Общий процент выполнения запуска |
status |
Строковое перечисление | Состояние запуска: created, running, failed, completed или stopped |
result |
Строка или null |
Пользовательское заключение или классификация результата запуска, если она задана |
size |
Целое число | Суммарный объём сохранённых файловых результатов запуска в байтах |
Таблица 7.3.3 — Выходные данные отладочного запуска
Оперативное сообщение общего прогресса содержит launch_uuid,
progress_percent, size и необязательное поле error. Детализированное
сообщение исполнительной сессии содержит:
| Поле | Тип | Описание |
|---|---|---|
session_id |
Целое число | Идентификатор исполнительной сессии |
step |
Целое число | Порядковый номер выполненного шага обработки |
frame_index |
Целое число | Номер кадра исходного файла, соответствующий шагу |
total_steps |
Целое число | Общее число шагов обработки |
total_frames |
Целое число | Число кадров во входном файле или наборе изображений |
is_interrupted |
Логическое значение | Признак прерывания обработки по команде пользователя |
events |
Массив объектов | События, сформированные логическими блоками на текущем шаге |
Таблица 7.3.4 — Оперативные данные выполнения
Поле events зависит от используемых блоков формирования событий. Для
события сохраняются данные, выданные соответствующим блоком; исполнитель также
добавляет идентификатор сопровождаемого трека track_id, если он может быть
сопоставлен с результатами трекинга. Окончательная схема каждого вида события
должна быть приведена в описании поставляемого логического блока.
7.3.3. Контекст обработки медиафайлов¶
Для каждого запуска хранится контекст, содержащий текущий файл и упорядоченный перечень всех файлов версии ассета.
| Поле | Тип | Описание |
|---|---|---|
mf_contex_id |
Целое число | Идентификатор контекста обработки файлов |
current_url |
Строка URI или null |
Адрес текущего обрабатываемого файла |
current_index |
Целое число | Индекс текущего файла в перечне |
total_duration |
Целое число | Суммарная длительность видеозаписей в секундах по данным хранилища проверочных данных |
launch_uuid |
Строка UUID | Идентификатор связанного запуска |
media_files |
Массив объектов | Перечень файлов и результаты их обработки |
Таблица 7.3.5 — Контекст обработки медиафайлов
Каждый элемент media_files содержит:
| Поле | Тип | Описание |
|---|---|---|
mf_id |
Целое число | Идентификатор файла внутри контекста запуска |
asset_file_id |
Целое число | Идентификатор исходного файла в хранилище проверочных данных |
file_name |
Строка или null |
Отображаемое имя исходного файла |
media_uri |
Строка URI | Внутренняя или подписанная ссылка на исходный файл |
duration |
Целое число | Длительность видео в секундах; для изображения — 0 |
file_type |
image или video |
Тип медиафайла |
status |
Строковое перечисление | pending, processing или completed |
detection_count |
Целое число | Суммарное число элементов категорий событий в events.json |
total_steps |
Целое число | Число выполненных шагов; для изображения устанавливается единица |
Таблица 7.3.6 — Результаты обработки медиафайла
Если запуск завершается с ошибкой, итоговое состояние запуска принимает
значение failed. Состояние файла в текущем контракте может быть переведено в
completed при любом конечном состоянии запуска; поэтому при анализе результата
следует учитывать одновременно состояние файла и поле status самого запуска.
7.3.4. Файловые результаты отладки¶
Результаты организуются по UUID запуска, медиафайлу и номеру шага или кадра. Для ассета изображений общий каталог запуска используется без дополнительного уровня имени видео.
| Артефакт или ответ | Содержание |
|---|---|
image.jpg |
Исходное изображение кадра, переданное графу на соответствующем шаге |
image_vis.jpg |
Кадр после нанесения визуализации детекций, треков, зон и других результатов, предусмотренных блоками графа |
last_message.json |
Последнее состояние контейнера сообщения после выполнения графа на кадре; набор полей определяется составом блоков |
last_execution_log.txt |
Журнал выполнения логических блоков на одном кадре |
log.txt |
Общий журнал обработки медиафайла или набора изображений |
events.json |
Объект с массивом events, накопленным в ходе обработки медиафайла |
frame_count |
Число каталогов покадровых результатов, доступных для выбранного файла |
media_uri |
Подписанная ссылка на исходный либо визуализированный кадр |
frame_msg |
Строка, содержащая JSON из last_message.json |
frame_log |
Строка с содержимым покадрового журнала |
session_log |
Строка с содержимым общего журнала |
detection_events |
Строка, содержащая JSON из events.json |
Таблица 7.3.7 — Файловые результаты отладки
Если требуемый журнал или файл событий ещё не сформирован, соответствующее строковое поле может быть пустым. Подписанная ссылка имеет ограниченный срок действия и не должна сохраняться как постоянный адрес результата.
7.3.5. Сообщения о результате и ошибках¶
Успешные команды создания и остановки исполнительной задачи возвращают
текстовое сообщение и строковый идентификатор задачи task_id. Результат
создания редакторской сессии содержит session_id и node_red_url; результат
создания исполнительной сессии запуска — launch_uuid и session_id.
Ошибка проверки HTTP-запроса возвращается как JSON с описанием в поле detail.
Ошибка асинхронного исполнения передаётся в WebSocket-сообщении с полями
session_id, error и message либо в поле error сообщения прогресса
запуска. Серверная трассировка стека, внутренние адреса и конфиденциальные
параметры не должны передаваться штатному пользователю; они записываются в
защищённый технический журнал.
7.4. Способ кодирования выходных данных¶
Для выходных данных применяются следующие правила кодирования:
- структурированные ответы, сообщения Kafka и WebSocket кодируются как JSON в UTF-8;
- имена полей и машинные значения перечислений передаются с учётом регистра;
- строки JSON заключаются в двойные кавычки, числа передаются десятичными
цифрами, логические значения — литералами
trueиfalse, отсутствие значения — литераломnull; - идентификаторы сценариев, версий, файлов, сессий, задач и сообщений передаются без локализованного форматирования; числовые идентификаторы — целыми числами, UUID запуска — строкой с дефисами;
- время создания и изменения кодируется целым числом секунд с начала эпохи Unix;
- процент выполнения кодируется целым числом от 0 до 100, объём артефактов — целым числом байтов;
- значения состояний кодируются строками
created,running,failed,completed,stopped, а состояния файлов —pending,processing,completed; - текстовые журналы сохраняются и передаются в UTF-8; недекодируемые байты при чтении заменяются служебным символом замены Unicode;
last_message.jsonиevents.jsonявляются JSON-файлами, но отдельные программные интерфейсы возвращают их содержимое как экранированную строку внутри внешнего JSON-ответа; клиент должен выполнить разбор этой строки как JSON только после успешного получения ответа;- изображения
image.jpgиimage_vis.jpgкодируются в JPEG и передаются как двоичные данные либо через подписанную ссылку; кодирование Base64 не применяется; - визуализированная видеозапись, если она сформирована, кодируется в контейнере MP4 и передаётся как двоичный файл;
- постоянная адресация результата выполняется по UUID запуска, идентификатору файла и номеру кадра; подписанный URI является временным транспортным представлением;
- сообщения об опубликованных версиях содержат только технические идентификаторы, наименования, версии и зависимости сценария и не должны содержать учётные данные пользователя.
Сроки хранения, ограничения объёма результатов, окончательные схемы сообщений, правила формирования визуализированного видео и пользовательского результата, срок действия подписанных ссылок и параметры возможной выгрузки Python-кода фиксируются для целевой поставки по перечню приложения Г. Значения со стендов разработки без проектного подтверждения не применяются.
Приложения¶
Приложение А (рекомендуемое). Контрольный состав версии сценария¶
Перед передачей версии сценария на отладку или публикацию рекомендуется проверить состав сведений по таблице А.1. Таблица определяет логическую полноту версии, но не заменяет автоматическую проверку графа и параметров блоков.
| Проверяемая часть | Что должно быть определено | Критерий проверки |
|---|---|---|
| Сценарий | Наименование, назначение и при необходимости классификационные атрибуты | Сценарий однозначно идентифицируется в пределах Платформы 4.0 |
| Версия | Обозначение версии, описание и связь со сценарием | Обозначение непустое и уникально в пределах сценария |
| Корневая вкладка | UUID вкладки, содержащей исполняемый граф | UUID сформирован и соответствует сохраняемой версии |
| Логические блоки | Тип каждого блока, его наименование и параметры | Все типы доступны в палитре целевой поставки, обязательные параметры заполнены |
| Связи блоков | Маршруты от выходов одних блоков ко входам других | Имена и типы передаваемых полей согласованы между связанными блоками |
| Модели | Наименования и версии моделей, используемых модельными блоками | Каждая версия модели существует, доступна и совместима с соответствующим блоком |
| Зоны и справочники | Типы зон, категории событий, нарушений и иные справочные значения | Используются действующие коды справочников целевой поставки |
| Настройки выполнения | Способ выполнения событийной логики и параметры блоков | Настройки извлечены из графа и сохранены совместно с версией |
| Проверочные данные | Версия ассета, тип медиафайлов и необходимые описания зон | Данные доступны, однородны по типу и совместимы со сценарием |
| Результат отладки | Состояние запуска, прогресс, журналы, кадры и события | Запуск завершён без ошибки, результаты просмотрены ответственным специалистом |
| Публикация | Сохранённый граф и решение о применении версии | Публикуется проверенная версия; её идентификатор и зависимости переданы смежным компонентам |
Таблица А.1 — Контрольный состав версии сценария.
Типовой граф может включать последовательность блоков, показанную на схеме А.1. Состав и порядок блоков выбираются для конкретной задачи; схема не устанавливает обязательный набор блоков.
и проверка зон"] LOGIC --> EVENT["Формирование события"] LOGIC --> VIS["Визуализация результата"]
Схема А.1 — Пример логической последовательности блоков сценария.
Приложение Б (справочное). Жизненный цикл версии сценария¶
и рабочей версии"] --> SESSION["Сессия визуального
редактирования"] SESSION --> EDIT["Изменение блоков,
связей и параметров"] EDIT --> SAVE["Сохранение графа
и настроек"] SAVE --> DEBUG["Отладочный запуск
на версии ассета"] DEBUG -->|"ошибка или замечание"| EDIT DEBUG -->|"проверка пройдена"| REVIEW["Решение о публикации"] REVIEW --> PUBLISH["Публикация версии"] PUBLISH --> USE["Передача версии
смежным компонентам"] PUBLISH --> NEW["Создание новой
рабочей версии"] NEW --> SESSION
Схема Б.1 — Рекомендуемый жизненный цикл версии сценария.
Рабочая версия редактируется в изолированной сессии. Сохранение фиксирует граф, настройки блоков, UUID корневой вкладки и зависимости от моделей, но само по себе не означает готовность версии к применению. Перед публикацией версию рекомендуется выполнить на утверждённом наборе проверочных данных и проанализировать состояние запуска, журналы, покадровые результаты и события.
Публикация делает версию доступной смежным компонентам Платформы 4.0. Дальнейшие изменения рекомендуется выполнять в новой рабочей версии, чтобы сохранить воспроизводимость уже опубликованного графа. При массовой замене версии модели также создаётся новая версия сценария с новым идентификатором графа.
Приложение В (справочное). Карта состояний и результатов отладочного запуска¶
В.1. Состояния запуска и медиафайлов¶
| Объект | Состояние | Содержание и рекомендуемое действие |
|---|---|---|
| Запуск | created |
Запись создана; ожидается создание исполнительной сессии и начало обработки |
| Запуск | running |
Выполняется обработка одного или нескольких файлов; следует контролировать прогресс и оперативные сообщения |
| Запуск | completed |
Все предусмотренные шаги завершены; необходимо просмотреть журналы, кадры и события |
| Запуск | failed |
Выполнение завершилось ошибкой; необходимо проанализировать поле ошибки и технический журнал |
| Запуск | stopped |
Обработка остановлена пользователем; результаты могут быть неполными |
| Медиафайл | pending |
Файл ожидает обработки |
| Медиафайл | processing |
Файл обрабатывается текущей исполнительной сессией |
| Медиафайл | completed |
Обработка файла прекращена в конечном состоянии запуска; успешность определяется также по состоянию запуска |
Таблица В.1 — Состояния отладочного запуска и медиафайлов.
Состояние completed у медиафайла не является самостоятельным подтверждением
успешного запуска. При оценке результата необходимо одновременно учитывать
состояние запуска, наличие ошибки, процент выполнения и полноту артефактов.
В.2. Уровни результатов¶
| Уровень | Основные сведения и артефакты | Назначение проверки |
|---|---|---|
| Запуск | UUID, состояние, процент выполнения, объём результатов, сведения о версии сценария и версии ассета | Подтверждение состава и общего результата проверки |
| Медиафайл | Имя и тип файла, состояние, число шагов и обнаружений, log.txt, events.json |
Анализ обработки всего изображения, набора изображений или видео |
| Кадр или шаг | Номер кадра, image.jpg, image_vis.jpg, last_message.json, last_execution_log.txt |
Проверка последовательного прохождения данных через блоки графа |
| Оперативное сообщение | Идентификатор сессии, шаг, кадр, прогресс, события и ошибка | Наблюдение за выполнением без ожидания окончания запуска |
Таблица В.2 — Уровни результатов отладочного запуска.
Рекомендуемый порядок анализа результата:
- сопоставить UUID запуска с выбранными версиями сценария и ассета;
- проверить состояние запуска и достижение ожидаемого процента выполнения;
- проверить состояние каждого медиафайла и наличие общего журнала;
- просмотреть исходные и визуализированные кадры на контрольных шагах;
- сопоставить
last_message.json, покадровый журнал иevents.jsonс ожидаемой логикой сценария; - зафиксировать результат проверки и замечания по правилам проекта.
Приложение Г (обязательное при подготовке целевой поставки). Уточняемые сведения¶
До выпуска утверждаемой редакции документа должны быть определены значения таблицы Г.1.
| Группа | Требуется установить | Документ, в котором фиксируется результат |
|---|---|---|
| Идентификация поставки | Обозначение редакции Платформы 4.0, версия LPI-VAP-RS, состав и версии контейнерных образов | Формуляр и ведомость поставки |
| Системное ПО | Версии «Московской серверной операционной системы», среды исполнения контейнеров, Kubernetes, драйвера NVIDIA, CUDA, cuDNN и TensorRT | Формуляр и инструкция по установке |
| Технические средства | Тип целевой конфигурации, модели CPU и GPU, число узлов, RAM и VRAM, дисковые и сетевые характеристики | Спецификация технических средств |
| Топология и отказоустойчивость | Распределение управляющих, вычислительных и хранилищных ролей, балансировка, резервирование и переключение при отказе | Схема развёртывания и план обеспечения непрерывности |
| Сетевое взаимодействие | Адреса целевых API, DNS, порты, доверенные сертификаты и правила межсетевого доступа | Схема соединений и требования безопасности |
| Каталог блоков | Перечень поставляемых стандартных и пользовательских блоков, их версии и назначение | Руководство программиста и ведомость поставки |
| Контракты блоков | Обязательные параметры, входные и выходные поля, типы данных, сообщения об ошибках и схемы событий | Описание структур данных и руководство программиста |
| Модели | Поддерживаемые типы моделей, правила выбора версий и совместимость модельных блоков | Описание программы компонента управления моделями видеоаналитики и ведомость моделей |
| Проверочные данные | Допустимые форматы, MIME-типы, размер и число файлов, разрешение изображений, длительность видео и правила описания зон | Спецификация API |
| Отладочная нагрузка | Число одновременных пользователей, сессий и запусков, ограничения очереди и правила остановки | Спецификация целевой поставки |
| Производительность | Профиль контрольных сценариев и моделей, время отклика интерфейса, время запуска и скорость обработки | Спецификация целевой поставки |
| Результаты | Максимальный объём одного запуска, состав обязательных артефактов, правила формирования визуализированного видео и пользовательского заключения | Спецификация API |
| Хранение | Сроки хранения версий, ассетов, запусков, кадров, событий и журналов; срок действия подписанных ссылок | Регламент хранения данных |
| Роли и аудит | Матрица прав на сценарии, версии, публикацию, проверочные данные и результаты; правила регистрации действий | Модель доступа и требования безопасности |
| Ошибки и повторы | Каталог пользовательских ошибок, тайм-ауты, число повторов и действия при недоступности зависимостей | Спецификация API и руководство администратора |
| Резервное копирование | Состав резервируемых данных, периодичность, сроки хранения копий, RPO и RTO | Регламент резервного копирования и восстановления |
| Приёмочные проверки | Контрольные сценарии, модели, ассеты, ожидаемые события, методика измерения и критерии успешности | Спецификация целевой поставки |
Таблица Г.1 — Сведения, уточняемые для целевой поставки.
Значения таблицы Г.1 не должны переноситься из среды разработки без проверки. После утверждения сведения включаются в перечисленные документы, а в «Описание программы» вносятся только устойчивые характеристики компонента и ссылки на документы поставки.
Приложение Д (справочное). Исходные тексты схем Mermaid¶
Приложение содержит исходный Mermaid-код всех графических схем документа. Диаграммы остаются в соответствующих разделах и приложениях, а настоящее приложение предназначено для просмотра, копирования и проверки кода схем в Mermaid-редакторе, а также для случаев, когда графическое представление недоступно.
| Код | Схема | Раздел документа |
|---|---|---|
| RS-MER-001 | Схема 1.1 — Место LPI-VAP-RS в Платформе 4.0 | 1.1. Обозначение и наименование программы |
| RS-MER-002 | Схема 1.2 — Уровни программного обеспечения, необходимого для функционирования компонента | 1.2. Программное обеспечение, необходимое для функционирования программы |
| RS-MER-003 | Схема 2.1 — Функциональный цикл подготовки сценария | 2.1. Классы решаемых задач |
| RS-MER-004 | Схема 3.1 — Создание и публикация версии сценария | 3.1.1. Создание, сохранение и публикация сценария |
| RS-MER-005 | Схема 3.2 — Выполнение отладочного запуска | 3.1.2. Отладочный запуск |
| RS-MER-006 | Схема 3.3 — Логическая структура компонента и его окружение | 3.3. Структура программы с описанием функций составных частей |
| RS-MER-007 | Схема 4.1 — Размещение составных частей LPI-VAP-RS в Kubernetes | 4.1.2. Схема развёртывания |
| RS-MER-008 | Схема 4.2 — Масштабирование отладочного контура компонента | 4.3.3. Масштабирование |
| RS-MER-009 | Схема 5.1 — Вызов редактора сценария пользователем | 5.1.1. Вызов пользователем |
| RS-MER-010 | Схема 5.2 — Порядок запуска серверных составных частей (остановка выполняется в обратном порядке) | 5.1.2. Запуск серверных составных частей |
| RS-MER-011 | Схема 6.1 — Формирование входных данных отладочного запуска | 6.1. Характер и организация входных данных |
| RS-MER-012 | Схема 7.1 — Формирование и передача выходных данных | 7.1. Характер и организация выходных данных |
| RS-MER-013 | Схема А.1 — Пример логической последовательности блоков сценария | Приложение А (рекомендуемое). Контрольный состав версии сценария |
| RS-MER-014 | Схема Б.1 — Рекомендуемый жизненный цикл версии сценария | Приложение Б (справочное). Жизненный цикл версии сценария |
Исходные тексты¶
RS-MER-001. Схема 1.1 — Место LPI-VAP-RS в Платформе 4.0¶
Расположение схемы: 1.1. Обозначение и наименование программы.
flowchart TB
UI["Веб-интерфейс<br/>Платформы 4.0"]
subgraph RS["LPI-VAP-RS"]
direction TB
EDIT["Визуальный редактор<br/>и каталог логических блоков"]
CAT["Каталог сценариев<br/>и версий"]
ASSET["Проверочные данные<br/>и зоны"]
RUN["Отладочные запуски<br/>и результаты"]
EDIT --> CAT
CAT --> EDIT
ASSET --> RUN
CAT --> RUN
RUN --> CAT
end
UI --> EDIT
UI --> ASSET
UI --> RUN
MM["LPI-VAP-MM<br/>модели и версии"] --> EDIT
CORE["LPI-VAP-CORE<br/>доступ, камеры, зоны"] <--> CAT
CAT --> INF["Исполняющее ядро<br/>видеоаналитики"]
RS-MER-002. Схема 1.2 — Уровни программного обеспечения, необходимого для функционирования компонента¶
Расположение схемы: 1.2. Программное обеспечение, необходимое для функционирования программы.
flowchart TB
L1["Уровень 1. Технические средства узлов кластера<br/>серверы x86-64, графические ускорители, накопители, сеть<br/>(раздел 4)"]
L2["Уровень 2. Системное программное обеспечение<br/>«Московская серверная операционная система», среда исполнения контейнеров,<br/>Kubernetes, драйвер NVIDIA и средства предоставления ускорителей, CUDA, cuDNN, TensorRT<br/>(п. 1.2.1)"]
L3["Уровень 3. Общесистемные сервисы Платформы 4.0<br/>PostgreSQL, MinIO, Apache Kafka, Redis, nginx и веб-шлюз<br/>(п. 1.2.2)"]
L4["Уровень 4. Среды исполнения и библиотеки<br/>Python, Node.js, Node-RED, FastAPI, Celery, PyTorch, vlmodels, OpenCV и другие<br/>(п. 1.2.3)"]
L5["Уровень 5. Составные части LPI-VAP-RS<br/>визуальный редактор, прикладной API среды, хранилища сценариев,<br/>запусков и проверочных данных, исполнитель отладочных запусков и конвертеры<br/>(п. 1.1, подраздел 3.3)"]
L6["Уровень 6. Клиентское программное обеспечение<br/>веб-браузер рабочего места пользователя<br/>(п. 1.2.5)"]
EXTC["Смежные компоненты и внешние средства<br/>LPI-VAP-CORE (единая точка входа через СУДИР),<br/>LPI-VAP-MM и исполняющее ядро видеоаналитики<br/>(п. 1.2.4)"]
L1 --> L2 --> L3 --> L4 --> L5 --> L6
L5 <--> EXTC
RS-MER-003. Схема 2.1 — Функциональный цикл подготовки сценария¶
Расположение схемы: 2.1. Классы решаемых задач.
flowchart LR
REF["Модели, типы зон<br/>и виды нарушений"] --> EDIT["Создание и настройка<br/>графа сценария"]
EDIT --> DRAFT["Сохранение<br/>черновика"]
ASSET["Проверочные видео,<br/>изображения и зоны"] --> DEBUG["Отладочный запуск"]
DRAFT --> DEBUG
DEBUG -->|требуется исправление| EDIT
DEBUG -->|результат принят| PUB["Публикация версии"]
PUB --> CODE["Исполняемое<br/>представление"]
CODE --> OUT["Привязка к камерам и исполнение<br/>смежными компонентами Платформы 4.0"]
RS-MER-004. Схема 3.1 — Создание и публикация версии сценария¶
Расположение схемы: 3.1.1. Создание, сохранение и публикация сценария.
sequenceDiagram
actor U as Пользователь
participant UI as Веб-интерфейс Платформы 4.0
participant SB as sbx-sandbox-backend
participant NR as sbx-node-red-vl
participant FM as inf-flows-manager
participant SS as wf-scenario-storage
participant K as Kafka
U->>UI: Открыть рабочую версию
UI->>SB: Создать сессию редактирования
SB->>SS: Получить граф версии
SS-->>SB: flow_data и метаданные
SB->>NR: Запустить экземпляр и загрузить flows.json
NR-->>UI: Визуальный редактор
U->>UI: Изменить блоки и связи
UI->>SB: Сохранить сценарий
SB->>NR: Получить flows.json сессии
NR-->>SB: Граф сценария
SB->>FM: Извлечь параметры блоков
FM-->>SB: flow_settings
SB->>SS: Сохранить граф и настройки
U->>UI: Опубликовать версию
UI->>SS: Изменить состояние версии
SS->>K: Опубликованные версии и настройки
RS-MER-005. Схема 3.2 — Выполнение отладочного запуска¶
Расположение схемы: 3.1.2. Отладочный запуск.
sequenceDiagram
actor U as Пользователь
participant LS as wf-launch-storage
participant AS as wf-asset-storage
participant SS as wf-scenario-storage
participant SB as sbx-sandbox-backend
participant C as sbx-celery
participant S3 as Объектное хранилище
participant K as Kafka
U->>LS: Запустить версию на ассете
LS->>AS: Получить версию и медиафайлы
AS-->>LS: Метаданные, ссылки и зоны
LS->>SS: Получить сведения о версии сценария
SS-->>LS: Метаданные и UUID графа
LS->>SB: Создать исполнительную сессию
SB->>SS: Загрузить flows.json
SB->>C: Передать граф, медиафайлы и зоны
loop Для каждого файла и кадра
C->>C: Выполнить цепочку блоков
C->>S3: Сохранить кадры, сообщения и журналы
C->>K: Передать состояние запуска
K-->>LS: Обновить прогресс
end
LS->>SB: Закрыть сессию
LS-->>U: Результаты отладки
RS-MER-006. Схема 3.3 — Логическая структура компонента и его окружение¶
Расположение схемы: 3.3. Структура программы с описанием функций составных частей.
flowchart TB
UI["Веб-интерфейс Платформы 4.0"]
subgraph RS["LPI-VAP-RS"]
NG["sbx-nginx"]
SB["sbx-sandbox-backend"]
NR["sbx-node-red-vl"]
SS["wf-scenario-storage"]
FM["inf-flows-manager"]
AS["wf-asset-storage"]
LS["wf-launch-storage"]
CEL["sbx-celery"]
end
subgraph INFRA["Инфраструктурные сервисы"]
PG[(PostgreSQL)]
R[(Redis)]
K[(Kafka)]
M[(Объектное хранилище)]
end
subgraph ADJ["Смежные компоненты Платформы 4.0"]
MR["LPI-VAP-MM<br/>реестр моделей"]
CORE["LPI-VAP-CORE<br/>камеры и зоны"]
NRI["Исполняющее ядро<br/>видеоаналитики"]
end
UI --> NG
NG --> SB
NG --> NR
NG --> SS
NG --> AS
NG --> LS
SB --> NR
SB --> SS
SB --> FM
LS --> AS
LS --> SS
LS --> SB
SB --> CEL
SS --> PG
AS --> PG
LS --> PG
SB --> R
CEL --> R
AS --> M
CEL --> M
LS --> M
SS <--> K
LS <--> K
CEL <--> K
MR --> FM
MR --> K
SS --> CORE
CORE --> K
K --> NRI
RS-MER-007. Схема 4.1 — Размещение составных частей LPI-VAP-RS в Kubernetes¶
Расположение схемы: 4.1.2. Схема развёртывания.
flowchart LR
ARM["Рабочее место<br/>веб-браузер"]
INGRESS["Ingress и веб-шлюз<br/>HTTPS, WebSocket"]
subgraph MASTER["Мастер-нода Kubernetes"]
UI["Редактор и API"]
STORE["Хранилища сценариев<br/>и запусков"]
QUEUE["Kafka, Redis<br/>и очередь задач"]
PVC["Постоянные тома"]
UI --> STORE
UI --> QUEUE
STORE --> PVC
end
subgraph COMPUTE["Вычислительная нода Kubernetes (GPU)"]
RUN["Исполнитель<br/>отладочных запусков"]
CONV["Конвертеры моделей"]
WORK["Рабочие каталоги<br/>и временные данные"]
RUN --> WORK
CONV --> WORK
end
MM["LPI-VAP-MM<br/>модели и ассеты"]
CORE["LPI-VAP-CORE<br/>камеры и применение сценариев"]
ARM --> INGRESS --> UI
UI --> RUN
UI <--> MM
UI <--> CORE
RUN --> STORE
RS-MER-008. Схема 4.2 — Масштабирование отладочного контура компонента¶
Расположение схемы: 4.3.3. Масштабирование.
flowchart TB
N1["1 ускоритель<br/>1 отладочный запуск или конвертация<br/>одновременно"]
N2["2 ускорителя<br/>2 задачи одновременно"]
N4["4 ускорителя<br/>4 задачи одновременно"]
NX["Дальнейшее масштабирование<br/>пропорционально числу<br/>выделенных ускорителей"]
MASTER["Ресурсы мастер-ноды:<br/>рассчитываются по числу одновременных сессий редактора,<br/>числу сценариев и версий, объёму проверочных данных<br/>и результатов и срокам их хранения"]
N1 --> N2 --> N4 --> NX
MASTER -.-> N1
RS-MER-009. Схема 5.1 — Вызов редактора сценария пользователем¶
Расположение схемы: 5.1.1. Вызов пользователем.
sequenceDiagram
actor U as Пользователь
participant CORE as LPI-VAP-CORE<br/>единая точка входа
participant SUDIR as СУДИР
participant UI as Веб-интерфейс Платформы 4.0
participant GW as Web-шлюз
participant SB as Бэкенд среды разработки
participant SS as Хранилище сценариев
participant NR as Экземпляр редактора Node-RED
U->>CORE: Открыть Платформу 4.0
CORE->>SUDIR: Аутентификация пользователя
SUDIR-->>CORE: Результат и групповые права
CORE-->>U: Сеанс и разрешённый интерфейс
U->>UI: Выбрать версию сценария
UI->>GW: Команда редактирования
GW->>SB: Создать сессию для версии
SB->>SS: Получить сохранённый граф
SS-->>SB: Граф и атрибуты версии
SB->>NR: Создать экземпляр и загрузить граф
NR-->>SB: Динамический адрес редактора
SB-->>UI: Параметры сессии и адрес
UI-->>U: Рабочая область редактора
RS-MER-010. Схема 5.2 — Порядок запуска серверных составных частей (остановка выполняется в обратном порядке)¶
Расположение схемы: 5.1.2. Запуск серверных составных частей.
flowchart TB
G1["1. Базовая инфраструктура узлов<br/>среда исполнения контейнеров и Kubernetes,<br/>сети, тома, графические ускорители"]
G2["2. Хранение и обмен<br/>PostgreSQL, объектное хранилище, Kafka;<br/>Redis и очередь задач контура отладки"]
G3["3. Прикладные хранилища<br/>сценарии, проверочные данные, запуски"]
G4["4. Среда разработки<br/>прикладной API, менеджер сессий и редактор,<br/>менеджер графов"]
G5["5. Отладочный контур<br/>исполнитель отладочных запусков,<br/>конвертеры, мониторинг очереди"]
G6["6. Внешний доступ<br/>маршрутизация, веб-интерфейс и шлюз прикладных интерфейсов"]
CHK{"Проверка готовности<br/>группы пройдена?"}
RST["Перезапуск сервиса средствами оркестратора;<br/>запуск следующих групп приостановлен"]
OK["Компонент готов к работе"]
G1 --> G2 --> G3 --> G4 --> G5 --> G6 --> CHK
CHK -->|нет| RST
RST --> CHK
CHK -->|да| OK
RS-MER-011. Схема 6.1 — Формирование входных данных отладочного запуска¶
Расположение схемы: 6.1. Характер и организация входных данных.
flowchart LR
U["Пользователь"] --> META["Сценарий и версия"]
U --> GRAPH["Граф и параметры блоков"]
U --> ASSET["Проверочный ассет<br/>изображения или видео"]
U --> ZONES["Зоны для файлов"]
REF["Справочники Платформы 4.0<br/>модели, зоны, события"] --> GRAPH
META --> VER["Версия сценария"]
GRAPH --> VER
ASSET --> AVER["Версия ассета"]
ZONES --> AVER
VER --> RUN["Отладочный запуск"]
AVER --> RUN
RUN --> EXEC["Исполнительная сессия"]
RS-MER-012. Схема 7.1 — Формирование и передача выходных данных¶
Расположение схемы: 7.1. Характер и организация выходных данных.
flowchart LR
EDIT["Визуальный редактор"] --> GRAPH["Граф и настройки<br/>версии сценария"]
GRAPH --> SS[("Хранилище сценариев")]
SS --> UI["Веб-интерфейс Платформы 4.0"]
SS -->|"опубликованные версии<br/>и настройки"| CORE["Промышленный контур Платформы 4.0"]
GRAPH --> RUN["Отладочный запуск"]
ASSET["Версия проверочного ассета"] --> RUN
RUN --> PROGRESS["Состояние и прогресс"]
RUN --> FRAME["Кадры, сообщения,<br/>журналы и события"]
PROGRESS --> LS[("Хранилище запусков")]
FRAME --> S3[("Объектное хранилище")]
LS --> UI
S3 -->|"подписанные ссылки"| UI
RS-MER-013. Схема А.1 — Пример логической последовательности блоков сценария¶
Расположение схемы: Приложение А (рекомендуемое). Контрольный состав версии сценария.
flowchart LR
INPUT["Получение кадра"] --> PREP["Подготовка данных"]
PREP --> MODEL["Выполнение модели"]
MODEL --> LOGIC["Фильтрация, трекинг<br/>и проверка зон"]
LOGIC --> EVENT["Формирование события"]
LOGIC --> VIS["Визуализация результата"]
RS-MER-014. Схема Б.1 — Рекомендуемый жизненный цикл версии сценария¶
Расположение схемы: Приложение Б (справочное). Жизненный цикл версии сценария.
flowchart LR
CREATE["Создание сценария<br/>и рабочей версии"] --> SESSION["Сессия визуального<br/>редактирования"]
SESSION --> EDIT["Изменение блоков,<br/>связей и параметров"]
EDIT --> SAVE["Сохранение графа<br/>и настроек"]
SAVE --> DEBUG["Отладочный запуск<br/>на версии ассета"]
DEBUG -->|"ошибка или замечание"| EDIT
DEBUG -->|"проверка пройдена"| REVIEW["Решение о публикации"]
REVIEW --> PUBLISH["Публикация версии"]
PUBLISH --> USE["Передача версии<br/>смежным компонентам"]
PUBLISH --> NEW["Создание новой<br/>рабочей версии"]
NEW --> SESSION
Лист регистрации изменений¶
| Изм. | Изменённых листов | Заменённых листов | Новых листов | Аннулированных листов | Всего листов в документе | № документа | Входящий № сопроводительного документа | Подпись | Дата |
|---|---|---|---|---|---|---|---|---|---|
| Рабочая редакция 0.3 | — | — | Все листы | — | Определяется при выпуске DOCX/PDF | Требуется присвоить при выпуске | — | Требуется подпись ответственного исполнителя | 10.09.2026 |
| Рабочая редакция 0.4 | — | — | Все листы | — | Определяется при выпуске DOCX/PDF | Требуется присвоить при выпуске | — | Требуется подпись ответственного исполнителя | 14.09.2026 |
Таблица — Лист регистрации изменений.
Рабочая редакция 0.3 отражает выравнивание содержания и оформления с описанием Центрального модуля, включая целевое развёртывание в Kubernetes, роли узлов, системное ПО, порядок запуска, ролевую модель, границу единого входа через LPI-VAP-CORE и оформление уточняемых параметров. Рабочая редакция 0.4 отражает выравнивание с описаниями Центрального модуля и компонента управления моделями: компонент определён как расширение программного продукта, добавлены схемы уровней программного обеспечения, масштабирования и порядка запуска, приведены к единому виду функциональные блоки, смежные компоненты, ресурсы и требования к узлам, порядок загрузки и связи с другими программами. Она не является зарегистрированным изменением утверждённого оригинала. При выпуске утверждаемой редакции необходимо:
- присвоить обозначение документа и формальный номер изменения;
- сформировать DOCX или PDF и указать фактическое число и номера листов;
- указать номер сопроводительного документа, если он оформляется;
- получить подписи ответственного исполнителя, проверяющего и нормоконтролёра в порядке, принятом для проекта;
- в последующих строках регистрировать только изменения утверждённого оригинала, а не отдельные технические коммиты Git.
История подготовки рабочей редакции сохраняется в Git. Она используется для трассировки исходного текста, но не заменяет оформленный лист регистрации изменений.