This commit is contained in:
2026-10-17 18:14:31 +07:00
parent 1c42ae2a75
commit 701bca234e
31 changed files with 9774 additions and 21 deletions
+29 -10
View File
@@ -7,6 +7,7 @@
внешнем дисплее. Аудио, видео, изображения и выбранные музыкальные плейлисты
читаются с диска. Пульт переключает показ и управляет воспроизведением локально.
После подготовки потеря интернета не мешает локальному показу и таймеру.
Полный пульт телефона работает в доверенной локальной сети одновременно с пультом компьютера.
«Все материалы» в первой версии — все ресурсы, необходимые окну показа:
вступление, закрывающее видео, обложка, фон, материалы шагов плана, выбранные
@@ -70,11 +71,24 @@ Linux проверяется на обоих указанных дистрибу
5. Сервер проверяет право организатора на скачивание материалов. Существующий
API используется где достаточно; манифест добавляется минимальным расширением.
Токены не записываются в пакет игры и логи.
6. После подготовки основной процесс — источник состояния локального показа.
Серверная синхронизация не задерживает команды. В MVP удалённые команды с
телефона не управляют desktop-показом: параллельные источники исключены.
Возврат сети не должен перезапускать старую серверную команду поверх локальной.
7. Текущие результаты игры загружаются онлайн с отметкой времени; офлайн доступны
6. После подготовки основной процесс — единственный источник состояния локального показа.
Команды пульта компьютера через IPC и телефона через WebSocket обрабатываются
последовательно; состояние с возрастающей ревизией рассылается обоим пультам.
Серверная синхронизация не задерживает команды. Команды сайта не управляют
desktop-показом; возврат интернета не повторяет старые серверные команды.
7. Приложение по явному действию оператора раздаёт мобильный Vue-пульт со встроенного
HTTP-сервера на выбранном IPv4-интерфейсе. Код сопряжения, подтверждение на
компьютере и временная HttpOnly-cookie ограничивают доступ. Сеансы только в памяти;
отключение пульта отзывает их. Рабочая сеть — своя Wi-Fi/LAN или точка доступа:
HTTP не шифрует трафик. Сертификаты и управление через интернет не входят в MVP.
В сетевом API нет произвольного доступа к диску, IPC и токенам сайта.
8. Телефон управляет всеми режимами показа, шагами, таймером, музыкой, громкостью
и перемоткой. Подготовка игры и дисплея остаётся на компьютере. Команды имеют
идентификаторы для дедупликации; после потери связи управление блокируется,
показ продолжается. Переподключение получает снимок состояния без повтора команд.
Vue-компоненты и типы пультов общие внутри screen, различается транспорт.
Общий пакет с сайтом заранее не выделяется.
9. Текущие результаты игры загружаются онлайн с отметкой времени; офлайн доступны
только последние сохранённые данные с явным предупреждением оператору.
Серверная игра, ответы команд и вычисление новых результатов офлайн не работают.
@@ -99,14 +113,15 @@ Linux проверяется на обоих указанных дистрибу
## Порядок работ
1. SCREEN-001: проверить Electron на всех шести вариантах, два дисплея, локальное
медиа и задержки; порог задержки — на M1.
медиа и задержки, техническое подключение телефона по LAN; порог задержки — на M1.
2. SCREEN-002: получить полный и защищённый пакет материалов с сервера.
3. SCREEN-003: реализовать надёжную загрузку и локальное хранение пакетов.
4. SCREEN-004: реализовать локальный проигрыватель и команды, подготовку медиа.
5. SCREEN-005: собрать пульт, план показа и режимы экрана.
6. SCREEN-006: добавить подключение игры и согласование с сервером.
7. SCREEN-007: обработать отключение дисплея, звук, сон и восстановление.
8. SCREEN-008: собрать артефакты для всех шести вариантов и провести приёмку на площадке.
6. SCREEN-009: полный пульт телефона, сопряжение, общее состояние и восстановление связи.
7. SCREEN-006: добавить подключение игры и согласование с сервером.
8. SCREEN-007: обработать отключение дисплея, звук, сон и восстановление.
9. SCREEN-008: собрать артефакты для всех шести вариантов и провести приёмку на площадке.
После SCREEN-001 — решение о продолжении по результатам всей матрицы платформ.
Разработка на одной ОС не заменяет аппаратную проверку остальных ОС и архитектур,
@@ -124,7 +139,7 @@ Linux проверяется на обоих указанных дистрибу
- В SCREEN-001 для каждой тестовой конфигурации зафиксировать ОС, архитектуру,
CPU/RAM, проектор/переходник, аудиовыход, форматы, разрешение и размер медиа.
- Полное управление игрой, локальный Go-сервер/БД, редактирование сценария,
автообновления и дистанционное управление desktop — за пределами MVP.
автообновления и управление desktop через интернет — за пределами MVP.
- Подпись и notarization зависят от наличия Apple Developer; без них не обещать
установку без предупреждений Gatekeeper. Для Windows отдельно зафиксировать наличие сертификата подписи и
возможные предупреждения установки. Учётные данные не хранить в репозитории.
@@ -133,6 +148,10 @@ Linux проверяется на обоих указанных дистрибу
Для нового приложения настроить type-check, lint, lint:css и build; покрывать
тестами нетривиальные переходы, IPC, проверку пакетов и восстановление загрузок.
Для Electron использовать sandbox, contextIsolation и отключённый nodeIntegration.
Мобильный пульт проверять в Safari на iPhone и Chrome на Android. Замеры для
телефона вести отдельно: порог 150 мс относится к пульту компьютера.
Перед изменениями Vue изучить `../evening_detective_frontend/docs/FRONTEND_CODE_STANDARD.md`
и применять подходящие правила. При изменениях соседних репозиториев обязательны
их стандарты и проверки из корневого AGENTS.md; при изменении protobuf — штатная