194 build - обновление mapping

This commit is contained in:
2026-10-22 10:27:46 +03:00
parent 727f357b9e
commit 3a2bb2d656
37 changed files with 7506 additions and 555 deletions

View File

@@ -27,17 +27,25 @@ SQL Mapping получает контекст матча/выбора, форм
Восстановление связи должно заново синхронизировать данные, не воспроизводя эфирные действия.
Mapping имеет раздельное ожидаемое и подтверждённое состояние. На Agent ожидается
ACK не более одного пакета Mapping; пакет содержит до шести независимых установок.
Повторные записи одного поля разделены подтверждениями. Ошибки отдельных полей
не прерывают первый проход по остальным; безопасные повторы выполняются после него.
Старые Agent используют последовательную передачу с теми же проверками результата.
Доставка не блокирует отдельное чтение heartbeat/ACK. Поколение соединения/назначения отбрасывает устаревшие
подтверждения. Новый WebSocket ждёт актуальную inventory перед восстановлением.
После committed передачи управления обновляется поколение доставки устройств матча.
ACK не более одного пакета Mapping. Agent с явной capability `mapping_title_batch_v1`
получает команды, сгруппированные по Input, до 500 команд и 48 КиБ; прежние версии
получают до шести независимых установок. Новый Agent сохраняет порядок записей
одной цели, выполняет независимые цели ограниченным пулом и выделяет отдельный
обработчик для интерактивных команд. WebSocket reader продолжает читать назначения,
heartbeat и управление во время массовой отправки. Очереди и время обработки ограничены.
Ошибки отдельных полей не прерывают первый проход по остальным; безопасные повторы
выполняются после него. Частичный результат отличается от полной обработки. SQL-каталог ограничен
источниками действующих записей и правил, включая зависимости настроенного счёта.
Поколение соединения/назначения отбрасывает устаревшие подтверждения. Новый WebSocket
ждёт актуальную inventory перед восстановлением. После committed передачи управления
обновляется поколение доставки устройств матча.
Шаблон Mapping и опубликованный снимок устройства разделены. Снимок использует
существующие таблицы профилей/полей и хранится как технический профиль, связанный
с устройством. Сохранение шаблона атомарно проверяет ожидаемую версию. Общие SQL
с устройством. Сериализация устройства внутри транзакции передаёт её же session
в публикацию Mapping, без вложенного подключения с конкурирующей блокировкой.
Сохранение шаблона атомарно проверяет ожидаемую версию. Общие SQL
источники остаются общими; параметры контекста разрешаются для конкретного матча.
Эксплуатационный журнал независим от доступности PostgreSQL. Он получает
@@ -46,6 +54,13 @@ HTTP-аудит и браузерные замеры. Неблокирующая
чтение использует короткие подключения и курсорную пагинацию. Секреты маскируются
до очереди записи. Запись startup/shutdown закрывается штатно и через atexit.
Сводка готовности к эфиру читает только назначение и опубликованный Mapping
выбранного устройства, доступного текущему аккаунту. Она сопоставляет цели с
inventory текущего WebSocket и использует подтверждения обработки Mapping
текущего поколения. Просмотр не исполняет SQL источников, не создаёт публикации
и не отправляет команды Agent. Эти подтверждения живут в памяти процесса;
после смены контекста или разрыва связи прежний успех не доказывает готовность.
Stat2TV использует общий ограниченный HTTP-пул, а не новое соединение на каждый
запрос. Авторизация и timeout передаются отдельно для каждого запроса;
при завершении сервера HTTP-клиенты закрываются после фоновых задач.
@@ -69,3 +84,8 @@ UI хранится атомарно в `settings/local/` либо внешне
Флаги и их LICENSE, шаблоны vMix JSON, исходники Go/Agent.exe, SQL-примеры и
проверки входят в проект по назначению. Совпадение имён или содержимого файлов
default и локальной конфигурации не делает их взаимозаменяемыми.
Ответы браузерных запросов матча привязаны к поколению выбора и сессии. Загрузка
общих данных провайдера сохраняет рабочий контекст выбранного матча. Эффективный
SQL-счёт берётся из текущего Game либо проверенного результата настроенного ключа
для каждой стороны; ручные значения хранятся отдельно.