diff --git a/docs/agent/COMPLETED_TASKS.md b/docs/agent/COMPLETED_TASKS.md index 02b4e9c..2de66f1 100644 --- a/docs/agent/COMPLETED_TASKS.md +++ b/docs/agent/COMPLETED_TASKS.md @@ -2,6 +2,19 @@ Архив задач, переведённых в статус `DONE`. +### ED-033 — Скачать материалы игры для печати + +- Статус: `DONE` +- Репозитории: `evening_detective_server`, `evening_detective_frontend` +- Цель: кнопка в настройках игры скачивает ZIP с двумя папками «Для игрока» и «Для ведущего». +- Решение: игроку — правила по формату игры, введение, вопросы с полями ответа, оригиналы улик и два черновика («Список пидарасов», «Черновик расследования»); ведущему — ответы и развязка, QR активных команд, пустая таблица выдачи улик и список внешних материалов для ручного скачивания. +- Критерии: кириллица и A4; таблица разбивается по строкам и столбцам с повторением подписей; отменённые команды исключены; без команд QR пропускается и остаются пустые строки таблицы; оригиналы улик сохраняются и не дублируются; доступ проверяется сервером; приватный архив не кэшируется. +- Ограничения: без карты и описаний точек, новых зависимостей и миграций; используются существующие правила, PDF, QR, шрифт, хранилище и бинарный клиент; commit/push не выполнялись. +- Результат: добавлен RPC `DownloadGamePrintMaterials` / GET `/api/games/{ID}/print-materials`, подключён сервис сборки и кнопка с загрузкой и обработкой ошибок. Общий генератор QR использует тот же список активных команд, что таблица выдачи. Оригиналы PDF, изображений и аудио сохраняются без преобразования. Ошибки файлов, отмена и лимит комплекта 256 МБ обрабатываются; неподдерживаемые шрифтом символы возвращают явную ошибку вместо повреждённого PDF. +- Проверка: `make generate` и `npm run proto:gen`; `go test ./...`, `npm run type-check`, `npm run lint`, `npm run lint:css`, `npm run build`, `git diff --check` — успешно. Финальный прогон Go-тестов выполнен с разрешённым доступом к системному кэшу после ошибки read-only в песочнице. Ревью всего diff по Go- и frontend-стандартам выполнено, нарушений в изменённых участках не осталось. +- Дополнительная проверка: тесты состава и двух папок ZIP, сохранности оригиналов, дедупликации, отсутствия секретов в папке игрока, формата правил, пустого списка и отменённых команд, доступа ролей, заголовков скачивания, ошибок, отмены и превышения размера. Текст PDF проверен через `pdftotext`; правила, вопросы и таблица на 40 команд / 17 улик визуально проверены после рендера. +- Не проверено: браузерный flow на живом сервере, физическая печать и интеграционные тесты PostgreSQL (`TEST_DATABASE_URL` не задан). Тестовые PDF сохранены только в `/tmp`, изменения сборочных артефактов фронтенда убраны из diff; существовавшее изменение backend-бинарника не затронуто. + ### ED-032 — Название команды перед стартом игры в интерфейсе игрока - Статус: `DONE` diff --git a/prod b/prod index 70db07f..df0d2dd 160000 --- a/prod +++ b/prod @@ -1 +1 @@ -Subproject commit 70db07f6e0d60076b08523923d9424b2ea409195 +Subproject commit df0d2dd4759d3e860eb3fc7ab1f7ffdeb10a16fe