Files
hockey_new/README_BUILD175_RU.md

83 lines
8.4 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.

# Build 175 — кнопки титров и язык Mapping
Версия приложения: `2026.09.29.12`. Установить поверх build 174.
В архиве только 5 изменённых файлов приложения и эта инструкция.
## Установка
1. Остановите приложение и сохраните копии заменяемых файлов.
2. Распакуйте содержимое архива в корень проекта с заменой файлов, сохраняя вложенные каталоги.
3. Запустите приложение и обновите страницу браузера через Ctrl+F5.
Файлы настроек, база данных, .env и архивы КХЛ в поставку не включены.
Настройки кнопок продолжают храниться в `settings/hockey_player_panel_buttons.json`.
Существующие кнопки и их ID сохраняются. Новый параметр `title_text` появляется при сохранении кнопки через интерфейс.
## Один Input — несколько надписей
1. Откройте ⚙ рядом с кнопкой + у блока игроков → «Титры блоков».
2. Создайте кнопки, назначьте им разные ID и одинаковое название vMix Input.
3. Заполните поле «Надпись в титре» для каждой кнопки. Например:
| Кнопка | ID | Надпись в титре | Input |
|---|---|---|---|
| Сезон | season | СТАТИСТИКА ЗА СЕЗОН | Статистика игрока |
| Карьера | career | СТАТИСТИКА ЗА КАРЬЕРУ | Статистика игрока |
| Матч | match | СТАТИСТИКА ЗА МАТЧ | Статистика игрока |
4. Сохраните настройки. В Mapping у текстового элемента этого Input выберите «Титры · Нажатая кнопка → Надпись в титре» (`title_button.text`).
5. Выберите игрока и нажмите нужную кнопку. Сначала сохраняются её ID и надпись, затем применяется Mapping, затем Input отправляется в Preview.
Пустое поле «Надпись в титре» передаёт пустую строку и очищает связанный текстовый элемент. Название самой кнопки и подсказка задаются отдельно; режим «Только иконка» работает как прежде.
Подсветка показывает последнюю нажатую кнопку в матче, а не состояние эфира vMix. Сохраняется вместе с контекстом матча, в том числе после обновления страницы. На время отправки остальные кнопки титров блокируются, чтобы быстрые нажатия в разных блоках не смешивали надписи.
## ID, условия и SQL
| Поле Mapping | Параметр SQL | Значение |
|---|---|---|
| `title_button.id` | `:title_button_id` | ID последней нажатой кнопки |
| `title_button.label` | `:title_button_label` | Название кнопки |
| `title_button.text` | `:title_button_text` | Настроенная надпись |
| `title_button.panel_id` | `:title_button_panel_id` | ID блока |
| `title_button.input` | `:title_button_input` | Название Input |
Можно использовать ID в условиях Mapping или в своём SQL-источнике. Например, один SQL-источник с полями `caption_RUS` и `caption_ENG`:
```sql
SELECT
CASE :title_button_id
WHEN 'season' THEN 'СТАТИСТИКА ЗА СЕЗОН'
WHEN 'career' THEN 'СТАТИСТИКА ЗА КАРЬЕРУ'
WHEN 'match' THEN 'СТАТИСТИКА ЗА МАТЧ'
ELSE ''
END AS "caption_RUS",
CASE :title_button_id
WHEN 'season' THEN 'SEASON STATISTICS'
WHEN 'career' THEN 'CAREER STATISTICS'
WHEN 'match' THEN 'GAME STATISTICS'
ELSE ''
END AS "caption_ENG"
```
Если код источника `button_caption`, в Mapping выберите `button_caption.caption` с отметкой AUTO. Такая надпись учитывает и кнопку, и выбранный RU/EN. В этом варианте поле «Надпись в титре» кнопки не используется для соответствующего элемента vMix.
Сохранены и открыты для Mapping отдельные поля последней кнопки каждого блока:
`player_select.<ID блока>._preview_button_id`, `_preview_button_label`, `_preview_button_text`, `_preview_input`.
Глобальные `title_button.*` удобны для одного общего Input; поля конкретного блока — для независимых Input разных блоков.
## Исправление языка
- Mapping использует текущий переключатель RU/EN, даже пока карточка матча ещё содержит прежний язык.
- Запоздавший ответ каталога больше не заменяет более свежий ответ другого языка.
- Стандартные SQL-источники «Матч и команды», «Турнир», «Выбранный игрок», «Выделенный матч» читают нужные языковые столбцы. Ключи полей и связи Mapping сохраняются.
- При первом обращении старые стандартные запросы обновляются, только если их текст совпадает с исходным. Пользовательские SQL-запросы, подписи полей и остальные настройки сохраняются.
- Когда английское значение отсутствует в базе, используется русское. Явно выбранный столбец `*_RUS` остаётся русским; для автоматического языка выбирайте поле без суффикса (AUTO). Пользовательский SQL, который напрямую выбирает только `*_ru`, нужно сделать двуязычным по аналогии с примером выше.
- Настроенный вручную текст кнопки сам по себе не переводится. Для двух языков можно использовать показанный SQL.
## Проверка
Локально проверены сохранение JSON и повторная загрузка, ID в контексте/SQL, изоляция матчей, смена и очистка надписи, команды SetText с тем же названием Input, английский язык аккаунта при отправке в Agent и миграция только стандартных SQL-запросов.
В браузере проверены редактор кнопок, подсветка, сохранение настроек, порядок данных/Mapping/Preview, блокировка повторных нажатий, отказ от Preview при ошибке Mapping, RU/EN со старой карточкой матча и ответы в обратном порядке. Дополнительно пройдены проверки переименования и копирования Mapping.
57 целевых Python-проверок прошли. 6 устаревших проверок предыдущих сборок исключены из итогового прогона: прежний порядок вкладок, версия парсера 2 вместо 3 и тестовые Inputs без названия (старая привязка по ключу).
Реальные vMix и рабочая база не подключались: серверные проверки использовали SQLite и имитацию транспорта, браузерные — тестовые API.