This commit is contained in:
2026-10-18 03:11:10 +07:00
parent 8610f45a29
commit 3e2608eae3
23 changed files with 1460 additions and 302 deletions
+1 -1
View File
@@ -45,7 +45,7 @@
и выбор внешнего дисплея; явно нажать «Открыть показ» после восстановления.
- [ ] При отсутствии звука проверить системный выход, HDMI, mute и громкость обоих каналов.
- [ ] После аварии проверить остаток таймера на паузе; медиа запускать явно.
- [ ] После возврата сети дождаться связи и отправить новую команду через сайт.
- [ ] После возврата сети проверить применение текущего серверного состояния.
- [ ] При повторном сбое сохранить журналы и сведения по
[руководству](USER_GUIDE.md#журналы-и-обращение-за-помощью).
+33 -52
View File
@@ -17,60 +17,41 @@
до выхода из приложения. На Linux требуется рабочий libsecret/KWallet;
`basic_text` не используется для сохранения секретов.
## Серверные команды
## Постоянная связь и автоматическая подготовка SCREEN-012
1. Нажать «Подключить управление этой игрой», записать номер экрана.
Открыть показ на внешнем дисплее. Дождаться сообщения о связи.
2. Открыть существующую страницу управления этой игрой на сайте.
Убедиться, что экран появился в её списке. Назначить звук этому экрану
через сайт или одноимённую кнопку приложения; это отключает звук других
экранов игры по существующим правилам сервера.
3. Отправить новую команду смены режима, пуска вступления, паузы, продолжения,
перемотки и громкости. Повторить с заключительным видео.
4. Проверить текст, настройку/пуск/паузу/сброс таймера и музыку: выбор трека,
громкость, повтор и автоматический переход. Все используемые ресурсы должны
быть в скачанном пакете; новый плейлист требует подготовки материалов.
5. Чередовать серверные команды и локальный пульт. Локальная пауза не должна отменяться повтором
того же серверного состояния. Новая серверная команда должна применяться.
Команды компьютера действуют только на этот показ и не рассылаются другим экранам.
6. Проверить прежний браузерный экран отдельно: его вход, привязка и команды
должны работать как раньше. Общие команды игры по-прежнему относятся ко всем
её подключённым экранам.
1. Выбрать игру, которой ещё нет на компьютере, и нажать «Подключить выбранную
игру». Проверить связь и прогресс загрузки при закрытом показе.
2. Назначить звук экрану. Вручную открыть показ: текущие серверные экран и музыка
применяются после сохранения необходимых файлов. Проверить локальные адреса
медиа; прямого воспроизведения HTTP-файлов в renderer быть не должно.
3. Через сайт сменить экран, текст, таймер и музыку. Повторное состояние не
перезапускает медиа. Закрыть показ, изменить серверное состояние и открыть его
снова: оно применяется, но закрытое окно самостоятельно не открывается.
4. Добавить новый трек или сменить плейлист на ещё не подготовленный. На медленном
соединении прежняя музыка продолжает играть до готовности нового файла.
Смена текста в это время не ждёт музыку. Аналогично проверить новое вступление,
видео и изображения. Все связанные плейлисты и остальные материалы готовятся фоном.
5. Во время загрузки несколько раз сменить серверную команду: устаревший файл
не должен включаться после завершения загрузки. Ошибка отдельного файла или
нехватка места не удаляет готовые материалы; проверить «Повторить подготовку».
6. Проверить локальные режимы, шаги, основной канал, таймер и музыку: онлайн они
меняют общий сервер. Выключение всего звука остаётся локальным. Публикация
произвольного текста сохраняет и выбирает текстовый шаг общего плана.
7. Отключить сеть, изменить показ локально, затем изменить состояние на сервере.
Вернуть сеть: серверные экран и музыка принимаются; локальные офлайн-команды
не отправляются позднее. После полного скачивания проверить час показа без сети.
8. Перезапустить приложение без сети с тем же профилем. Сохранённые игра и снимок
результатов доступны, окно закрыто. Открыть его и проверить локальные файлы.
Повредить один тестовый файл, восстановить его автоматически при доступной сети
и повторить перезапуск: остальные ресурсы и исправленный файл должны сохраниться.
9. Проверить истечение JWT и экранной сессии, смену игры во время загрузки,
выход без удаления файлов и сохранность предыдущего полного пакета после
неудачной ручной перезагрузки. Не менять рабочую базу ради проверки.
Опрос идёт раз в секунду, только пока окно показа открыто. Первое состояние при
подключении/повторном открытии становится исходной отметкой: старые команды не
запускаются, назначение звука учитывается при первом подключении. Для показа
отправьте новую команду. Сайт показывает наличие связи; точные подтверждения
проигрывателя и ошибки доступны в пульте приложения, поскольку существующий API
не принимает их от экрана.
## Обрыв связи, обновления и перезапуск
1. Во время воспроизведения отключить сеть компьютера. Проверить локальные
play/pause/seek, переход музыки и продолжающийся таймер.
2. При отключённой сети изменить показ локально, затем отправить команду
через сайт. Вернуть сеть: накопленное состояние не должно отменить локальное
действие. Следующая новая серверная команда должна примениться.
3. Проверить истечение пользовательского входа и отдельно недействительную
экранную сессию на тестовом сервере. Показ не прерывается; интерфейс предлагает
повторный вход или подключение управления. Не менять рабочую базу ради проверки.
4. Закрыть показ. Изменить материалы игры на сервере и проверить изменения
в приложении. Явно загрузить новую версию. При открытом показе обновление
выбранной игры должно отклоняться. Ошибка и отмена загрузки сохраняют старую копию.
5. Завершить игру и обновить снимок результатов. Проверить таблицу и время снимка.
Ошибка обновления должна сохранять последний успешный снимок.
6. Закрыть приложение, отключить сеть и запустить снова. Выбранная игра и снимок
результатов доступны; окно показа и звук сами не запускаются. Открыть показ
и проверить локальное воспроизведение.
7. Выход из аккаунта не удаляет материалы и не прерывает локальное воспроизведение,
но отключает получение команд сервера. Удалить невыбранный пакет через интерфейс.
Проверка метаданных не обнаруживает новые байты файла по прежнему URL:
для этого нужна повторная загрузка. Сервер хранит последнее состояние, поэтому
несколько команд между опросами могут объединиться. После неопределённого исхода
запроса перехода музыки приложение не повторяет его автоматически. Секреты
находятся отдельно от пакетов в зашифрованном файле `connection/credentials.bin`
в userData; пароль не сохраняется. Снимки содержат только поля публичной таблицы.
Ручная «Загрузить материалы» остаётся для принудительного обновления файлов по
прежнему адресу и требует закрытого показа. Существующие полные пакеты совместимы
с автоматическим кешем. Пароль не сохраняется, токены остаются в основном процессе
и защищённом хранилище ОС; снимки содержат только публичные поля результатов.
## Фиксация результата
+2 -1
View File
@@ -74,7 +74,8 @@
другой экран требуется выбрать вручную. Автоматического открытия нет.
3. Вернуть сеть и подключить управление игрой. После аварийного закрытия
отправить через сайт команду PLAY, затем восстановить и вручную открыть показ.
Накопленная команда не запускает звук. Следующая новая команда применяется.
Пока окно закрыто, звука нет. После ручного открытия применяется текущая
серверная команда; повторные ответы её не перезапускают.
4. Закрыть приложение во время показа. Звук прекращается, блокировка сна
освобождается, материалы остаются на диске. При повторном запуске нет автопуска.
+2 -2
View File
@@ -129,8 +129,8 @@ preload, локальную выдачу Range, восстановление п
4. Выполнить SCREEN-007: переподключение проектора, смена параметров дисплея,
fullscreen, автоматический/принудительный сон, кабельный/USB/HDMI звук.
Восстановление требует явного открытия; медиа остановлены, таймер на паузе.
5. Вернуть сеть. Старая серверная команда не отменяет локальное действие;
новая команда применяется. Завершить игру и сохранить результаты с датой снимка.
5. Вернуть сеть. Принимаются текущие серверные экран и музыка, локальные
офлайн-команды не отправляются позднее. Завершить игру и сохранить результаты с датой снимка.
6. Перезапустить приложение без сети: выбранная игра/снимок доступны, окно показа
закрыто, звук не начинается. Заменить папку приложения новой сборкой с тем же
пользовательским профилем и повторить проверку сохранности данных.
+41 -40
View File
@@ -58,26 +58,27 @@ Windows 11, macOS 13+, Ubuntu 24.04 LTS или Debian 13. Эти требова
Нажмите «Войти». Пароль вводите только в приложении, не отправляйте в отчёты.
2. При необходимости нажмите «Обновить список игр» и выберите игру
в поле «Выберите игру для подготовки».
3. Нажмите «Загрузить материалы». Дождитесь завершения; при необходимости
используйте «Отменить загрузку». Не выезжайте с незавершённой загрузкой.
4. В отдельном блоке **«Материалы показа» выберите подготовленную игру**.
Загрузка и выбор игры на сервере сами по себе не выбирают пакет для показа.
Статусы игр отображаются как «Черновик», «Идёт», «Пауза», «Завершена».
Сообщение «Тестовый режим: синтетические аудио и видео» означает, что игровая
копия не выбрана.
5. Откройте показ, проверьте изображения, вступление, видео и плейлисты.
Отключите сеть и повторите пробный показ. Затем перезапустите приложение
без сети и убедитесь, что выбранная игра доступна.
3. Нажмите «Подключить выбранную игру». Она станет игрой показа, даже если ещё
не подготовлена на этом компьютере. Отдельно скачивать полный пакет не требуется.
4. Приложение получает состояние экрана и музыки раз в секунду, сначала скачивает
нужные сейчас файлы, затем остальные материалы игры и связанные плейлисты.
Связь и подготовка продолжаются при закрытом показе. Прогресс виден в пульте.
При ошибке доступна кнопка «Повторить подготовку»; уже сохранённые файлы остаются.
5. Откройте показ вручную. Приложение применит текущую серверную сцену и музыку,
включая воспроизведение. До готовности нового файла прежнее содержимое канала
сохраняется. Все медиа читаются только с локального диска.
6. Перед выездом дождитесь полной подготовки без ошибок и проверьте игру без сети.
«Материалы показа» позволяет выбирать ранее сохранённые игры и тестовый режим.
Офлайн доступны только фактически скачанные файлы.
Если ОС не предоставляет защищённое хранилище, приложение предупреждает:
вход действует до закрытия приложения, но материалы сохраняются. После перезапуска
для серверного управления потребуется повторный вход; локальный пакет доступен офлайн.
Для обновления материалов закройте показ, выберите игру на сервере и нажмите
«Проверить изменения», затем явно «Загрузить материалы». Если файл заменили
по прежнему адресу, проверка изменений может этого не заметить — загрузите
материалы повторно. Новый плейлист тоже требует подготовки. Ошибка или отмена
обновления сохраняет прежнюю готовую копию.
Новые адреса материалов и изменения плейлистов автоматически подготавливаются
во время показа. Если заменили содержимое файла по прежнему адресу, для
принудительной загрузки закройте показ и нажмите «Загрузить материалы».
Ошибка или отмена ручного обновления сохраняет прежний полный пакет.
## Проведение показа
@@ -95,7 +96,9 @@ Windows 11, macOS 13+, Ubuntu 24.04 LTS или Debian 13. Эти требова
режим, текст, надпись и длительность таймера. «Сохранить план» отправляет план
на сервер; «Отменить» возвращает сохранённый вариант. Для удаления всего плана
нажмите «Удалить план», затем «Сохранить план». При ошибке сохранения черновик
остаётся в редакторе. Изменения черновика и сохранение сами не меняют проектор.
остаётся в редакторе. Изменения черновика и сохранение сами не меняют проектор. Публикация текста
кнопкой «Показать текст» использует подходящий текстовый шаг общего плана
или добавляет новый, поскольку сервер передаёт произвольный текст через план.
План общий с сайтом. При параллельных правках последнее сохранение
заменяет его целиком. Во время редактирования фоновое обновление не меняет
@@ -106,8 +109,8 @@ Windows 11, macOS 13+, Ubuntu 24.04 LTS или Debian 13. Эти требова
локально сразу. При наличии связи действие отправляется на сервер для остальных
привязанных экранов. Без сети показ продолжается по последней копии; статус
предупреждает о неподтверждённом обновлении. Офлайн-команды не накапливаются:
восстановление связи само не меняет проектор и не отправляет прошлые переходы.
Следующее действие онлайн снова управляет общим планом.
после восстановления связи принимается текущее серверное состояние. Прошлые
локальные переходы на сервер не отправляются.
### Вступление, видео и музыка
@@ -148,39 +151,37 @@ Windows 11, macOS 13+, Ubuntu 24.04 LTS или Debian 13. Эти требова
## Связь с сервером
1. Войдите и выберите готовую игру в «Материалы показа».
2. Проверьте строку «Игра для управления»: это название локально выбранного
пакета, независимо от игры в списке загрузки выше. Нажмите «Подключить управление
этой игрой»; запишите показанный номер экрана.
Откройте показ и дождитесь «Связь с сервером есть».
3. Откройте существующую страницу управления этой игрой на сайте.
При необходимости назначьте звук экрану через сайт или кнопку
«Назначить звук этому экрану». Это отключает звук других экранов игры
по существующим правилам сервера. Статус назначения звука показывается отдельно
от локального переключателя «Выключить весь звук». До подтверждения сервером
назначение неизвестно; при закрытом показе или потере связи отображается
последнее подтверждённое состояние.
4. Отправьте новую команду. Первое состояние после подключения, открытия окна
или восстановления связи не повторяет старые команды.
Подключите выбранную игру кнопкой в «Игра и сервер». Для ранее сохранённой игры
можно использовать «Подключить управление этой игрой». Проверьте название
в строке «Игра для управления» и номер экрана. Подготовка файлов не требует
открытого показа; само окно автоматически не открывается.
Опрос сервера идёт раз в секунду при открытом показе. Быстрые команды между
опросами могут объединяться. Локальные команды компьютера действуют только
на его показ и не рассылаются другим экранам. Новая команда сервера может
изменить локальный показ. «Отключить управление» прекращает управление приложением,
но сохраняет привязку экрана на сервере. Для отвязки используйте сайт.
При отсутствии интернета пользуйтесь локальным пультом.
Приложение постоянно принимает изменения сцены, текста, таймера и музыки.
Первый ответ после подключения, открытия окна или восстановления сети применяется
как текущее состояние сервера. Одинаковая версия не запускает медиа повторно.
Команды локального пульта при доступной сети отправляются на сервер и относятся
ко всем привязанным экранам. Выключение всего звука остаётся локальной настройкой.
Назначение звука экрану меняется отдельно через сайт или «Назначить звук этому
экрану». Оно отключает звук остальных экранов по правилам сервера. При отсутствии
связи отображается последнее подтверждённое назначение.
Без сети продолжайте локально. После её возврата серверное состояние заменяет
локальное; накопленные локальные действия не отправляются. Точная синхронизация
позиций ограничена данными существующего API. «Отключить управление» прекращает
получение состояний, но не удаляет привязку экрана на сервере.
## Сбои и восстановление
| Ситуация | Действия ведущего |
| --- | --- |
| Нет сети | Продолжайте локально. После возврата сети дождитесь связи и отправьте новую команду через сайт. |
| Нет сети | Продолжайте локально. После возврата сети приложение примет текущие экран и музыку сервера. |
| Проектор отключился, изменилось разрешение или произошёл сон | Прочитайте причину в пульте, восстановите дисплей/выход звука, выберите внешний экран и явно откройте показ. Медиа остановлены, работающий таймер сохранён на паузе. |
| Нет звука | Проверьте выход и mute ОС, кабель/USB/HDMI, «Выключить весь звук», громкость канала, открытое окно и статус проигрывателя. Для серверных команд проверьте назначение звука экрану. |
| Ошибка подготовки сцены | Проверьте сообщение и нажмите «Повторить подготовку». При повторении проверьте пакет до продолжения игры. |
| Пакет повреждён или отсутствует файл | При доступной сети закройте показ и загрузите материалы заново. Для удаления выберите другой пакет или тестовый режим, затем «Удалить материалы» у нужной игры. Без сети восстановить отсутствующие байты нельзя. |
| Истёк вход или сессия экрана | Повторно войдите или подключите управление по сообщению пульта. Готовые материалы остаются на диске. |
| Приложение перезапущено | Выбранная игра и сохранённые результаты восстанавливаются. Откройте показ и запустите нужные медиа/таймер явно; их текущее выполнение не восстанавливается. |
| Приложение перезапущено | Выбранная игра и сохранённые результаты восстанавливаются. Откройте показ вручную: онлайн применяется текущее состояние сервера, офлайн запускайте медиа локально. |
| Пульт пуст или зависает при запуске | Запишите ОС, версию, симптомы и сообщения запуска, передайте отчёт. Не считайте такой запуск успешным. |
При открытом показе приложение запрашивает блокировку автоматического сна,