graph TD
subgraph Edge_Layer["Edge Layer (Контур контроля доступа)"]
RN[Flutter Client / Боты Симулятора]
Nginx[Nginx Reverse Proxy & Gateway]
end
subgraph Core_Backend_Layer["Core Backend Layer (Контур оркестрации)"]
FastAPI[FastAPI Core Backend]
end
subgraph Heavy_AI_Compute_Layer["Heavy AI Compute Layer (Вычисления ИИ)"]
gRPC[gRPC FoodService Nodes: Whisper / OCR]
end
subgraph Storage_Persistence_Layer["Storage & Persistence Layer (Слой хранения)"]
MinIO[MinIO S3 Object Storage]
Kafka[(Apache Kafka Cluster: KRaft)]
DB1[(PostgreSQL Auth DB)]
DB2[(PostgreSQL Business DB)]
end
subgraph Observability_Layer["Observability Layer (Контур наблюдаемости)"]
Promtail[Promtail Agent]
Loki[(Grafana Loki Storage)]
Grafana[Grafana UI Dashboards]
end
%% Направления основных потоков данных
RN -->|HTTP/HTTPS requests| Nginx
Nginx -->|Проксирование и балансировка| FastAPI
FastAPI -->|gRPC поверх HTTP/2| gRPC
FastAPI -->|Неблокирующий ввод-вывод| MinIO
FastAPI -->|Асинхронный пуш DTO-событий| Kafka
FastAPI -->|Транзакции и логи сессий| DB1
FastAPI -->|Бизнес-логика и каталоги| DB2
%% Логирование
FastAPI -.->|stdout/stderr logs| Promtail
gRPC -.->|stdout/stderr logs| Promtail
Promtail -.->|HTTP POST Chunks| Loki
Grafana -->|LogQL Запросы| Loki
%% СТИЛИЗАЦИЯ
style FastAPI fill:#2B6CB0,stroke:#fff,stroke-width:2px,color:#fff
style gRPC fill:#D69E2E,stroke:#fff,stroke-width:2px,color:#fff
style Promtail fill:#E53E3E,stroke:#fff,stroke-width:2px,color:#fff
style Grafana fill:#718096,stroke:#fff,stroke-width:2px,color:#fff
style Nginx fill:#319795,stroke:#fff,stroke-width:2px,color:#fff
style Kafka fill:#10B981,stroke:#fff,stroke-width:2px,color:#fff
Архитектурное проектирование распределенной инфраструктуры цифровых симуляторов бизнес-процессов
1 Введение и назначение системы
Данный документ представляет собой вводное архитектурное описание сквозной инфраструктуры для Цифровых симуляторов бизнес-процессов. Одна из главных задач платформы — развертывание сред, в которых есть и реальные пользователи и «цифровые двойники» (автоматизированные агенты) имитирующие поведение реальных пользователей: авторизуются, отправляют телеметрию, загружают медиафайлы и обрабатывают обратные потоки данных.
Симуляция позволяет накапливать массивные синтетические датасеты со значительно большей скоростью, чем в реальном времени. Накопленные данные в неизменном формате поступают в аналитический контур для последующего восстановления топологии процессов (Process Mining), стресс-тестирования архитектуры, поиска скрытых узких мест и выявления дефектов автоматизации до их выката в промышленную эксплуатацию т.е. для решения еще одной главной задачи. Развертывание платформы базируется на принципах контейнеризации (Docker), обеспечивающей асинхронную обработку событий, отказоустойчивость при пиковых нагрузках симуляции и сквозную наблюдаемость.
2 Архитектура системы и топология изолированных контуров
Экосистема разделена на изолированные контуры, обеспечивающие асинхронную обработку событий, отказоустойчивость при пиковых нагрузках симуляции и физическую изоляцию транзакционной бизнес-логики от тяжелых вычислений искусственного интеллекта и подсистем логирования. Данный подход гарантирует предотвращение взаимной деградации производительности сервисов при интенсивной генерации трафика автоматизированными агентами.
2.1 Схема топологии слоев инфраструктуры
Ниже приведена концептуальная схема разделения платформы на изолированные операционные зоны, функционирующие внутри единой приватной виртуальной сети:
3 Системная спецификация компонентов распределенной инфраструктуры
Каждый элемент контейнеризированной экосистемы подобран с учетом требований к обеспечению максимальной пропускной способности, минимизации накладных расходов на межсервисное взаимодействие (IPC) и изоляции вычислительных ресурсов при интенсивной симуляции бизнес-процессов.
3.1 Граничный слой и оркестрация бизнес-логики (Edge & Core Backend)
- Flutter Client / Simulator Client: Фронтенд-приложение и специализированные скрипты “цифровых двойников”. Инструмент (в настоящее время только AgroLaborApp) поддерживает децентрализованный оффлайн-режим: при деградации каналов связи или изоляции удаленного объекта данные операционной телеметрии буферизируются локально в памяти устройства. При восстановлении сетевого статуса клиент производит пакетную (batch) отправку накопленной за сессию последовательности логов. Архитектура реализует обработку обратного потока (Push-уведомлений): при фиксации ИИ-модулем неоднозначных или зашумленных данных чека или аудиозаписи, бэкенд асинхронно отправляет push-нотификацию (Firebase Cloud Messaging / APNS либо через механизм WebSockets), возвращая агенту или пользователю интерактивную форму для ручной корректировки и верификации параметров до финальной записи транзакции.
- Nginx Reverse Proxy & Edge Gateway: Выступает в роли единой защищенной точки входа (Edge Proxy) для внешнего трафика. Выполняет функции терминирования сессий SSL/TLS, сокрытия внутренней топологии изолированной сети Docker и интеллектуальной балансировки нагрузки. Компонент оптимизирован для обработки плотных потоков кратковременных конкурентных соединений (Keep-Alive таймауты, механизмы кэширования статических объектов), мгновенно распределяя входящие медиапотоки и REST API запросы к пулу внутренних контейнеров бэкенда.
- FastAPI Backend: Асинхронный неблокирующий веб-сервер на языке Python, функционирующий как центральный оркестратор системы. При симуляции высоконагруженных сценариев классические синхронные бэкенды быстро деградируют из-за исчерпания пула потоков при ожидании ответов от дисковой подсистемы или сетевых интерфейсов. FastAPI решает данную проблему за счет механизмов событийного цикла (Event Loop) и неблокирующих конструкций
async/await. Он осуществляет нативную JWT-валидацию пользовательских сессий через механизм внедрения зависимостей (Depends), делегирует тяжелые IO-операции (загрузку файлов в S3, вызовы gRPC-сервисов) и мгновенно освобождает поток для обработки последующих вызовов. Бэкенд также агрегирует историю операций, отправляя JSON-статусы транзакций и технические логи в моноширинном шрифте Courier для интерактивного отображения на экранах устройств в компонентеlogTerminal.
3.2 Вычислительный контур искусственного интеллекта и слои хранения (AI & Storage)
- gRPC FoodService/AgroLaborService (ИИ-компонент): Изолированный высокопроизводительный микросервис, инкапсулирующий тяжелые нейросетевые модели: Whisper для высокоточной транскрипции аудио и специализированные сверточные сети (CNN) для OCR-парсинга графических образов чеков. Обмен данными между FastAPI и ИИ-ядром вынесен на уровень gRPC поверх HTTP/2. Это полностью нивелирует накладные расходы на сериализацию тяжелых текстовых JSON-структур, заменяя их компактными бинарными пакетами Protocol Buffers. Поддержка мультиплексирования запросов внутри одного TCP-соединения и двунаправленного стриминга позволяет gRPC-ноде обрабатывать медиафайлы с минимальными задержками. Движок ИИ динамически считывает маркер контекста: для типа
receiptзапускается контур OCR-распознавания строк, дляvoice-note—Whisper-транскрипция с последующим семантическим NLP-анализом ключевых фраз (выявление триггеров). - MinIO S3 Object Storage: Высокопроизводительное, S3-совместимое объектное хранилище корпоративного уровня. Оно физически изолирует реляционные базы данных от хранения неструктурированного тяжелого контента (например WAV-аудиофайлов и снимков чеков или продуктов). FastAPI взаимодействует с MinIO через асинхронный клиент, вызывая метод сохранения
upload_fileobj()без блокировки основного потока. MinIO мгновенно персистирует (сохраняет) объект и возвращает уникальный символьный ключ (s3_key), используемый микросервисами в качестве ссылки. Применение локального S3 гарантирует полную идентичность сред локальной разработки и промышленного облачного контура. - PostgreSQL (Multi-DB Архитектура): Реляционная СУБД, разделенная на два полностью независимых физических контейнера для исключения деградации производительности при транзакционных пиках:
- PostgreSQL Auth DB (Контур авторизации): Специализируется на ведении учетных записей (
users), справочников компаний работников или пользовательских групп (groups), хэшей сессионных ключей (refresh_tokens) и профилей цифровых сотрудников (digital_employees), содержащих что-то вроде номеров социального страхования, паспортные данные и статусы электронных подписей. - PostgreSQL Business DB (Контур бизнес-логики): Отвечает за хранение пространственно-временных координат (гео-координаты объектов например
fieldsилиshopsв форматеjsonb), Master Data каталогов (products_catalog), таблиц модерации новых SKU и сквозного неизменяемого лога событийevent_log. В базу одной из функциональностей интегрировано расширениеpg_trgmдля триграммного индексирования и реализации высокоскоростного нечеткого поиска Левенштейна на уровне СУБД для исправления опечаток ввода.
- PostgreSQL Auth DB (Контур авторизации): Специализируется на ведении учетных записей (
3.3 Системы обмена сообщениями и мониторинг/наблюдение (Messaging & Observability)
- Apache Kafka Broker (KRaft Mode): Распределенная отказоустойчивая шина данных, выполняющая роль амортизатора пиковых нагрузок (Backpressure Buffer). Брокер развернут в современном режиме встроенного консенсуса KRaft (Kafka Raft metadata mode) без накладных расходов на Zookeeper, что снижает сетевые задержки внутри Docker-сети. При лавинообразном поступлении транзакций от симуляторов FastAPI не осуществляет синхронную запись в тяжелые аналитические таблицы, а асинхронно публикует DTO-события в топики Kafka например (
fridge.events.add,waste.events) и закрывает HTTP-сессию с клиентом. Внешние потребители вычитывают данные из партиций независимо, по мере высвобождения собственных вычислительных ресурсов. - Связка Promtail + Grafana Loki + Grafana UI: Инфраструктурный стек сквозной наблюдаемости и мониторинга деградации вычислительных узлов. Все контейнеры платформы выводят структурированные JSON-логи в стандартный поток
stdout/stderr. Агент Promtail непрерывно производит сбор данных с диска хост-машины (включая специфику Docker-директорий на macOS), автоматически парсит метаданные, обогащает строки тегами контейнеров, ID симуляторов, типами сессий и отправляет пакеты по протоколу HTTP POST в Grafana Loki. Loki использует инвертированный подход к хранению: сжимает основной текст лога в компактные бинарные чанки и индексирует исключительно лейблы метаданных. Это позволяет обрабатывать миллионы строк логов симуляции в секунду с минимальным потреблением оперативной памяти, предоставляя инженерам удобный инструмент анализа через LogQL-запросы в консоли Grafana UI.
4 Сценарии сквозного взаимодействия компонентов (Контур авторизации и Сценарий А)
Операционные процессы внутри распределенной инфраструктуры симуляторов и реальных приложений разворачиваются в виде последовательных цепочек транзакций. Ниже приведена детальная декомпозиция первых двух сквозных сценариев, фиксирующих прохождение через шлюзы, асинхронные бэкенды, ИИ-модули и персистентные (постоянного хранения) СУБД.
4.1 Сценарий сквозной авторизации и валидации цифрового профиля
Перед началом генерации операционных событий зарегистрированный симулятор или реальный пользователь должны пройти процедуру аутентификации. В рамках этого процесса система не только проверяет внутренние криптографические хэши, но и обращается к внешним шлюзам государственных сервисов для верификации цифрового профиля сотрудника (проверка SSN, паспорта и статуса цифровой подписи).
В настоящей публичной документации отображены не все шаги и сценарии для приложения в частности и для системы цифровых симуляторов бизнес-процессов в общем.
Ниже представлена диаграмма последовательности, отражающая этот процесс:
sequenceDiagram
autonumber
actor User as 📱 Мобилка / Симулятор (React Native)
participant Nginx as 🛡️ Nginx Шлюз (8080)
participant FastAPI as ⚙️ FastAPI Backend (8000)
participant DB as 🗄️ PostgreSQL (Auth DB)
participant Gov as 🏛️ Внешний Гос. Сервис (API/E-Gov)
User->>Nginx: POST /api/v2/auth/login (Credentials + SSN)
Nginx->>FastAPI: Проксирует запрос (внутренний порт 8000)
activate FastAPI
FastAPI->>DB: SELECT password_hash FROM users WHERE username = ...
activate DB
DB-->>FastAPI: Возвращает хэш пароля
deactivate DB
FastAPI->>FastAPI: Верификация пароля (bcrypt/argon2)
%% Валидация через государственный сервис
Note over FastAPI, Gov: Интеграция с внешним контуром для проверки Master Data
FastAPI->>Gov: GET /api/v1/verify-identity (SSN / Паспортные данные)
activate Gov
Gov-->>FastAPI: Response (Status: Valid, Full Name, Digital Signature Status)
deactivate Gov
alt Если данные госслужбы валидны и совпадают с профилем
FastAPI->>DB: UPSERT INTO digital_employees (user_id, digital_signature_status)
FastAPI->>DB: INSERT INTO refresh_tokens (user_id, token_hash, expires_at)
FastAPI-->>User: HTTP 200: JSON (Access Token JWT + Refresh Token)
else Данные не прошли верификацию во внешнем контуре
FastAPI-->>User: HTTP 403: Forbidden (Ошибка верификации гос. профиля)
end
deactivate FastAPI
4.2 Сценарий А: Распознавание графических образов и управление обратным Push-потоком
Данный сценарий описывает асинхронный контур обработки изображений (фотографий товарных чеков или одиночных продуктов). Ключевым инженерным решением здесь является разделение процесса на неблокирующее распознавание, буферизацию промежуточных результатов в СУБД и отправку push-уведомления для ручной корректировки данных пользователем.
В настоящей публичной документации отображены не все шаги и сценарии для приложения в частности и для системы цифровых симуляторв бизнес-процессов в общем.
Ниже представлена детальная диаграмма прохождения медиапотока:
sequenceDiagram
autonumber
actor User as 📱 Мобилка / Симулятор (React Native)
participant Nginx as 🛡️ Nginx Шлюз (8080)
participant FastAPI as ⚙️ FastAPI Backend (8000)
participant S3 as 📦 MinIO S3 Storage
participant AI as 🧠 gRPC FoodService (ИИ)
participant DB as 🗄️ PostgreSQL (Business DB)
participant Kafka as 📨 Apache Kafka Broker
Note over User, Kafka: Сценарий А: Распознавание изображений (Чек или одиночный продукт)
User->>Nginx: POST /api/v1/recognition/product-photo (Файл + токен JWT)
Nginx->>FastAPI: Проксирует запрос
activate FastAPI
FastAPI->>FastAPI: Нативная JWT-валидация сессии юзера (Depends)
%% Сохранение в S3 без блокировки основного потока
FastAPI->>S3: upload_fileobj() -> Асинхронное сохранение сырого медиа
activate S3
S3-->>FastAPI: Возвращает s3_key ("food_folder/uuid.png")
deactivate S3
%% Передача в ИИ по бинарному gRPC
FastAPI->>AI: gRPC FoodService.CheckProduct(s3_key, crop_type="receipt")
activate AI
Note over AI: Нейросеть считывает маркер контекста.<br/>Если "receipt" -> парсит строки OCR в массив.<br/>Если "food_items" -> распознает объект.
AI-->>FastAPI: Возвращает ImageResponse (status, confidence, diagnostic_info/JSON-строка)
deactivate AI
alt Если распознан ЧЕК (diagnostic_info содержит массив товаров)
FastAPI->>DB: INSERT INTO pending_receipts_buffer (status='PROCESSING', recognized_payload)
FastAPI->>Kafka: Пуш DTO в топик "fridge.events.add" (Аналитика покупок)
%% Асинхронное замыкание петли обратной связи (Feedback Loop)
Note over FastAPI, User: Обратный поток: Асинхронная отправка Push-уведомления
FastAPI-->>User: Push-уведомление (Firebase/APNS): "Данные распознаны, подтвердите черновик"
User->>FastAPI: POST /api/v2/receipts/confirm (Корректировка/правка параметров)
FastAPI->>DB: Перенос записи из буфера в финальный event_log (lifecycle_status='complete')
else Если распознан ОДИНОЧНЫЙ ПРОДУКТ
FastAPI-->>User: Возвращает имя продукта для подтверждения на экране
end
FastAPI-->>User: JSON ответ + terminal_logs (Вывод истории операции в logTerminal)
deactivate FastAPI
5 Сценарии сквозного взаимодействия компонентов (Сценарий Б и Сценарий В)
Ниже представлена детальная декомпозиция процессов обработки неструктурированных аудиоданных и функционирования распределенного контура сквозного сбора системных метрик и логов.
5.1 Сценарий Б: Асинхронный голосовой ввод и семантический парсинг триггеров
Данный сценарий описывает контур фиксации изменений инвентаря с помощью голосовых заметок. Ключевым архитектурным решением здесь является разделение процесса на транскрипцию сырого аудиопотока через gRPC-ноду Whisper, сохранение артефактов в специализированный обучающий датасет СУБД для последующего Fine-Tuning моделей, и неблокирующий NLP-анализ лингвистических триггеров.
В настоящей публичной документации отображены не все шаги и сценарии для приложения в частности и для системы цифровых симуляторв бизнес-процессов в общем.
Ниже представлена диаграмма последовательности прохождения аудиосигнала:
sequenceDiagram
autonumber
actor User as 📱 Мобилка / Симулятор (React Native)
participant Nginx as 🛡️ Nginx Шлюз (8080)
participant FastAPI as ⚙️ FastAPI Backend (8000)
participant S3 as 📦 MinIO S3 Storage
participant AI as 🧠 gRPC FoodService (ИИ)
participant DB as 🗄️ PostgreSQL (Business DB)
participant Kafka as 📨 Apache Kafka Broker
Note over User, Kafka: Сценарий Б: Голосовой ввод (Расход/Добавление через аудио)
User->>Nginx: POST /api/v2/recognition/voice-note (WAV аудиофайл)
Nginx->>FastAPI: Проксирует запрос
activate FastAPI
%% Сохранение бинарного файла в S3 MinIO
FastAPI->>S3: upload_fileobj() -> Асинхронная запись звукового потока
activate S3
S3-->>FastAPI: Возвращает s3_key ("fridge_audio/uuid.wav")
deactivate S3
%% Вызов высокоскоростного бинарного gRPC
FastAPI->>AI: gRPC FoodService.RecognizeSpeech(s3_key, format="wav")
activate AI
Note over AI: Нейросеть Whisper транскрибирует голос в текст.<br/>Пример: "Выбросил испорченные томаты две штуки"
AI-->>FastAPI: SpeechResponse (recognized_text="Выбросил испорченные томаты две штуки", success=true)
deactivate AI
%% Замыкание контура накопления датасета для дообучения ИИ
FastAPI->>DB: INSERT INTO raw_audio_dataset (s3_key, raw_whisper_text, is_verified=FALSE)
%% Локальный семантический NLP-анализ на стороне бэкенда
FastAPI->>FastAPI: Парсинг текста (Поиск ключевых слов-триггеров)
alt Обнаружен триггер "ВЫБРОСИЛ" / "ПРОПАЛО"
FastAPI->>DB: INSERT INTO event_log (activity='WASTE', product_name='Томаты', quantity=2)
FastAPI->>Kafka: Пуш DTO в топик "waste.events" (Графики порчи продуктов)
else Обнаружен триггер "СЪЕЛ" / "ПОТРЕБИЛ"
FastAPI->>DB: INSERT INTO event_log (activity='CONSUME')
FastAPI->>Kafka: Пуш DTO в топик "fridge.events.cooked"
end
FastAPI-->>User: JSON статус + логи транскрипции для вывода в Courier-шрифт
deactivate FastAPI
5.2 Сценарий В: Контур распределенного сбора логов и сквозной наблюдаемости
Данный сценарий фиксирует прохождение системных логов от момента их генерации расчетными узлами (бэкенд FastAPI, gRPC-ноды ИИ) до агрегации в специализированном легковесном хранилище Grafana Loki. Пайплайн спроектирован с учетом минимизации оверхеда на хост-системах и исключает необходимость индексации полнотекстовых данных.
В настоящей публичной документации отображены не все шаги и сценарии для приложения в частности и для системы цифровых симуляторв бизнес-процессов в общем.
Ниже представлена диаграмма сбора логов в режиме реального времени:
sequenceDiagram
autonumber
box RGB(240, 245, 255) Сервисы Архитектуры
participant App as FastAPI / gRPC AI Node
participant Docker as Docker Daemon (stdout)
end
box RGB(245, 240, 255) Система Логирования
participant Promtail as Promtail (Агент)
participant Loki as Grafana Loki (Хранилище)
participant Grafana as Grafana UI (Интерфейс)
end
App->>Docker: Вывод структурированных логов через стандартный logging (JSON формат)
Note over Docker: Запись потоков stdout/stderr в json-файлы контейнеров<br/>на хост-системе (/var/lib/docker/containers/...)
%% Сборщик Promtail
activate Promtail
Promtail->>Docker: Непрерывный сбор изменений (tail -f) файлов конфигураций логов
Note over Promtail: Обогащение лога метаданными:<br/>имя контейнера, ID сессии, имя двойника
%% Отправка пакетов в Loki
Promtail->>Loki: Асинхронная отправка пакетов логов (HTTP POST /loki/api/v1/push)
deactivate Promtail
activate Loki
Note over Loki: Потоковое сжатие текста логов<br/>и индексация исключительно лейблов
Loki-->>Promtail: Подтверждение приема (204 No Content)
deactivate Loki
%% Визуализация
actor Разработчик/Аналитик
Разработчик/Аналитик->>Grafana: Подключение к панели / Live-просмотр трафика симуляции
activate Grafana
Grafana->>Loki: Запрос логов по селекторам метаданных (LogQL запрос)
activate Loki
Loki-->>Grafana: Возврат сжатых блоков текстовых данных
deactivate Loki
Grafana-->>Разработчик/Аналитик: Отрисовка логов и графиков деградации в реальном времени
deactivate Grafana
6 Сценарии сквозного взаимодействия компонентов (Сценарий Д) и Заключение
Данный раздел завершает архитектурное описание сквозных процессов распределенной инфраструктуры, фиксируя логику взаимодействия административных консолей, мастер-справочников и аналитических панелей мониторинга.
6.1 Сценарий Д: Веб-консоль администрирования, ведение Master Data и BI-дашборды
Сценарий описывает процессы верхнего уровня, выполняемые через веб-интерфейсы и аналитические панели. Контур обеспечивает управление правами доступа, добавление гео-зон (полигонов), в некоторых случаях, ручную модерацию инженерами (2-я линия) новых товарных позиций (SKU) и сквозную выгрузку накопленного операционного лога событий для построения карт процессов (Аналитики данных) и другую функциональность.
В настоящей публичной документации отображены не все шаги и сценарии для приложения в частности и для системы цифровых симуляторв бизнес-процессов в общем.
Ниже представлена диаграмма взаимодействия административного и аналитического контура:
sequenceDiagram
autonumber
actor Admin as 💻 Админ / Аналитик (Веб / React Native)
participant Nginx as 🛡️ Nginx Шлюз (8080)
participant FastAPI as ⚙️ FastAPI Backend (8000)
participant DB as 🗄️ PostgreSQL (Business DB)
participant Panel as 📊 Аналитический BI Модуль
%% ПРОЦЕСС АДМИНИСТРИРОВАНИЯ И МОДЕРАЦИИ
Note over Admin, DB: Операционный контур: Модерация справочников Master Data
Admin->>Nginx: GET /api/v2/admin/tickets?status=PENDING
Nginx->>FastAPI: Проксирует запрос к API администрирования
activate FastAPI
FastAPI->>DB: SELECT * FROM product_moderation_tickets WHERE status = 'PENDING'
activate DB
DB-->>FastAPI: Возвращает список заявок на добавление SKU
deactivate DB
FastAPI-->>Admin: Отображение тикетов в Admin Console
deactivate FastAPI
Admin->>Nginx: POST /api/v2/admin/tickets/approve (ticket_id, approved_sku_name)
activate Nginx
Nginx->>FastAPI: Проксирует команду утверждения
deactivate Nginx
activate FastAPI
FastAPI->>DB: INSERT INTO products_catalog (sku_name) VALUES (...) ON CONFLICT DO NOTHING
FastAPI->>DB: UPDATE product_moderation_tickets SET status = 'APPROVED' WHERE ticket_id = ...
FastAPI-->>Admin: HTTP 200: Справочник Master Data успешно обновлен
deactivate FastAPI
%% ПРОЦЕСС АНАЛИТИКИ И PROCESS MINING
Note over Admin, Panel: Аналитический контур: Выгрузка сквозного лога
Admin->>Panel: Инициализация построения карты бизнес-процессов
activate Panel
Panel->>FastAPI: GET /api/v2/analytics/bupar-log?case_id=...
activate FastAPI
FastAPI->>DB: SELECT case_id, activity, timestamp, resource FROM event_log
activate DB
DB-->>FastAPI: Возвращает массив структурированных событий (B-Tree Index)
deactivate DB
FastAPI-->>Panel: Передача структурированного JSON-лога (Event Log DataFrame)
deactivate FastAPI
Panel->>Panel: Математическое восстановление топологии и графа процессов (Process Tree)
Panel-->>Admin: Отрисовка интерактивной карты, выявление зацикливаний и заторов
deactivate Panel
7 Заключение
Проектирование и развертывание распределенной инфраструктуры для Цифровых симуляторов бизнес-процессов на базе связки FastAPI, gRPC, Apache Kafka и PostgreSQL позволило сформировать отказоустойчивую архитектурную среду, способную генерировать и аккумулировать массивные синтетические логи без деградации производительности ключевых узлов.
В ходе системного анализа были подтверждены следующие выводы:
- Высокая пропускная способность оркестрации: Применение асинхронного неблокирующего паттерна веб-сервера FastAPI на базе событийного цикла (Event Loop) в сочетании с бинарным протоколом gRPC для взаимодействия с ИИ-нодами нивелировало накладные расходы на сетевой ввод-вывод (IO-Bound задачи). Это позволяет платформе линейно масштабироваться под плотными потоками запросов от эмулирующих ботов-двойников.
- Изоляция и персистентность слоев хранения: Внедрение объектного хранилища MinIO S3 разгрузило реляционную базу данных от хранения неструктурированного тяжелого медиа-контента (звука и графических файлов). Физическое разделение СУБД PostgreSQL на два изолированных контейнера (авторизационный и бизнес-аналитический) устранило риски взаимных блокировок (deadlocks) и обеспечило стабильность транзакционных таблиц при пиковых нагрузках симуляции.
- Амортизация нагрузок и наблюдаемость: Использование распределенного брокера Apache Kafka в режиме KRaft обеспечило надежную буферизацию (Backpressure Buffer) и изоляцию бэкенда от тяжелых фоновых аналитических подсистем. Спроектированный легковесный контур логирования Promtail + Grafana Loki предоставил инженерам и аналитикам инструмент сквозного контроля деградации расчетных узлов в реальном времени с минимальным использованием вычислительных мощностей хост-машин.
- Консистентность и готовность к анализу: Декларативная структура хранения данных, использование двухэтапных буферов верификации чеков (
pending_receipts_buffer) и интеграция расширения триграммного поискаpg_trgmна уровне СУБД обеспечили достаточно высокую чистоту собираемых данных. Накопленный массив в таблицеevent_logформирует консистентный лог событий, готовый к выгрузке аналитическими BI-модулями для автоматического восстановления топологии процессов.
Разработанная архитектура представляет собой законченное (MVP) инфраструктурное решение, позволяющее форсированно проводить стресс-тестирование систем, искать скрытые зацикливания, инфраструктурные заторы и верифицировать гипотезы оптимизации до выката целевых ИТ-продуктов в промышленную эксплуатацию.
8 Приложение А: Имитация внешних интеграций и контур безопасности (SOAP/WSDL & Security Compliance)
Для обеспечения полной автономности платформы симуляторов и исключения зависимости от внешних производственных контуров государственных ведомств (E-Gov), архитектура предусматривает развертывание изолированного контейнера-имитатора (в частности используется для AgroLaborApp). Этот узел воспроизводит логику государственного реестра по классическому протоколу SOAP 1.1 (WSDL).
Помимо стандартной верификации Master Data, данный контур выполняет функции активного мониторинга безопасности. Если при проверке цифрового профиля симулятора или реального пользователя обнаруживается признак cкомпрометированных данных (отозванная цифровая подпись, несоответствие паспорта или маркер информационной угрозы), платформа прерывает процесс.
8.1 Сценарий А: Блокировка регистрации при компрометации профиля
Если при попытке первичной регистрации или привязке нового сотрудника внешний SOAP-имитатор возвращает статус скомпрометированных данных (флаг отзыва подписи или токена межведомственного взаимодействия), FastAPI Backend немедленно прерывает транзакцию. Данные не попадают в персистентное хранилище auth_db, а симулятор получает отказ доступа.
В настоящей публичной документации отображены не все шаги и сценарии для приложения в частности и для системы цифровых симуляторв бизнес-процессов в общем.
Ниже представлена диаграмма последовательности прерывания регистрации:
sequenceDiagram
autonumber
actor User as 📱 Мобилка / Симулятор (React Native)
participant Nginx as 🛡️ Nginx Шлюз (8080)
participant FastAPI as ⚙️ FastAPI Backend (8000)
participant Gov as 🏛️ Имитатор Гос. Реестра (SOAP)
participant DB as 🗄️ PostgreSQL (Auth DB)
participant Loki as 📨 Grafana Loki / Мониторинг
User->>Nginx: POST /api/v2/auth/register (Данные профиля + SSN)
Nginx->>FastAPI: Проксирует запрос регистрации
activate FastAPI
FastAPI->>Gov: SOAP Request: fetch_secure_employee_data(user_id, master_token)
activate Gov
Note over Gov: SOAP-сервер обнаруживает маркер уязвимости<br/>(Скомпрометированная подпись/SSN)
Gov-->>FastAPI: SOAP Response (authorized=False, error_message="PROFILE_COMPROMISED")
deactivate Gov
%% Прерывание транзакции и логирование угрозы
FastAPI->>Loki: Пуш критического лога (LogQL Alert): "Угроза ИБ: Попытка регистрации невалидного SSN"
Note over FastAPI, DB: Транзакция отменена. Запись в PostgreSQL не производится.
FastAPI-->>User: HTTP 403 Forbidden: "Регистрация отклонена Государственным реестром (Профиль заблокирован)"
deactivate FastAPI
8.2 Сценарий Б: Принудительный отзыв сессии (Force Logout) при авторизации
В случае, если скомпрометированный пользователь или автоматизированный агент пытается пройти повторную авторизацию, система выполняет сценарий каскадного отзыва прав (Revocation Pipeline). Бэкенд аннулирует все выданные ранее криптографические ключи, удаляет записи сессий из базы данных, отправляет команду мгновенного сброса на клиентское приложение и генерирует алерты критического приоритета для администраторов безопасности.
В настоящей публичной документации отображены не все шаги и сценарии для приложения в частности и для системы цифровых симуляторв бизнес-процессов в общем.
Ниже представлена диаграмма последовательности процесса деавторизации и оповещения:
sequenceDiagram
autonumber
actor User as 📱 Мобилка / Симулятор (React Native)
participant Nginx as 🛡️ Nginx Шлюз (8080)
participant FastAPI as ⚙️ FastAPI Backend (8000)
# Знак двоеточия убран из названия для предотвращения синтаксической ошибки Mermaid
participant DB as 🗄️ PostgreSQL Auth_DB
participant Loki as 📨 Grafana Loki / Мониторинг
actor Admin as 💻 Консоль Администратора (React Native Web)
User->>Nginx: POST /api/v2/auth/login (JWT Access / Refresh Token)
Nginx->>FastAPI: Проксирует запрос авторизации
activate FastAPI
FastAPI->>FastAPI: Валидация текущей сессии
%% Системный вызов к SOAP-сервису
Note over FastAPI, Loki: Проверка статуса компрометации в фоне
FastAPI->>FastAPI: Обнаружен критический маркер "COMPROMISED" от Госреестра
%% Каскадный отзыв токенов и очистка БД
activate DB
FastAPI->>DB: DELETE FROM refresh_tokens WHERE user_id = ...
FastAPI->>DB: UPDATE digital_employees SET digital_signature_status = 'REVOKED'
DB-->>FastAPI: Подтверждение очистки сессий
deactivate DB
%% Генерация алерта в систему наблюдаемости
FastAPI->>Loki: HTTP POST: Системный инцидент ИБ (Security Alert Core)
%% Асинхронное уведомление администратора
activate Loki
Loki->>Admin: Мгновенный триггер оповещения (Grafana Webhook / Push): "Попытка авторизации заблокированного профиля"
deactivate Loki
%% Обратный неблокирующий поток на клиентское устройство
FastAPI-->>User: HTTP 401 Unauthorized: Принудительное изъятие токенов (Clear Local Storage)
Note over User: Приложение стирает локальные токены<br/>и выполняет Force Logout на экран входа
deactivate FastAPI
8.3 Подробное описание механизмов защиты
- Каскадный отзыв сессионных сущностей (Token Revocation Pipeline): При фиксации признаков компрометации на уровне внешнего SOAP-сервиса, архитектура бэкенда не просто отклоняет текущий HTTP-запрос, из таблицы
refresh_tokensудаляются все хэши ключей, связанные с даннымuser_id. Это гарантирует, что злоумышленник или скомпрометированный скрипт автоматизации не смогут использовать долгоживущие сессионные токены для выполнения операций в параллельных потоках. - Изоляция на стороне клиента (Client-Side Force Logout): Получив ответ со статусом
HTTP 401 Unauthorizedи специализированным внутренним кодом ошибки, клиентское приложение мгновенно прерывает выполнение текущих бизнес-сценариев. Скрипты очищают локальное защищенное хранилище устройства (Encrypted Storage / Keychain) от любых следов JWT-токенов, блокируют интерфейс и принудительно перенаправляют абстрактного пользователя или симулятор на стартовый экран авторизации. - Сквозное оповещение и реакция (Observability Alerting Loop): Информация о попытке несанкционированного доступа не задерживается в локальных файлах бэкенда. FastAPI формирует структурированное JSON-событие безопасности и через Promtail отправляет его в Grafana Loki. На стороне Loki настроены правила агрегации (LogQL Alerting Rules), которые при обнаружении тега
PROFILE_COMPROMISEDмгновенно активируют интеграционные вебхуки. Оповещение доставляется на административную веб-панель, позволяя специалистам по безопасности оперативно заблокировать учетную запись компании принадлежащую (worker_companies) в ручном или автоматическом режиме.
9 Источники и нормативные спецификации
- Протоколы сетевого шлюза и авторизации:
- Спецификация обмена данными по протоколу SOAP 1.1: W3C Simple Object Access Protocol (SOAP) 1.1 Note
- Стандарт структуры и валидации токенов безопасности: RFC 7519 JSON Web Token (JWT) Specification
- Протокол и механизмы принудительного отзыва сессионных ключей: RFC 7009 OAuth 2.0 Token Revocation
- Компоненты асинхронной интеграции и ИИ-вычислений:
- Документация высокоскоростного RPC-взаимодействия: gRPC Architecture and HTTP/2 Protocol Mapping
- Спецификации неблокирующего веб-фреймворка FastAPI: FastAPI Core Documentation and Async/Await Concurrency
- Библиотека RPC-сервисов и сериализации данных: Spyne Python RPC Framework Package
- Движок валидации XML-схем на базе C-библиотек: The lxml XML and HTML library for Python
- Слой очередей и персистентного хранения данных:
- Документация распределенного брокера сообщений в режиме консенсуса KRaft: Apache Kafka Architecture & KRaft Design (KIP-500)
- Руководство по интеграции триграммного поиска и индексов Постгрес: PostgreSQL Global Development Group: pg_trgm Extension Documentation
- Спецификации объектного S3-хранилища: MinIO Enterprise Object Storage Architecture
- Платформа наблюдаемости и агрегации метрик:
- Архитектура потокового сжатия и индексации логов: Grafana Loki Storage Engine Design
- Документация подсистемы генерации алертов и LogQL-интеграций: Grafana Loki Alerting Rules Configuration