up
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# Вечерний детектив — приложение площадки
|
||||
|
||||
Статус: программная часть SCREEN-004 реализована; SCREEN-001 и SCREEN-004
|
||||
остаются IN_PROGRESS до аппаратной приёмки.
|
||||
Статус: SCREEN-005 реализована; SCREEN-001 и SCREEN-004 остаются IN_PROGRESS
|
||||
до аппаратной приёмки. Режимы показа и пульт работают с локальными пакетами.
|
||||
SCREEN-002 и SCREEN-003 завершены: описание пакета через существующий API,
|
||||
загрузка, проверка, восстановление и локальная выдача файлов.
|
||||
Управление с телефона идёт через существующий сервер сайта; desktop получает
|
||||
@@ -22,7 +22,8 @@ macOS Intel/Apple Silicon, Windows x64/ARM64 и Linux x64/ARM64.
|
||||
общего правила хранения задач в `../docs/agent`. Не дублировать их там.
|
||||
Идентификаторы `SCREEN-*` относятся только к этому приложению.
|
||||
|
||||
Текущий этап: SCREEN-004; программная часть готова, аппаратная проверка открыта.
|
||||
Следующий этап: SCREEN-006 — авторизация, загрузка через интерфейс и серверная
|
||||
синхронизация; аппаратная проверка SCREEN-004 остаётся открытой.
|
||||
Новые задачи: `Новая задача: <описание>`.
|
||||
Commit и push выполняет только пользователь. Вложенные `.git` не изменять.
|
||||
|
||||
@@ -44,8 +45,8 @@ npm run dev
|
||||
его и откройте показ. Аудио и видео — синтетические локальные файлы длительностью
|
||||
60 секунд; бинарники находятся в игнорируемом fixtures/ и не входят в Git.
|
||||
Тестовый режим сохраняет отдельный выбор WAV/видео; игровые пакеты выбираются
|
||||
в разделе «Материалы показа». Полные игровые
|
||||
режимы, интерфейс загрузки игр и авторизация пока не реализованы.
|
||||
в разделе «Материалы показа». Интерфейс загрузки игр и авторизация пока
|
||||
не реализованы; они относятся к SCREEN-006.
|
||||
|
||||
Управление телефоном через сервер, подключение игры и авторизация относятся к
|
||||
SCREEN-006 и в техническом стенде ещё не реализованы. Интернет нужен для получения
|
||||
@@ -179,5 +180,51 @@ URL, независимо от исходного имени файла. Лок
|
||||
`dist-electron`, из которого Electron загружает preload при открытии окна.
|
||||
Программные замеры в пульте разделены по каналу и текущему виду медиа; они
|
||||
не измеряют физический звук/первый кадр. Аппаратная приёмка, остальные ОС,
|
||||
реальные игровые материалы и p95 на M1 пока не подтверждены. Полные визуальные
|
||||
режимы остаются в SCREEN-005, авторизация и получение серверных команд — в SCREEN-006.
|
||||
реальные игровые материалы и p95 на M1 пока не подтверждены. Все восемь визуальных режимов доступны в SCREEN-005; авторизация и получение
|
||||
серверных команд остаются в SCREEN-006.
|
||||
|
||||
## Пульт и режимы SCREEN-005
|
||||
|
||||
Пульт включает готовый пакет, план шагов, переключатель восьми режимов, текст,
|
||||
таймер, предпросмотр и прежние независимые каналы медиа/музыки. План из пакета
|
||||
доступен только для чтения. Выбор шага применяет его параметры без автоматического
|
||||
запуска звука/таймера; окончание медиа не переключает шаг. Пуск основного ресурса
|
||||
показывает соответствующий режим вступления или видео. Уход в другую сцену
|
||||
останавливает основной канал, сохраняя независимую музыку.
|
||||
|
||||
Текст и параметры таймера редактируются как черновик; только «Показать текст» /
|
||||
«Показать таймер» публикуют их. Текст отображается как обычный текст, без HTML.
|
||||
Таймер вычисляется в основном процессе по монотонному deadline; интервалы только
|
||||
обновляют снимок. Пауза сохраняет точный остаток, сброс возвращает полную длительность.
|
||||
Таймер продолжает идти за другой сценой и при закрытом окне; смена пакета сбрасывает
|
||||
его. По окончании остаётся 00:00, без сигнала и смены режима. Восстановление после
|
||||
сна/перезапуска относится к SCREEN-007.
|
||||
|
||||
Обложка и фон читаются через локальный протокол. Новая подготовка использует
|
||||
адрес с идентификатором сцены, исключая устаревший декодированный кеш изображения.
|
||||
Окно подтверждает готовность по загрузке изображений/медиа; запоздалые подтверждения
|
||||
прошлой сцены/сессии игнорируются. Сообщения об ошибках доступны только пульту.
|
||||
На проекторе остаются материалы игры и предусмотренные состояния отсутствия
|
||||
необязательного вступления/видео/результатов, без кнопок и диагностических текстов.
|
||||
|
||||
Предпросмотр — кадры настоящего окна через capturePage, максимум два в секунду,
|
||||
шириной не более 960 px. В пульте нет второго audio/video. Захват недоступен окну
|
||||
показа, при закрытом проекторе/скрытом или свёрнутом пульте прекращается; старые
|
||||
кадры другой сцены/сессии не принимаются. Хранится только последний кадр.
|
||||
Системные шрифты с кириллицей не требуют сети.
|
||||
|
||||
`Controller.setResults(snapshot)` принимает снимок текущей игры: packageKey,
|
||||
capturedAt, вопросы и публичные строки таблицы (ID/название команды, место,
|
||||
сумма, ходы и баллы ответов). Лишние поля отбрасываются, другой ключ игры,
|
||||
повторные команды/вопросы и некорректные значения отклоняются. На пульте указан
|
||||
момент снимка. При его отсутствии показывается «Результаты пока не загружены»;
|
||||
фиктивные результаты в приложении не создаются. Длинная таблица прокручивается
|
||||
снизу вверх, обновления позиций медиа её не перезапускают. Сетевое получение и
|
||||
сохранение снимка реализуются в SCREEN-006; публичного IPC редактирования результатов нет.
|
||||
|
||||
`npm run acceptance` теперь создаёт локальный пакет с обложкой, фоном и восемью
|
||||
шагами; [инструкция SCREEN-005](docs/SCREEN-005_ACCEPTANCE.md) описывает полный
|
||||
офлайн-проход. Автоматический smoke проверяет также повреждение/восстановление
|
||||
изображения, отсутствие второго звука, предел частоты кадров предпросмотра,
|
||||
кириллицу и отрисовку/прокрутку 50 синтетических строк результатов. Эти строки
|
||||
подаются только в тестовый renderer и не сохраняются в состоянии приложения.
|
||||
|
||||
Reference in New Issue
Block a user