Files
hockey_new/docs/CHANGELOG.md

35 KiB
Raw Permalink Blame History

Изменения и история

BUILD202 — 5 ноября 2026 · 2026.11.05.3

Commit: BUILD202 (2026.11.05.3) — сначала снимать плашку и уточнить обработку голов.

  • После гола плашка удаления получает отдельный OUT; её время и подпись изменяются после подтверждения снятия и настроенного интервала анимации. Завершение карточки ожидает необходимых подтверждений vMix.
  • У цели удаления в конструкторе добавлено «Анимация снятия при голе, с»: 0–60 с, по умолчанию 1 с. Интервал нужно проверить по TransitionOut своего титра; ответ API не подтверждает визуальное окончание анимации.
  • Первая часть 2+2 подготавливает 2:00 скрыто и возвращает актуальный титр. Общий Input известных удалений кратко снимается целиком с сохранением соседних карточек; основной счёт, чужие и неоднозначные поля автоматически не затрагиваются.
  • Во время снятия защищены DATA/Mapping и native-команды затронутых Input. При неподтверждённой доставке карточка сохраняется для ручной проверки без автоматического повтора эфирного действия.
  • Уточнены правила завершения малых и 2+2, выбора при равных остатках и исключений. Дисциплинарные 10/20, явно отложенные (queued/awaitingStart) и компенсированные штрафы больше не создают ложное численное меньшинство/плашку; признаки компенсации сохраняются. Оставшаяся дисциплинарная запись не удерживает владельца завершённого цикла плашки. Очередь штрафов, не назначенные отложенные штрафы и фактический состав овертайма требуют контроля оператора; полное соответствие всем ситуациям КХЛ не заявляется.
  • Agent 1.5.6 и зависимости остаются прежними; пользовательские настройки обновлением не заменяются.

Локальная проверка: 1173/1173 PASS, без ошибок и пропусков. 64 новые проверки входят в полный прогон; SHA 273 файлов исходников и тестов совпали до и после проверки. Сохранение задержки проверено через draft, publish и повторное открытие. Использованы локальные Node/ASGI/Chromium и HTTP-модель vMix; рабочая VM и физический vMix не подключались.

BUILD201 — 5 ноября 2026 · 2026.11.05.2

Commit: BUILD201 (2026.11.05.2) — исправить снятие одиночного удаления и убрать ШБ.

  • Исправлено автоматическое завершение одиночного малого штрафа после гола соперника в большинстве при включённом F2.
  • Убрана кнопка «ШБ»; её старый сохранённый флаг не блокирует обычные голы. Явно переданный источником тип текущего штрафного броска учитывается отдельно.
  • Подтверждение vMix предшествует удалению карточки; ошибка доставки сохраняет состояние для проверки. Сторона плашки в сочетании 2/4 минуты сохраняется.
  • Agent 1.5.6, зависимости и пользовательские настройки не изменились.

Полностью заполненное малое удаление учитывается и до первого запуска часов. Незаполненный черновик, отложенный в очередь и большой штраф сохраняют свои правила.

Локальная проверка: 1109/1109 PASS, без ошибок и пропусков. 18 новых сценариев входят в полный прогон; зафиксированы SHA 266 файлов исходников и тестов. Использованы локальные Node/ASGI/Chromium и HTTP-модель vMix; рабочая VM и физический vMix не подключались.

BUILD200 — 5 ноября 2026 · 2026.11.05.1

Commit: BUILD200 (2026.11.05.1) — закрепить плашку удаления и снимать штраф после гола по ACK vMix.

  • При встречных удалениях 2/4 минуты плашка сохраняет закреплённую сторону в переходе 4on4 → PP, работающий Countdown не получает лишнюю повторную выдачу.
  • При включённом F2 команды vMix после гола большинства подтверждаются до завершения удаления в панели. При ошибке доставки карточка остаётся для проверки.
  • Для обычного гола не требуется включать «ШБ»; отметка остаётся исключением для настоящего штрафного броска. Правила малых, двойных малых и больших сохранены.
  • Agent 1.5.6 и зависимости не изменились; пользовательские настройки обновлением не заменяются.

Локальная проверка: 1091/1091 PASS, без ошибок и пропусков. 42 новые проверки входят в полный прогон; 262 файла исходников и тестов сохраняли зафиксированные SHA. Использованы локальные Node/ASGI/Chromium и модель vMix на границе HTTP; рабочая VM и физический vMix не подключались.

BUILD199 — 3 ноября 2026 · 2026.11.03.1

Commit: BUILD199 (2026.11.03.1) — исправить удаления и добавить разрешение плашек.

  • При добавлении встречного удаления 2/4 минуты уже показанная плашка не получает повторный IN. Если нужного Input на слое нет, программа восстанавливает показ.
  • У MAIN TIMER добавлены галочка «Плашки» и F2. Разрешение общее для связанных удалений, пустых ворот и отложенного штрафа; настройки сохраняются для матча.
  • Выключение снимает связанные плашки, сохраняя основной счёт и native Countdown. Данные продолжают заполняться, зритель не получает управляющих прав.
  • Гол большинства завершает подходящий малый штраф с наименьшим остатком текущего двухминутного отрезка. У 2+2 после первой части остаётся 2:00, большой штраф не завершается. Повторные снимки, начальный счёт и синхронизация не создают гол.
  • Отметка «ШБ» защищает действующий малый при голе со штрафного броска; известный отменённый гол восстанавливает штраф только при неизменном последующем состоянии.
  • Agent 1.5.6 и зависимости не изменились; пользовательские настройки обновлением не заменяются.

Локальная проверка: 1049/1049 PASS, без ошибок и пропусков; 77 новых сценариев входят в этот полный прогон. Проверены Node/ASGI и Chromium, сохранность 257 зафиксированных файлов. Рабочая VM и физический vMix не подключались.

BUILD198 — 22 октября 2026 · 2026.10.22.4

Commit: BUILD198 — исправить плашки и ускорить управление vMix.

  • Выбор управления матчем завершается до блокирующего окна загрузки; роли, отмена, ошибка получения управления и параллельный выбор не оставляют диалог заблокированным.
  • В режиме зрителя DATA/Mapping своему разрешённому Agent работает; управляющие команды, изменения времени, удалений и событий требуют оператора.
  • Подготовка текста подтверждается до IN/Preview. Неполные данные не считаются готовностью; явный setter и последующий показ имеют подтверждённый порядок.
  • Старые HTTP-кнопки подсмотра проходят подготовку контекста/Mapping выбранного удаления. Native поля таймеров сохраняют защиту от массового Mapping.
  • Задержка одного Input/Overlay общая для его автоматических путей. Условный шаг с нулём не обходит заданную задержку той же плашки.
  • При снятии верхнего счёта сначала отменяется ожидающий IN и снимаются связанные Overlay 2/3, затем основной титр. Чужое владение и текущий Input перепроверяются.
  • Agent 1.5.6 добавляет срочную очередь и резерв одного из шести HTTP-мест. Очерёдность одной цели, отмена устаревшей работы и правдивые ACK сохраняются.
  • Срочные снятия обходят подготовку SQL и обычную очередь браузера. Показ титра продолжает ждать данных. В журнал добавлены связанные через trace_id замеры ожидания, подготовки, отправки и выполнения.
  • Настройки, конфигурация устройства и зависимости не заменяются.

Проверки BUILD198: 972 passed, 0 failed/errors, без skip/xfail. Agent: 33 основных теста и 10 вложенных, повторены с race detector; Windows GUI amd64 1.5.6 собран из проверенного кода. Выбор роли и загрузка матча проверены в локальном Chromium. Подключения к рабочей VM, PostgreSQL, Stat2TV и реальному vMix не выполнялись; новый Agent на Windows не запускался.

BUILD197 — 22 октября 2026 · 2026.10.22.3

Commit: BUILD197 — отправлять поздние составы и показывать этапы загрузки.

  • Основной Mapping ждёт получения составов обеих команд. Поздние изменения состава из деталей/LIVE автоматически запускают свежую отправку выбранному Agent.
  • Новая версия состава не переиспользует результат начатого раньше Mapping; одинаковые снимки объединяются, счёт/статистика/время не вызывают лишних отправок.
  • Окно открытия остаётся до загрузки составов и подтверждения Mapping, показывает реальные этапы и краткую историю. При отсутствии данных доступны повтор/продолжение.
  • Через 45 с долгого ожидания показывается предупреждение с возможностью продолжить. Этот срок не прерывает Mapping и не повторяет запрос с неизвестным результатом.
  • Старые ответы не закрывают новое окно и не меняют выбранные матч/Agent/сессию. Пока окно открыто, эфирные горячие клавиши заблокированы.
  • Native Countdown, Windows Agent 1.5.5, зависимости и настройки не менялись.

Проверки BUILD197: 902 passed, 0 failed, без skip/xfail. Проверены поздние составы, новая отправка Mapping, ожидание/повтор, таймеры и изоляция Agent; окно проверено в локальном Chromium при 390/1280 px. Подключения к рабочей VM и реальному vMix не выполнялись.

BUILD196 — 22 октября 2026 · 2026.10.22.2

Commit: BUILD196 — обновлять большинство и составы, задерживать связанные плашки.

  • Сохранение работающих таймеров сохраняет ближайший срок отправки. Тики основного времени и удалений больше не откладывают обновление численных составов до остановки часов.
  • Ожидающие сохранения перепроверяют текущий запрос, устраняя параллельные повторные PUT после медленного ответа. Последнее состояние доходит до сервера.
  • Истёкший таймер удаления получает нулевую длительность перед сбросом и снятием плашки. Следующий действующий таймер обновляется в своём назначении; остальные работающие Countdown не перезапускаются при завершении соседнего удаления.
  • Новая плашка ждёт сохранения численного состава и окончания обновления Mapping.
  • У слотов удалений и связанных шагов верхнего счёта добавлено поле «После верхнего счёта, с». Для пустых ворот и отложенного штрафа такое же поле находится в админке «Таймеры и составы». Диапазон 0–60 с, шаг 0,1 с; 0 — сразу.
  • Ожидание отсчитывается от выдачи основного титра и не блокирует управление временем. После снятия счёта, смены матча, Agent, сессии или прав старый показ отменяется. При срабатывании задержки заново читаются действующие удаления и флаги.
  • Ответы старых запросов состояния Overlay не восстанавливают плашки в новом контексте.
  • Готовый состав принимается при LIVE-ответе changed:false. Пустой кэш завершённого матча дозагружается; отсутствующие строки состава восстанавливаются из сохранённого источника. Полный кэш завершённого матча по-прежнему открывается без запроса к API.
  • Agent 1.5.5 и зависимости не менялись; настройки обновлением не заменяются.

Проверки BUILD196: 879 passed, 0 failed, без skip/xfail. Полный локальный прогон включает новые сценарии удалений, задержек и составов. Подключения к рабочему vMix и внешним источникам не выполнялись.

BUILD195 — 22 октября 2026 · 2026.10.22.1

Commit: BUILD195 — исправить HTTP 500 при применении Mapping.

  • Обёртка журнала передаёт служебные параметры отправителю WebSocket. Применение конфига и ручная отправка Mapping с Agent 1.5.5 больше не падают до передачи команд.
  • Проверки текущего подключения, поколения и поддержки пакетной отправки остаются внутри блокировки отправителя. Запоздалый пакет не получает обход этих проверок.
  • Добавлена проверка HTTP-запроса применения конфига с включённым журналированием, включая публикацию, разрешение данных из БД, отправку и подтверждения Agent.

Проверки BUILD195: 80 passed, 0 failed, без skip/xfail. Проверены реальные HTTP-запросы с включённым журналом; производственные подключения не выполнялись.

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.

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. Настоящий 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. Живые 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. Финальный поведенческий набор — 91 passed; дополнительные проверки входа с телефона и выхода при недоступной авторизации также прошли. Полный набор после последних правок повторно не запускался.

Последняя исходная сборка

BUILD189 / 2026.10.02.9: снижение повторных SQL-запросов и нагрузки двух матчей, оптимизация браузерных обновлений и работы второго Agent. BUILD188 восстановил вызов удаления при верхнем счёте и сохранение действующего удаления при снятии Delay Penalty. BUILD180–184 развивали контекст штрафа, SQL, Preview через триггер, общую ссылку «Своих плюсов» и подготовленные титры. Предшествующие обновления включали роли оператора/зрителя, атомарные настройки UI, карьеру КХЛ, аналитику, переносимый mapping и native Countdown.

Архив прежних инструкций

history.zip содержит исходные README/UPDATE/VALIDATION и manifests, включая разбор прежних 40 падений тестов. Это исторические документы для сравнения и восстановления, их команды установки относятся к указанным в них сборкам. Текущие инструкции находятся в README, OPERATOR, ADMIN и ARCHITECTURE. Исходные рабочие данные и credentials в архив истории не включены.