Files
hockey_new/docs/CHANGELOG.md

132 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Изменения и история
## BUILD194 — 21 октября 2026 · 2026.10.21.5
Commit: `BUILD194 — Mapping по титрам, стабильное переключение матчей и счёт из БД`.
- Agent 1.5.5 принимает Mapping по титрам; управление эфиром обрабатывается отдельно от массового обновления полей. Старые Agent сохраняют ограниченную пакетную передачу.
- Подтверждения проверяются для каждого поля; неполная обработка явно отличается от полной.
- Читаются SQL-источники действующих связей и правил; неиспользуемый источник не задерживает отправку.
- Подключение, привязка и смена активности Agent используют ту же транзакцию для публикации Mapping, устраняя ожидание собственной блокировки.
- Ответы предыдущего выбора матча не перезаписывают текущий матч, составы и сессию. Сохранённые составы завершённого матча читаются из БД при восстановлении выбора.
- В режиме SQL нижняя панель счёта использует актуальную БД; ручные значения сохраняются отдельно. Пользовательские SQL-источники счёта проверяются отдельно для каждой стороны.
- Связи встроенного счёта наследуют заданный интервал автообновления своего SQL-источника; изменение данных доходит до Mapping без повторного выбора матча.
- В существующую диагностику добавлена сводка готовности выбранных матча и Agent.
- Проверяются назначение, связь, структура титров, опубликованный Mapping и наличие связанных полей.
- Показаны результат последней полной обработки Mapping и ожидание подтверждений устройства; неизвестное состояние не считается готовностью.
- Изменение конфигурации SQL-источников снимает прежнее подтверждение; результат начатой до правки обработки не восстанавливает готовность.
- Смена контекста сбрасывает прежний результат, закрытая панель не запрашивает новую сводку.
- Поздняя схема титров старого WebSocket не подтверждает готовность переподключённого Agent; обработка схем одного устройства упорядочена.
- Короткий Commit теперь содержит номер BUILD; порядок записан в инструкции администратора.
Проверка читает сохранённое состояние и подтверждения Agent. Актуальность внешних
источников и внешний вид титров в настоящем vMix проверяются отдельно.
Проверки BUILD194: **807 passed, 0 failed**, без skip/xfail.
В браузере пройдены 15 сценариев готовности и 11 сценариев матчей/счёта, включая 390/320 px; ошибок страницы нет.
Проверки локальные, без подключения рабочей VM/vMix. Подробности: [validation.json](validation.json).
## BUILD193 — 21 октября 2026 · 2026.10.21.4
Commit: `BUILD193 — ui: увеличить шильдик версии и сохранить читаемость шапки`.
- Шрифт версии увеличен с 6 до 9 px, добавлены небольшие внутренние отступы.
- Колонка заголовка расширена, номер версии сохраняется в одной строке.
- Следующий этап плана — сравнение загрузки на быстром и медленном ПК по существующим событиям `browser.ready` и HTTP-журналу; затем «Готовность к эфиру».
Проверки: **18 passed**, в Chromium проверены 7 ширин от 320 до 1440 px.
Проверка интерфейса использовала локальные тестовые ответы API; реальная VM не подключалась.
## BUILD192 — 21 октября 2026 · 2026.10.21.3
- Исправлен обрыв Mapping после трёх неудачных полей: оставшиеся титры отправляются до повторов ошибочных целей.
- Возвращены пакеты до шести независимых команд с индивидуальной проверкой ACK; записи одного поля сохраняют порядок.
- Ошибка отдельной HTTP-команды больше не сбрасывает состояние связи vMix; реальные отключения и смены назначения сохраняют защиту поколения.
- Счётчик отправок учитывает команды с потерянным ACK; в журнале видны результат применения и ошибочные цели.
- Подтверждённые пакеты сохраняют прогресс до завершения всего Mapping; последующее обновление `only_changed` пропускает их даже после прерывания запроса.
- Браузер дожидается полного результата Mapping без прежнего таймаута 5/15 секунд. Одинаковые запросы объединены; при смене контекста следующим отправляется актуальный.
- После изменения языка выполняется новое разрешение данных: быстрое RU → EN → RU не получает успешный ответ от старой отправки с другим языком.
- Импортные операции допускаются к общему пулу БД по одной. Остальные ожидают асинхронно, сохраняя рабочие потоки для команд оператора.
- Покрыты все 19 участков общей блокировки импорта, массовый импорт турниров и синхронные маршруты обновления справочников.
- Сетевые запросы продолжают выполняться параллельно; разбор больших XML справочников перенесён в поток вместе с записью.
- Холодная подготовка ONLINE-расписания проходит через очередь импорта; чтение расписания и проверка турнира вынесены из цикла HTTP.
- Отмена ожидающего запроса не запускает импорт. Уже начавшийся worker завершает транзакцию до освобождения очереди.
- В журнал добавлены длительное ожидание очереди и время выполнения импорта.
Полный прогон: **641 passed, 0 failed**, без skip/xfail, 474,3 с.
На локальном Mapping из 372 полей три постоянные ошибки не мешают доставке
остальных 369. Подтверждены доступность записей таймера и отправки команд vMix
до освобождения задержанного импорта, а также защита последнего выбора языка.
Итоги, отрицательные проверки и ограничения локальных сценариев находятся
в [validation.json](validation.json). Настоящий vMix и рабочая PostgreSQL не подключались.
## BUILD191 — 21 октября 2026 · 2026.10.21.2
- Пустой выбор Agent больше не отправляет команды таймера на прежнее устройство сессии.
- Сервер отклоняет явно пустой `device_id`; старые клиенты без этого поля проходят прежние проверки доступа.
- Неотправленные назначения удалений удаляются из оптимистичного кэша, локальный таймер сохраняет своё состояние.
- Устаревшие проверки GUID/номеров Inputs, пакетного транспорта и противоречивых протоколов таймеров заменены исполняемыми проверками действующих контрактов.
- Проверки КХЛ используют отдельные настройки: выбор числа потоков на VM не меняется ради тестов.
- Проверяются порядок ACK, ограниченные повторы, изоляция устройств, пауза/продолжение native Countdown, готовые удаления, права и переключение матчей.
- Проверки JavaScript требуют явного завершения сценария: завершение Node с незавершённым Promise не считается успехом.
Полный прогон: **565 passed, 0 failed**, без skip/xfail, 272,9 с. Для всех
59 прежних падений проверено соответствие реально прошедшим сценариям.
Все 11 намеренно внесённых ошибочных вариантов обнаружены проверками.
Совместный локальный прогон трёх матчей и шести Agents: 60 циклов по 64 поля,
24 196 команд и 1425 запросов зрителей. Итоговые значения, изоляция, восстановление
после ошибок ACK/разрыва и передача управления прошли; очереди завершились пустыми.
Подробные результаты и ограничения находятся в [validation.json](validation.json).
Живые PostgreSQL, Stat2TV, Windows Agent.exe и vMix в локальном прогоне не подключались.
## BUILD190 — 21 октября 2026 · 2026.10.21.1
- Mapping кэшируется только после ACK; ограниченные безопасные повторы и защита от старых подтверждений.
- Чтение Agent, heartbeat и восстановление разделены; новый WebSocket ждёт inventory.
- Восстановление связи сохраняет поля работающих native Countdown.
- Опубликованная версия Mapping закреплена за Agent; правки шаблона не переключают остальные эфиры.
- Атомарное сохранение Mapping с проверкой версии; опубликованные снимки переживают удаление шаблона.
- Усилена проверка участника/матча/устройства; зритель может иметь свой отдельный выход.
- Добавлен постоянный журнал, кнопка «Журнал», лёгкая страница /logs, фильтры и TXT/JSONL.
- Текущий и предыдущий московские месяцы журналов, автоматическая очистка; секреты маскируются.
- Сжатие и кэширование версионных ресурсов, параллельный старт, меньше работы редактора в runtime.
- Добавлены замеры загрузки/отрисовки браузера и Server-Timing для HTTP.
- Повторные XML используют один путь по SHA-256; история путей PostgreSQL сохраняется.
- Старые одинаковые XML можно объединить hardlink без удаления имён файлов.
- Ограничено хранение standalone discovery-отчётов; XML по возрасту не удаляются.
- HTTP-клиенты Stat2TV переиспользуют пул соединений и закрываются при завершении.
- Одинаковое сохранение UI не создаёт backup и не перезаписывает конфигурацию.
- История старых backup импортируется однократно и не возвращается на каждом старте.
- Добавлена консервативная очистка VM с предварительным планом по умолчанию.
- Основная документация сведена к README и четырём документам; deploy имеет один источник.
Проверки выполнялись без доступа к рабочим PostgreSQL/Stat2TV/vMix: SQLite-фикстуры,
поддельные Agent/ACK и Chromium с локальными API. В контролируемом сценарии без
выбранного матча, с задержкой начальных API 150 мс, медиана трёх запусков снизилась
с 3477 до 1424 мс. Это не измерение производственного сервера или ёмкости матчей.
Итоги проверок и идентификаторы 59 падений, уже присутствовавших в исходном архиве,
сохранены в [validation.json](validation.json). Финальный поведенческий набор —
91 passed; дополнительные проверки входа с телефона и выхода при недоступной
авторизации также прошли. Полный набор после последних правок повторно не запускался.
## Последняя исходная сборка
BUILD189 / `2026.10.02.9`: снижение повторных SQL-запросов и нагрузки двух матчей,
оптимизация браузерных обновлений и работы второго Agent.
BUILD188 восстановил вызов удаления при верхнем счёте и сохранение действующего
удаления при снятии Delay Penalty.
BUILD180–184 развивали контекст штрафа, SQL, Preview через триггер, общую ссылку
«Своих плюсов» и подготовленные титры.
Предшествующие обновления включали роли оператора/зрителя, атомарные настройки UI,
карьеру КХЛ, аналитику, переносимый mapping и native Countdown.
## Архив прежних инструкций
[history.zip](history.zip) содержит исходные README/UPDATE/VALIDATION и manifests,
включая разбор прежних 40 падений тестов. Это исторические документы для сравнения
и восстановления, их команды установки относятся к указанным в них сборкам.
Текущие инструкции находятся в README, OPERATOR, ADMIN и ARCHITECTURE.
Исходные рабочие данные и credentials в архив истории не включены.