# Завершённые задачи Архив задач, переведённых в статус `DONE`. ### ED-028 — Роль разработчика и общий таскменеджер - Статус: `DONE` - Репозитории: `evening_detective_server`, `evening_detective_frontend` - Результат: добавлены роль `developer`, выдача и отзыв роли на странице пользователей, право `tasks_page` и общая доска `/tasks` для разработчиков и администратора. Реализованы четыре статуса, создание и редактирование, назначение разработчика, необязательная календарная дата завершения, фильтр по ответственному, перенос карточек и удаление с подтверждением. PostgreSQL хранит задачи; версии защищают от конкурентной перезаписи, форма сохраняет черновик при конфликте. При отзыве роли прежнее назначение сохраняется; при удалении пользователя задача сохраняется без ссылок на него. - Стандарты: ручное ревью всего diff по `GO_STANDARD.md` и `FRONTEND_CODE_STANDARD.md` выполнено; новые зависимости не добавлены; API сгенерирован штатными командами; сборочные изменения `dist` исключены из diff. - Проверки: `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 test ./internal/repos/tasks_repo -count=1 -v` с отдельной `TEST_DATABASE_URL` пройден: ограничения БД, назначения, смена статусов, конкурентные записи, удаление пользователей и миграция Up/Down. Шесть тестов дедлайна пройдены в `Asia/Barnaul` и `America/Los_Angeles`. - Проверка браузера: Firefox headless с подменой API — создание, назначение ответственного и даты, редактирование, сохранение черновика при конфликте, перетаскивание, подтверждение удаления и отказ пользователю без роли; мобильная ширина 380 px, горизонтальная прокрутка только внутри доски. Полный сценарий с работающим production-сервисом не запускался. - Известное ограничение проверки: дополнительный полный `go test ./...` с `TEST_DATABASE_URL` обнаружил существующие ошибки игровых фикстур в `answer_service`, `game_service`, `gameplay_service`, `participation_service` (временные таблицы не соответствуют текущей схеме). Эти тесты не менялись; стандартный полный прогон и новые интеграционные тесты проходят. - Запуск: применить миграцию `20261007130000_create_developer_tasks.sql` штатным процессом миграций и выдать пользователю роль на странице `/users`; после нового входа доступна `/tasks`. Production-миграции, commit и push не выполнялись. ### ED-020 — Музыка из плейлиста на экранах игры - Статус: `DONE` - Приоритет: `P1` - Репозитории: `evening_detective_server`, `evening_detective_frontend` - Результат: добавлены общие MP3-плейлисты и треки, назначение default-плейлиста сценарию и выбор музыки для игры. Состояние музыки хранится на уровне игры и синхронизируется через существующий polling экранов; добавлены play/pause/stop, выбор трека, громкость, loop, автопереход и единственный экран со звуком. Добавлены UI управления во вкладке «Экраны» и выбор плейлиста в редакторе сценария. - Проверки: `GOCACHE=/tmp/evening-detective-go-cache go test ./...`, `npm run type-check`, `npm run lint`, `npm run lint:css`, `npm run build` и `git diff --check` пройдены; protobuf сгенерирован штатными командами. - Ручная проверка: не выполнялась в среде агента; требуется проверить загрузку MP3 от ролей, воспроизведение на двух экранах, автопереход, loop и переподключение. ### ED-027 — Упростить экран игры организатора - Статус: `DONE` - Приоритет: `P1` - Репозиторий: `evening_detective_frontend` - Результат: админский экран игры разделён на вкладки «Игра», «Команды», «Экраны» и «Карта». Вкладка «Игра» открывается по умолчанию и содержит статус, таймер, управление состоянием и служебные действия; выбранная вкладка хранится в query-параметре `tab` и восстанавливается после обновления. Существующие панели, API и игровая логика сохранены. - Проверки: `npm run type-check`, `npm run lint`, `npm run lint:css`, `git diff --check` пройдены. - Ручная проверка: не выполнялась в среде агента; требуется проверить переключение вкладок и основные действия на реальном экране организатора, включая узкую ширину. ### ED-015 — План экранов игры для организатора - Статус: `DONE` - Приоритет: `P1` - Репозитории: `evening_detective_server`, `evening_detective_frontend` - Результат: добавлен необязательный план экранов игры с линейными шагами, текущим индексом и параметрами текста и таймера. Организатор может создать, изменить, удалить и переставить шаги, а также перейти на любой шаг; состояние применяется ко всем подключённым экранам и повторно применяется при привязке нового экрана. Добавлен текстовый режим экрана. Игры без плана продолжают работать через существующее ручное управление; синхронизация использует текущий polling. - Проверки: целевые backend-пакеты и `screen_plan_service` проходят; frontend `npm run type-check`, `npm run lint`, `npm run lint:css`, `npm run build` и `git diff --check` пройдены; protobuf сгенерирован штатными командами. Полный backend `go test ./...` дополнительно упирается в sandbox-запрет `listen tcp` в gateway-тестах. - Ручная проверка: не выполнялась в среде агента; требуется проверить реальными экранами создание плана, переходы, синхронизацию нескольких дисплеев и переподключение. ### ED-016 — Привязка экрана к игре через сканер - Статус: `DONE` - Репозитории: `evening_detective_server`, `evening_detective_frontend` - Результат: на странице игры добавлено сканирование QR-кода экрана с немедленной привязкой к текущей игре; список экранов показывает онлайн/оффлайн-состояние и предупреждает о недоступности более минуты. Сервер разрешает управление организатору и администратору, корректно перепривязывает экран и переносит текущее состояние целевой игры. - Проверки: `GOCACHE=/tmp/evening-detective-go-cache go test ./...`, `npm run type-check`, `npm run lint`, `npm run lint:css`, `git diff --check` пройдены. ### ED-026 — Количество игроков при создании команды из панели игры - Статус: `DONE` - Приоритет: `P1` - Репозитории: `evening_detective_server`, `evening_detective_frontend` - Результат: в форме создания команды на `GamePage` добавлено количество игроков со значением `1` по умолчанию и диапазоном `1–8`. Значение передаётся через `AddTeam` и сохраняется в существующем `teams.participants_count`; старые flow без значения сохранены. - Проверки: `go test ./...`, `npm run type-check`, `npm run lint`, `npm run lint:css`, `npm run build` пройдены; protobuf сгенерирован штатными командами; `git diff --check` пройден. ### ED-023 — Оценка сложности игры в отзыве и каталоге - Статус: `DONE` - Приоритет: `P1` - Репозитории: `evening_detective_server`, `evening_detective_frontend` - Результат: в отзыв добавлена обязательная оценка сложности `1–3`; значение хранится в существующей таблице отзывов и передаётся через protobuf. Средняя сложность считается по одобренным отзывам завершённых игр сценария и отображается как «лёгкая», «средняя» или «тяжёлая» в каталоге и карточке сценария. Старые отзывы поддержаны значением по умолчанию `2`; рейтинг `1–5`, модерация и запрет повторного отзыва сохранены. - Проверки: `go test ./...` пройден с кэшем в `/tmp`; `npm run type-check`, `npm run lint`, `npm run lint:css` пройдены; protobuf сгенерирован штатными командами; `git diff --check` пройден. ### ED-012 — Строгий стандарт написания фронтенда - Статус: `DONE` - Репозиторий: `evening_detective_frontend` - Результат: создан обязательный стандарт `docs/FRONTEND_CODE_STANDARD.md` как единственный источник правил структуры, компонентов, composables, функций, типов, API, состояния, стилей, форм, доступности и проверок. Фронтендный `AGENTS.md` оставлен указателем и операционными правилами, а корневой `AGENTS.md` содержит условную ссылку для задач фронтенда. - Проверки: проверены ссылки и однозначное размещение типовых видов кода; `git diff --check` пройден; продуктовый код и зависимости не менялись. ### ED-025 — Доступ к БД только через repository - Статус: `DONE` - Репозиторий: `evening_detective_server` - Результат: прямой доступ к БД из application flow убран; проверка доступности БД вынесена в `health_repo`, `screen_sessions_repo` — в `screen_service`, а `game_map_repo` — в `map_service`. Handlers используют сервисные модели и больше не импортируют эти repositories. - Проверки: целевые backend-пакеты компилируются; `internal/app` проходит тесты; `git diff --check` пройден. Полные gateway-тесты в sandbox заблокированы запретом на `listen` TCP-порта. ### ED-011 — Строгий стандарт написания Go-бэкенда - Статус: `DONE` - Репозиторий: `evening_detective_server` - Результат: добавлен обязательный стандарт `docs/GO_STANDARD.md` как единственный источник правил Go-кода: слои, handlers, services, repositories, modules с обязательными интерфейсами, mapping, protobuf, ошибки, SQL, транзакции, тесты и именование. В backend `AGENTS.md` оставлены только ссылка на стандарт, проектные ограничения и операционные команды. - Проверки: `go test ./...` пройден; `git diff --check` пройден. ### ED-019 — Добавить кнопку экрана в меню организатора - Статус: `DONE` - Репозиторий: `evening_detective_frontend` - Результат: в `HeaderMenu.vue` добавлен пункт `Экран` для пользователей с правом `games_page`; пункт ведёт на существующий маршрут `/screen`. - Проверки: `npm run type-check`, `npm run lint`, `npm run lint:css` пройдены. ### ED-001 — Исправить `actions_count` в `GetGameAnswers` - Статус: `DONE` - Репозиторий: `evening_detective_server` - Результат: `GetGameAnswers` теперь заполняет `Team.ActionsCount` через `GetActionsCountByTeamIDs`; контракт API не изменён. - Проверки: `go test ./...` пройден; lifecycle-тест проверяет количество ходов в ответе для панели оценки. ### ED-011 — Считать сообщения без тригерной фразы продолжением диалога - Статус: `DONE` - Репозиторий: корневые правила агента - Результат: удалено обязательное ожидание тригерной фразы перед продолжением диалога. - Проверки: проверены `AGENTS.md` и `docs/agent/README.md`; продуктовый код не затрагивался. ### ED-005 — Исправить сброс настроек игры поллингом - Статус: `DONE` - Репозиторий: `evening_detective_frontend` - Результат: настройки редактируются через локальный черновик и не перезаписываются поллингом. - Проверки: type-check, lint и lint:css пройдены. ### ED-006 — Добавить страницу итогов игры - Статус: `DONE` - Репозиторий: `evening_detective_frontend` - Результат: добавлена страница результатов, обработка ошибок и входы из админки и списка игр. - Проверки: type-check, lint, lint:css и build пройдены. ### ED-007 — Добавить пьедестал победителя на странице итогов - Статус: `DONE` - Репозиторий: `evening_detective_frontend` - Результат: добавлены баннер победителя, медали мест 1–3 и обработка ничьих. - Проверки: type-check, lint, lint:css и build пройдены. ### ED-008 — Добавить создание игры из списка игр - Статус: `DONE` - Репозиторий: `evening_detective_frontend` - Результат: добавлено создание игры из каталога сценариев, выбор даты и времени, отображение даты и исправлена передача RFC 3339 `startAt`. - Проверки: type-check, lint и lint:css пройдены; build указан в отчёте плана.