Files
hockey_new/README_BUILD184.txt

121 lines
10 KiB
Plaintext
Raw Permalink 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.

BUILD184 — 2026.10.02.5
Обновление плашек верхнего счёта, Value/SelectedName, SQL-признаки удаления и сессия Mapping
Установка поверх BUILD183:
1. Остановите сервер, сохраните копии пяти заменяемых файлов.
2. Распакуйте архив в корень проекта с app.py, сохранив папки и заменив файлы.
3. Запустите сервер, обновите страницу Ctrl+F5.
В архиве только пять изменённых файлов программы и эта инструкция.
Локальные конфиги, SQL-источники, связи Mapping и база данных не заменяются.
Изменений схемы БД и новых зависимостей нет. Новые системные переменные
регистрируются автоматически при запуске механизма Mapping.
Верхний счёт / Отложенный штраф / Пустые ворота:
- Условные шаги OverlayInput1–8In (и старые OverlayInput1–8) в включённом
сценарии, отмеченном как верхний счёт, теперь проверяются при изменении
флагов HOME/AWAY/ANY: empty_net и delayed_penalty.
- При появлении условия обновляются связанные данные титра и выдаётся
настроенный Input. При исчезновении условия плашка снимается со своего слоя.
Весь сценарий, основной счёт, задержки и команды таймеров повторно не запускаются.
- Снятие проверяет Input, который находится на слое: посторонний титр,
заменивший плашку, не снимается. Основной Input защищён от снятия флагом.
- При смене HOME/AWAY на одном слое сначала снимается старая плашка, затем
обновляется и выдаётся новая. Если несколько активных шагов адресуют один
слой, приоритет у последнего шага сценария, как при его обычном исполнении.
- Плашки восстанавливаются после получения Agent tally. Одна вспомогательная
плашка не удерживает основной счёт в состоянии «в эфире», если счёт снят.
- Изменения выполняются в общей очереди титров. Во время ожидания SQL
повторно проверяются флаги, основной счёт, матч, Agent, сессия и права.
Устаревшая выдача отменяется. Зрители команды не отправляют.
Пример шага с картинки:
Function: OverlayInput3In
Условие: HOME — пустые ворота включены
Input: EMPTY NET HOME - GT
SelectedName: Text_Away.Text
Value: EMPTY NET
Если у команды включены пустые ворота и верхний счёт в эфире, теперь
отправляется SetText в Text_Away.Text, затем OverlayInput3In.
При выключении пустых ворот отправляется OverlayInput3Out, если на слое
остаётся этот Input. Снимать и заново выдавать основной счёт не требуется.
Value/SelectedName:
- В шаге vMix с PreviewInput, ActiveInput или OverlayInput1–8[/In], если
заданы SelectedName и Value, поле заполняется отдельной командой перед
выдачей/Preview. Тип поля из актуальной структуры выбранного Agent определяет
SetText, SetImage или SetColor, в том числе при первом вызове.
- SQL/Mapping читается один раз для Input перед заполнением поля.
Явный Value из шага применяется после Mapping.
- Поддерживаются числовой Value=0, шаблоны, альтернативный Input и поле
при выданном счёте. Пустой результат заданного шаблона очищает поле.
Незаданный Value не создаёт лишнюю команду очистки.
- Прямые SetText и нативные команды Countdown не дублируются.
Рабочий механизм основного времени и удалений сохранён.
Применение конфига Mapping на другом аккаунте/компьютере:
- Передаются текущие матч, матчевая сессия и выбранный Agent этого браузера.
- Сервер использует именно эту сессию. Последняя сессия аккаунта из другой
вкладки, в том числе пустой канал без матча, больше не подменяет выбранный матч.
- Проверяются принадлежность активной сессии и Agent аккаунту и совпадение
выбранного матча. Устаревший или чужой токен не подменяется другой сессией.
- Для клиента без токена допускается только действующее назначение именно
выбранного Agent. При несовпадении матча выполнение останавливается.
- Сначала назначается правильный матч без отправки старого Mapping, затем
применяется выбранный конфиг. Защита сессии/Agent от соседнего браузера сохранена.
Новые SQL-параметры:
:home_has_penalty
:away_has_penalty
Значение каждого — строка true или false для всей команды, независимо от
выбранной карточки. true, если есть хотя бы одно назначенное незавершённое
удаление с остатком времени. Учитываются удаления до запуска и на паузе,
командные, дисциплинарные 10/20 и обоюдные удаления. Черновики без необходимых
данных, история, законченные и нулевые удаления не учитываются.
После удаления/завершения последней карточки команды значение false.
Если матч не определён — false. Значения берутся из сохранённого состояния
матча; вручную подменить их через Mapping нельзя.
Готовый запрос, возвращающий настоящие boolean поля PostgreSQL:
SELECT
CAST(:home_has_penalty AS boolean) AS "home_has_penalty",
CAST(:away_has_penalty AS boolean) AS "away_has_penalty";
Пример использования в условии:
CASE
WHEN CAST(:home_has_penalty AS boolean) THEN 'HOME PENALTY'
ELSE ''
END AS "home_penalty_caption"
Параметры также видны в «Переменные» / «Система · Удаления» и напрямую
доступны в Mapping как context.home_has_penalty и context.away_has_penalty.
Проверки:
- 22 новые backend-проверки применения конфига: точная сессия, более новый
пустой/другой канал, другой аккаунт со своим Agent, чужие и закрытые токены,
несовпадение матча, изменение назначения при ожидании, защита другого браузера.
- 7 прежних проверок маршрутизации нескольких Agent, копирования конфигов
и защиты сессии/Agent другого браузера прошли.
- Браузерная проверка применения Mapping по реальным кнопкам интерфейса:
текущие матч/токен/Agent, другой аккаунт/компьютер, старый канал настроек,
неверный Agent в сохранённых настройках и понятные сообщения ошибок.
Прежние браузерные проверки Mapping BUILD170/175/183 также прошли.
- 82 локальные проверки backend, включая 26 новых вариантов признаков
удаления, прошлые SQL/Mapping, контекст игрока, команды и Preview.
- 29 подходящих статических проверок интерфейса прошли.
- Браузерные проверки: условия плашек и подписи; HOME/AWAY; защита слоя;
восстановление по tally; все восемь Overlay; быстрая смена флагов и смена
матча/Agent/сессии/прав при ожидании SQL; реальная кнопка нижней панели;
тексты/картинки/цвета; один запрос Mapping; удаления последней карточки;
прежние кнопки и триггеры Preview; общая ссылка «Свои плюсы».
- Синтаксис Python и JavaScript проверен.
В старых статических проверках остаются 9 устаревших ожиданий предыдущих
механизмов timer-fast/PauseCountdown и четырёх Overlay; те же проверки
не проходят и на версии до этой правки. Ради них рабочий Countdown не менялся.
Реальный PostgreSQL и ваш vMix не использовались: проверки выполнялись
изолированно, с имитацией команд и состояния Agent.