61 lines
5.4 KiB
Plaintext
61 lines
5.4 KiB
Plaintext
BUILD183 — 2026.10.02.4
|
||
Поля SQL в Mapping до выбора игрока
|
||
|
||
Установка поверх BUILD182:
|
||
1. Остановите сервер и сохраните копии четырёх заменяемых файлов.
|
||
2. Распакуйте архив в корень проекта, где находится app.py, с сохранением папок.
|
||
3. Запустите сервер. Обновите браузер Ctrl+F5.
|
||
|
||
В архиве только изменённые файлы программы и эта инструкция. База данных,
|
||
локальные конфиги, сохранённые SQL и существующие связи не заменяются.
|
||
Миграция БД и новые зависимости не требуются.
|
||
|
||
Что исправлено:
|
||
- Если в runtime нет игрока, окно Mapping больше не передаёт пустой
|
||
selected_player_id поверх сохранённого выбора оператора.
|
||
- Когда обязательный ID ещё не выбран, административный каталог и проверка SQL
|
||
получают структуру результата через SELECT ... LIMIT 0, без выборки строк.
|
||
Поля включённого сохранённого источника можно связывать с любым Input заранее.
|
||
- Проверка SQL показывает колонки и предупреждение о недостающих переменных.
|
||
Для проверки значений выберите игрока в главном блоке «Выбранный игрок» или
|
||
задайте external ID в разделе «Переменные» для текущего матча.
|
||
- Настоящее выполнение SQL для титров по-прежнему требует выбранного игрока.
|
||
Список полей из редактора не отправляется в vMix как пустые данные.
|
||
Кнопки блоков сохраняют свой контекст игрока и обновляют SQL перед Preview.
|
||
- Описание структуры действует только в административном редакторе,
|
||
ограничено read-only транзакцией и таймаутом 2 секунды. Есть небольшой
|
||
ограниченный кэш структуры на 60 секунд; изменение текста SQL сразу даёт
|
||
новую структуру. Автообновление и таймеры не запускают этот механизм.
|
||
|
||
Как связать тот же запрос с другим титром:
|
||
1. Сохраните SQL-источник и оставьте «Источник включён» включённым.
|
||
2. Откройте Mapping и выберите нужный Input по названию.
|
||
3. Найдите поля своего источника и создайте/сохраните нужные связи.
|
||
Игрок не обязан быть выбран, чтобы настроить эти связи.
|
||
4. Для проверки реальных значений выберите игрока и проверьте SQL/вызов титра.
|
||
Включать автообновление ради создания связи не требуется.
|
||
|
||
Исправление в присланном запросе «Выбранный игрок»:
|
||
Строка p.external_id AS "id", p.* создаёт два поля с именем id.
|
||
Поле из p.* может заменить внешний ID внутренним p.id при чтении результата.
|
||
Для перечисленных в запросе полей замените эту строку на:
|
||
|
||
p.external_id AS "id",
|
||
p.id AS "player_db_id",
|
||
|
||
Остальная часть запроса остаётся такой же. Если нужны другие поля из p.*,
|
||
перечислите их явно с уникальными именами. Сохранённый SQL автоматически
|
||
не переписывается.
|
||
|
||
Проверено локально:
|
||
- 6 новых проверок: структура без выбора, реальное выполнение после выбора,
|
||
сохранность SQL, отсутствие вычисления строк при получении структуры,
|
||
обработка ошибки структуры, PostgreSQL read-only/таймаут/rollback,
|
||
административный каталог и отсутствие пустых команд в vMix.
|
||
- Существующие проверки SQL, Mapping, кнопок, удаления и контекста.
|
||
- Браузер: связь ко второму Input и сохранение обоих титров при нуле строк,
|
||
колонки/предупреждение, внешний ID, язык, сохранность черновика.
|
||
- Python/JavaScript проверены на синтаксис.
|
||
Реальный сервер PostgreSQL и подключение к вашему vMix в этой проверке
|
||
не использовались: проверки выполнялись изолированно и с имитацией команд.
|