2.34M

Презентация_Lomik

1.

Инженерия будущего начинается
здесь: разработай
компьютерный тренажерный
комплекс с применением
цифровых двойников
«Lomik»
email: medvedkov29@gmail.com

2.

Lomik
Команда «Lomik»
Давид Медведков
Глеб Максименко
Тимофей Грицай
Капитан
Разработчик
Аналитик
Московский студенческий Реализация решения по
предоставленной
DATA-хакатон 2026.
аналитике. Управление
кодовыми агентами.
Разбор документации,
UNESCO Youth
составление аналитики
Hackathon 2026,
для разработки.
Московский
студенческий DATAхакатон 2026.
Волга IT 2021,
Волга IT 2022,
Московский
студенческий
DATA-хакатон 2026.
Координация действий,
валидация решений,
распределение обязанностей,
консультации по разработке и
аналитике.
«Lomik» 2

3.

Бизнес-требования, функциональнотехнические требования, нефункциональные
требования
БТ
Требование и чем закрыто в коде
ФТТ
Требование
Реализовано
БТ-1
Сократить время вывода оператора на
самостоятельную работу Закрыто: полный
цикл занятия — 10 экранов, 16 сценариев,
обход, разбор с рекомендацией фокуса
следующего занятия
ФТТ-1
Интерфейс обучаемого воспроизводит
реальное АРМ оператора
Да. 10 экранов из 10, 219
тегов при «~150» в оценке
ФТТ-2
Режим обхода — панорамная навигация
между точками объекта
Да. 11 точек из 11 с
панорамами; признаки у 6, у
остальных 5 записана
причина
ФТТ-3
Три роли с разделёнными экранами
Да. Обучаемый; инструктор —
конструктор, зеркало, разбор;
руководитель — агрегаты
ФТТ-4
Библиотека из 23 сценариев, ручной триггер,
ИИ-режим сложности
Частично. Триггер и ИИрежим готовы; сценариев 16
из 23 — 7 заморожено
владельцем
ФТТ-5
Live-фиксация действий и уведомления
инструктору в группе
Да. Сводка по всем занятиям
инструктора, горящее первым
ФТТ-6
Пост-сессионный отчёт ИИ, без автозапуска
рекомендации
Да. Факты правилами,
изложение LLM, метка
происхождения и имя модели
ФТТ-7
Авторизация и привязка занятия к
инструктору
Да. JWT, RBAC на REST и
WebSocket, роль вычисляет
сервер
ФТТ-8
Журнал действий, контроль своевременности Да. Append-only с хэшцепочкой, триггер БД,
обхода и пуска/останова
контроль периодичности
БТ-2
БТ-3
БТ-4
Исключить риск простоя и повреждения
реального объекта Закрыто: установка
существует только как матмодель на
сервере, реальный объект не
задействован ни в одном контуре
Объективная, воспроизводимая оценка
квалификации Закрыто: вердикты считают
правила, журнал append-only с хэшцепочкой, занятие повторимо по зерну
Минимизировать затраты на оборудование
при тиражировании Закрыто: офисный ПК
без 3D-движка; тик 8,85 мс — до ~100
занятий на ядро сервера
«Lomik»
3

4.

Бизнес-требования, функциональнотехнические требования, нефункциональные
требования
НФТ
Требование
Реализовано
НФТ-1
Клиент не требует мощной графики, без 3Dдвижка
Да. Canvas/WebGL через Pixi,
панорамы рисуются
примитивами. Обычный
офисный ПК
НФТ-2
Поддержка нескольких параллельных занятий
Да. Своя модель и asyncioзадача на занятие; тик 8,85 мс
— запас ~100 занятий на ядро.
Переживание рестарта
процесса вне MVP
НФТ-3
НФТ-4
НФТ-5
Резервное копирование и защита от подмены
логов
Ролевой доступ и изоляция ресурсов ИИмодуля
Ограничение по сетевой задержке
Да. Хэш-цепочка, триггер БД
против UPDATE / DELETE /
TRUNCATE, копия
проверяется тем же кодом
Да. RBAC готов; ИИ в своём
контейнере и сегменте,
журнала не видит, его отказ
занятие не роняет
Да, замером. 31 байт за тик в
норме, 3,7 КБ в нештатке.
Задержки под нагрузкой не
меряны — нужен стенд
Что не реализовано и почему
7 сценариев из 23. №2, 4, 11, 12, 13, 20, 22
заморожены владельцем проекта: каждый
требует нового узла графа или нового слоя
физики (горение, жидкое топливо,
общезаводские системы).
Признаки в 5 точках обхода из 11. У точек 3
и 7 всё уже выведено на щит, у 4 и 6 нет узлов
в графе, у 10 нечем задать порог обоняния —
причина записана у каждой.
Фотоподложка в панорамах. Рисуются
примитивами; переход на снимки требует
проверки лицензий и решения по весу бандла.
Переживание рестарта процесса. Занятия
живут в памяти; Redis объявлен в compose и
конфиге, интерфейс менеджера сессий к
замене хранилища готов.
Замер сетевых задержек под нагрузкой.
Требует стенда с настоящими клиентами;
рассинхронизация при этом невозможна по
конструкции.
«Lomik»
4

5.

Архитектура решения, используемые
технологии и компоненты
Браузер — TypeScript + PixiJS
Пульт: 10 мнемосхем, 219 тегов, лента
трендов, журнал событий
Обход: 11 точек, цилиндрические
панорамы, органы по месту
Кабинеты: конструктор занятия, зеркало,
разбор, агрегаты руководителя
↕ WebSocket — живая сессия · REST — учётки, история, разбор
FastAPI — сервер занятия
sim — граф установки,
формулы, пороги
session — тик, модельное
время, рассылка
scenarios — триггеры и шаги
цепочек
evaluation — сравнение с
эталоном правилами
content — загрузка и
валидация data/*.json
api — REST, WebSocket,
RBAC
db — модели, репозитории,
хэш-цепочка
auth — bcrypt, JWT,
зависимости прав
Хранение и вынесенные сервисы
PostgreSQL — учётки, занятия, журнал
действий, события, оценки, разборы,
аудит
Redis — состояние живых занятий и
pub/sub для зеркала инструктора
ИИ-сервис — отдельный контейнер и
сегмент: изложение разбора, журнала не
видит
«Lomik» 5

6.

Архитектура решения, используемые
технологии и компоненты
Стек и обоснование выбора
PixiJS 8,
Canvas/WebGL
Мнемосхема и панорама рисуются одними
примитивами — единство стиля по
построению, без 3D-движка (НФТ-1)
TypeScript 5, Vite Сцена собирается из JSON: ни один тег не
6
хардкодится в компонентах
Три принципа, на которых стоит архитектура
Контент — данные, а не код. Экран, сценарий, точка обхода
и панорама описаны JSON и проверены схемой. Добавление
сценария не требует правки кода ни строкой; ошибка
валидации — отказ старта, а не тихое умолчание.
Симуляция авторитетна на сервере. Клиент рисует
присланное и отправляет намерения. Поэтому зеркало
инструктора не может разойтись с тем, что видел обучаемый,
а журнал — с тем, что происходило.
FastAPI, Python
3.12+
Асинхронность нужна по конструкции:
одна задача на занятие, тик в модельном
времени
PostgreSQL,
SQLAlchemy,
Alembic
Триггер уровня БД против UPDATE /
DELETE / TRUNCATE по журналу —
защита, которую не обойти из приложения
Каждое число объявляет происхождение. Из регламента,
выведено из регламентных или принято нами с основанием
рядом. Исход сценария всегда получается прогоном, а не
назначается.
Redis
Состояние занятий и трансляция зеркала;
интерфейс менеджера сессий готов к
переносу
bcrypt, PyJWT
Замена на ГОСТ-совместимую схему
затрагивает один пакет — app/auth
Модули разграничены по ролевой модели и связаны через
объявленные интерфейсы: sim не знает ни про HTTP, ни про
БД; db не знает про матмодель; тик не завязан на доступность
PostgreSQL.
«Lomik» 6

7.

Техническая реализация решения
АРМ оператора: десять мнемосхем, живые значения из матмодели, разделение экранов и
ролей.
Десять экранов, 219 тегов. Переключение вкладками —
основная работа оператора на щите. Вкладка чужого экрана
краснеет по своей сигнализации и не переключает туда
оператора: тренажёр проверяет умение сканировать щит, а
автопереход снял бы ровно этот навык.
Подтверждение ответственного действия. Спрашивает
окно самой системы, как на реальной DCS: «FRC408 → 120
м³/ч». Занятие при этом не встаёт — часы идут. Умолчание
безопасное: фокус на «Отмена». Вопрос называет предмет,
потому что вопрос без предмета подтверждают не глядя.
Faceplate контура. Клик по регулятору открывает панель с
тройкой SP / PV / OP — уставка, показание, положение
исполнительного механизма в % хода. Ввод уставки уходит на
сервер и возвращается принятием либо причиной отказа.
Разделение ролей и экранов. Обучаемый получает пульт и
обход, инструктор — пульт, зеркало обхода на чтение и
кабинеты, руководитель — только агрегаты. Состав
интерфейса следует из роли, но право проверяет сервер:
фильтрация в браузере ничего не защищает.
Лента трендов. Под мнемосхемой четыре графика; состав
задаёт контент, а не код. Величину оператор читает не только
числом, но и ходом. История копится по всем экранам сразу,
поэтому возвращение с обхода застаёт тренд заполненным.
Матмодель. 112 узлов, 91 дуга, 53 порога. Состав из девяти
псевдокомпонентов, температура стенки змеевика,
эффективность обессоливания, тепловой баланс верха
колонны, ПИ-регуляторы топлива и уровня раздела фаз.
Расчётный режим держит 12 часов без событий и без дрейфа
уровней.
«Lomik» 7

8.

Техническая реализация решения
Режим обхода и сценарии: то, чего нет ни на одном экране пульта.
11 точек с панорамами. Точка объявляет сцену — небо,
горизонт, список аппаратов с местом и размером, — и клиент
рисует её теми же примитивами, что и мнемосхему. Обхват
замкнут, поворот перетаскиванием, хотспот за спиной требует
повернуться.
Сценарий №3 «Потеря электроэнергии»
Дорога идёт в модельном времени. Уход на точку занимает
минуты, и симуляция при этом не останавливается:
мнемосхема гаснет, приборы недоступны, органы пульта
отвергаются с причиной — и отказ тоже попадает в журнал.
Точка не галочка. Пункт чек-листа возвращает признак, а не
показание: «трубы отсвечивают тёмно-красным» вместо «612
°C», потому что прибора для стенки змеевика на установке
нет. Признаки заведены у шести точек из одиннадцати, у
остальных пяти записана причина.
У точки есть и руки. Кнопки аварийного останова печей стоят
на площадке и доступны только оттуда: снять напряжение
можно по месту, вернуть — только кнопкой в операторной.
0,0 мин
тринадцать сигнализаций по минимуму расхода
через змеевики разом
6,4 мин
сигнализация по температуре стенки змеевика
6,5 мин
истекает крайний срок отсечки топлива
10,4 мин
приходит тот, кто пошёл на площадку по тревоге,
— змеевиков уже нет
Решение принимается раньше, чем приходит тревога.
Этому сценарий и учит, и это цена ухода с пульта, которую
не показывает ни один тренажёр без режима обхода.
Сроки не назначены, а получены прогоном модели: 16
сценариев, каждый проверен двумя прогонами — при
бездействии и с эталоном.
«Lomik» 8

9.

Техническая реализация решения
Дополнительные возможности, производительность и доказательность.
Журнал действий append-only. Каждая запись скреплена
хэш-цепочкой с предыдущей, а UPDATE, DELETE и
TRUNCATE отклоняет триггер PostgreSQL. Отвергнутое
действие пишется наравне с принятым. Скрипт резервного
копирования проверяет цепочку до снятия копии и после
восстановления — тем же кодом, что работает на живой базе.
Производительность: замерено, а не заявлено
Стоимость тика при такте 1 с
8,85 мс
Доля бюджета тика
0,9 %
Трафик за тик в расчётном режиме
31 байт
Трафик за тик в нештатке
3,7 КБ
Отслеживание времени и регламента. Модельные часы с
управляемым темпом, обратный отсчёт дороги, контроль
двухчасовой периодичности обхода. Просрочка обязательной
операции — событие, адресованное инструктору.
Полный снимок при подключении
14,1 КБ
Запас по числу параллельных занятий
~100 на ядро
Пуск и останов. Ручной запуск нештатной ситуации
инструктором во время наблюдения, досрочное завершение
занятия, повторимость по зерну: одинаковое зерно даёт
одинаковое занятие — это нужно и тесту, и разбору с
обучаемым.
545 тестов бэкенда, 238 фронта, 46 ИИ-сервиса и
четырнадцать проверок в настоящем браузере. Валидатор
контента следит за ссылочной целостностью: привязка
прибора сверяется с моделью, шкала обязана быть шире
порога, эталон сценария — выполним руками.
Проверки
«Lomik» 9

10.

Конкурентоспособность и перспективы
внедрения
Анализ существующих подходов
Экономические эффекты
Тренажёры на 3D-мире
Наше решение: 2Dмнемосхемы
Оператор «ходит» по цеху,
чего он не делает на
реальном АРМ
Копия реального АРМ:
плоские мнемосхемы,
подтверждённые фото из
кейса
Игровой класс железа на
каждое рабочее место
Обычный офисный ПК с
несколькими мониторами
Цена ошибки не платится дважды. Остановка колонны стоит
миллионы рублей в час. Редкие, но критичные нештатные
ситуации отрабатываются безопасно и столько раз, сколько
нужно.
Непрерывное перемещение
трудно трактовать как верное
или неверное действие
Дискретный клик легко
таймстемпить и сравнить с
эталоном
История компетенций как актив. Тренажёр становится
постоянно работающей системой учёта квалификации с
отчётностью для руководства, а не разовым инструментом.
Полевая работа либо
отсутствует, либо и есть весь
тренажёр
Обе половины: щит и
площадка, с ценой перехода
между ними
Российские платформы тренажёров операторов техпроцессов на
рынке есть — например, DeltaSim из справочных материалов
кейса. Спрос подтверждён. Отличие решения — сочетание
экономичной архитектуры с ИИ-модулем прогнозирования и
адаптации, а не только фиксации действий.
Низкая стоимость тиражирования. Отказ от требовательной
графики снимает закупку игрового железа под каждое рабочее
место. При массовом развёртывании это основная статья
затрат, и она обнуляется.
Наращивание контентом, а не разработкой. Новый блок
установки — это новая панель и новая точка обхода в JSON.
Стоимость расширения на другие установки предсказуема.
«Lomik»10

11.

Конкурентоспособность и перспективы
внедрения
Готовность к внедрению
Юридические и регуляторные аспекты
Разработка завершена. Все восемь ФТТ и все пять НФТ
закрыты; неполон только объём библиотеки сценариев — 16
написано при 15 в требовании.
Только разрешённые к применению библиотеки. Стек —
открытые компоненты с разрешительными лицензиями:
PixiJS, TypeScript, FastAPI, PostgreSQL, Redis, SQLAlchemy.
Проприетарных и лицензионно спорных зависимостей в
контуре занятия нет.
Развёртывание одной командой. Контур занятия
поднимается через docker compose, схема БД — миграцией,
демонстрационные учётки четырёх ролей — скриптом.
Что требует небольших корректировок. Перенос состояния
занятий в Redis для переживания рестарта процесса —
интерфейс менеджера сессий уже готов к замене хранилища;
фотоподложка в панорамах; замер сетевых задержек на
стенде с настоящими клиентами.
Расширение на другие установки. Граф, экраны, сценарии и
точки описаны JSON со схемами. Новая установка — это
контент и калибровка, а не новая разработка.
Криптография заменяема точечно. Хэширование паролей и
токены сосредоточены в пакете app/auth : переход на ГОСТсовместимую схему затрагивает один пакет и не касается ни
модели, ни транспорта.
Внешний ИИ не обязателен. Изложение разбора работает на
локальной модели без выхода наружу, а оценка во всех
случаях считается правилами внутри контура. Это снимает и
вопрос трансграничной передачи данных, и вопрос стоимости
эксплуатации.
Персональные и кадровые данные. Учебные логи и аудит
действий разделены, доступ разграничен ролями,
руководителю недоступны ни занятия, ни фамилии
«Lomik» 11
обучаемых.

12.

Использование инструментов искусственного
интеллекта
Тир
Что делает
Live-фиксация каждый Классификация и локализация ошибок оператора во времени: верно,
поздно, лишнее, пропущено, непреднамеренное событие. Учёт
тик занятия
критического срока, бездействия до автоблокировки, лишнего
вмешательства в норме и просрочки обхода
Чем реализован
Правило-базированное
сравнение с эталоном, синхронно
внутри тика. Без LLM
Прогноз риска
ошибки до её
совершения
По ходу параметра считает, через сколько тот дойдёт до уставки
Экстраполяция хода параметра.
блокировки, и предупреждает инструктора за 3,0–3,8 минуты. Обучаемому Без LLM. 0,44 мс на тик. На
не уходит намеренно: это сняло бы навык, ради которого написан
контрольном сценарии — ноль
сценарий №3
предупреждений
Пост-сессионный
разбор после занятия
Интерпретированная обратная связь: исход, шкала занятия с окнами
критических сроков, замечания с привязкой к минуте, причинная связь из
цепочки сценария, развилки приоритета и рекомендация фокуса
следующего занятия
Факты — правилами, изложение
— LLM вторым слоем. Текст
помечен происхождением: rules
или llm с именем модели
Адаптивный
сценарий повторного
обучения
Динамический режим собирает занятие по уровню сложности и объясняет
состав: называет окна реакции и то, что отверг с причиной. Назначает всё
равно человек — это разные кнопки
Правила, воспроизводимые по
зерну. Без LLM
Граница проведена и объявлена. Оценка считается правилами всегда — LLM не участвует ни в одном вердикте, поэтому разбор
не может разойтись с доказательной базой аттестации. Недоступность ИИ-сервиса оставляет занятие без связного текста, но не
без разбора: ни один факт не теряется.
«Lomik»12

13.

Инфраструктура решения
Рабочее место оператора
Сетевое взаимодействие
Обычный офисный ПК с несколькими мониторами, как на
реальном АРМ. Браузер, Canvas/WebGL, без 3D-движка и без
дискретной графики. Клиент физику не считает — он рисует
присланное и отправляет намерения, поэтому требования к
нему не растут вместе с моделью.
Одно WebSocket-соединение на участника, REST для учёток и
истории. Рассинхронизация показаний невозможна по
конструкции: модель авторитетна на сервере, обучаемый и
инструктор читают одну рассылку. Полный снимок уходит
один раз при подключении (14,1 КБ), дальше только дельта —
31 байт за тик в расчётном режиме, 3,7 КБ в нештатке.
Вычислительная часть
Хранение и резервное копирование
Сервер занятия: FastAPI, одна задача на
занятие
8,85 мс / тик
Запас по параллельным занятиям на ядро
~100
PostgreSQL: учётки, занятия, журналы,
разборы
свой
контейнер
Журнал, события, оценки и разборы пишутся вне пути тика:
доступность БД не влияет на ход занятия. История действий
— append-only с хэш-цепочкой; копия снимается только после
проверки цепочки и проверяется после восстановления тем
же кодом.
Redis: состояние занятий и трансляция
зеркала
свой
контейнер
Отказоустойчивость и мониторинг
ИИ-сервис: изложение разбора
обособленно
ИИ вынесен в отдельный контейнер, сегмент и отдельный
compose-файл : его нагрузка не влияет на отклик живого
занятия, а ключ к внешнему API не лежит в одном периметре
с контуром занятия.
Недоступность ИИ-сервиса занятие не роняет — разбор
излагается правилами. Недоступность PostgreSQL не
останавливает тик. Непрерывность сессии при рестарте
процесса обеспечивается переносом состояния в Redis:
объявлен в compose и конфигурации, интерфейс менеджера
сессий к замене хранилища готов.
«Lomik»13

14.

Информационная безопасность
Обрабатываемые данные: учётные данные, результаты тренировок и история занятий (кадрово-чувствительная информация),
сырые логи действий как доказательная база аттестации, параметры матмодели.
Угроза
Реализованные меры защиты
Несанкционированный доступ к
серверу и базе результатов
RBAC на уровне зависимостей, единообразно для REST и WebSocket. Обучаемый видит только
своё, инструктор — только закреплённых обучаемых, руководитель — только агрегаты. Роль
вычисляет сервер из токена и назначения занятия, а не заявляет клиент
Подмена логов и результатов —
попытка получить зачёт без
тренировки
Журнал append-only двумя слоями: хэш-цепочка prev_hash → hash обнаруживает подмену,
триггер PostgreSQL отклоняет UPDATE, DELETE и TRUNCATE. Отвергнутое действие пишется
наравне с принятым
Компрометация учётных данных
bcrypt для паролей, JWT для сессий, усиленная аутентификация для роли инструктора как более
привилегированной. Учётка не удаляется, а гасится: журналы обязаны остаться связными
Хищение записей занятий с сервера
или из резервных копий
Шифрование при хранении и передаче, политика бэкапов: копия снимается только после
проверки хэш-цепочки и проверяется после восстановления тем же кодом
Компрометация ИИ-модуля: подмена
данных анализа
ИИ изолирован в отдельном контейнере и сегменте с обособленными ресурсами, журнала не
видит вовсе. Вердикты считают правила внутри контура — подменить оценку через модель
нельзя. Локальный провайдер убирает ключ и выход наружу совсем
Нарушение целостности матмодели:
подмена параметров регламента
Контент под контролем версий и JSON Schema, ошибка валидации — отказ старта, а не тихое
умолчание. Доступ на изменение ограничен
Отдельно от учебных логов ведётся аудит действий пользователей: кто, когда, что смотрел и менял, включая неудачный вход с
несуществующим логином. Схема реагирования на инцидент подмены результатов аттестации определена. Требования по безопасности
алгоритмов ИИ выполняются изоляцией сегмента и тем, что модель получает готовые выводы и не может их изменить.
«Lomik»14

15.

Только вперёд / Шустро, просто,
вполне сносно / Спасибо за внимание
«Lomik»
email: medvedkov29@gmail.com
English     Русский Правила