up
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# Завершённые задачи приложения площадки
|
||||
|
||||
## SCREEN-002 — Собрать описание пакета через существующий API
|
||||
|
||||
- Статус: `DONE`.
|
||||
- Дата: 2026-10-17.
|
||||
- Репозиторий: только screen; бэкенд, frontend и protobuf не изменены.
|
||||
- Уточнение владельца: использовать текущий API без изменений бэкенда;
|
||||
SCREEN-002 разрешена до завершения аппаратной приёмки SCREEN-001.
|
||||
- Результат: `electron/screen-package.ts` получает игру, план и музыку через
|
||||
существующие GET endpoints и собирает ScreenPackage версии формата 1.
|
||||
Пакет содержит обложку, фон (с подстановкой обложки), вступительное аудио,
|
||||
заключительное видео, шаги и связанные плейлисты со всеми треками. Ссылки
|
||||
дедуплицируются, треки упорядочены по позиции/ID, посторонняя библиотека,
|
||||
данные участников и живые команды исключены.
|
||||
- Авторизация: существующий JWT используется только для API указанного сервера,
|
||||
не сохраняется в результате; редиректы API запрещены. Поддерживаются отмена,
|
||||
таймаут и безопасные ошибки без содержимого серверных ответов. Адреса с
|
||||
логином/паролем и ссылки с секретными параметрами отклоняются.
|
||||
- Версия: metadataVersion — детерминированный SHA-256 нормализованных метаданных.
|
||||
Идентификаторы ресурсов — SHA-256 URL. Это не контрольные суммы файлов и не
|
||||
подтверждение готовности пакета. Размеры, хеши байтов и итоговая версия —
|
||||
SCREEN-003. Сервер не предоставляет атомарного снимка и хешей ресурсов.
|
||||
- Проверки: `npm run type-check`, `npm run lint`, `npm run lint:css`, `npm test`
|
||||
(12 тестов, включая 8 новых), `npm run build`, `git diff --check` — PASS.
|
||||
- Ограничения: проверено на фикстурах текущего JSON-контракта, живой сервер и
|
||||
реальные игровые файлы не проверялись. Загрузки файлов и новых кнопок нет;
|
||||
программный контракт подключается к интерфейсу при SCREEN-006. Существующие
|
||||
права доступа и публичная выдача файлов не менялись. Установочные архивы
|
||||
не пересобирались; аппаратная приёмка SCREEN-001 остаётся открытой.
|
||||
- Следующий шаг: SCREEN-003 — скачать и проверить файлы, сформировать итоговую
|
||||
версию и атомарно активировать готовый локальный пакет.
|
||||
|
||||
## SCREEN-003 — Скачивать и проверять материалы на диске
|
||||
|
||||
- Статус: `DONE`.
|
||||
- Дата: 2026-10-17.
|
||||
- Репозиторий: только screen; бэкенд, frontend и protobuf не изменены.
|
||||
- Результат: PackageStore в основном процессе; потоковая последовательная загрузка,
|
||||
отмена, прогресс, контроль свободного места с резервом 64 МиБ, SHA-256/размер
|
||||
при записи и повторная проверка с диска. При обрыве повторяется целый текущий
|
||||
файл (выбор владельца); максимум три попытки, паузы 1/3 секунды, таймаут 30 секунд.
|
||||
- Хранение: userData/packages, отдельные каталоги игры и версий, временная загрузка,
|
||||
синхронизация файлов, атомарная замена указателя текущей версии. Неудачное
|
||||
обновление сохраняет предыдущую готовую копию; отмена удаляет временные данные.
|
||||
При перезапуске проверяются все файлы и очищаются оставшиеся временные/старые
|
||||
версии. Повреждённый текущий пакет не становится готовым и доступен для удаления
|
||||
либо восстановления повторной загрузкой. Приложение запускается одним экземпляром.
|
||||
- Доступ: локальная выдача только готовых файлов по ключу игры и ID ресурса,
|
||||
MIME/Range/no-store; произвольные пути и симлинки отклоняются. Скачивание медиа
|
||||
без JWT/cookies, до пяти проверенных редиректов, запрет HTTPS→HTTP и URL с секретами.
|
||||
Учтены MIME audio/wave и application/ogg существующего бэкенда.
|
||||
- Проверки: `npm run type-check`, `npm run lint`, `npm run lint:css`, `npm test`
|
||||
(26 тестов, 14 новых), сборка в составе `npm run smoke`, `git diff --check` — PASS.
|
||||
Протестированы обрывы/повторы, отмена до активации, нехватка места до и во время
|
||||
загрузки, таймаут, повреждение при проверке/после перезапуска, восстановление,
|
||||
следы сбоя, редиректы, ошибочные ответы, симлинки и запрет параллельных изменений.
|
||||
- Офлайн-проверка: настоящий HTTP-сервер выключен после загрузки, новое хранилище
|
||||
восстановило и прочитало пакет. GUI smoke Electron 42.11.15: повторное открытие
|
||||
хранилища, WAV через локальный протокол, Range 206/44 байта, длительность 60 секунд,
|
||||
воспроизведение — PASS; тестовые --no-sandbox --mute-audio --disable-gpu.
|
||||
- Ограничения: проверено на текущем Linux x64; macOS/Windows и аппаратная матрица
|
||||
SCREEN-001 остаются открытыми. GUI использовал синтетический второй дисплей.
|
||||
Рабочий сервер и реальные игровые материалы не проверялись; сервер не выдаёт
|
||||
эталонных хешей и атомарного снимка. Установочные архивы не пересобирались.
|
||||
UI загрузки/вход остаётся в SCREEN-006; хранилище предоставляет программный API.
|
||||
- Следующий шаг: SCREEN-004 — подключить подготовленные локальные ресурсы к
|
||||
проигрывателю и игровым командам без ожидания сети.
|
||||
Reference in New Issue
Block a user