Files
agents/docs/agent/COMPLETED_TASKS.md
T
2026-10-10 14:32:07 +07:00

21 KiB
Raw Blame History

Завершённые задачи

Архив задач, переведённых в статус DONE.

ED-030 — Индикатор среды сервиса в интерфейсе

  • Статус: DONE
  • Репозитории: evening_detective_server, evening_detective_frontend.
  • Связь: дополнение к ED-029; не требует готовности DNS/HTTPS и Cudy.
  • Цель: пользователь видит, к какой среде подключён интерфейс: PROD или VENUE.
  • Решение: показывать компактную подпись среды в общем интерфейсе рядом с навигацией; получать среду от подключённого бэкенда по фактическому режиму запуска (APP_MODE=venue — площадка, штатный онлайн-режим — production).
  • Критерии: подпись видна на компьютере и телефоне; PROD и VENUE различаются текстом, а не только цветом; среда определяется сервером, а не адресом сайта или настройкой сборки фронтенда; при загрузке или ошибке получения среды интерфейс не показывает неподтверждённый PROD/VENUE.
  • Ограничения: без переключения серверов, изменения игровых правил, показа секретов, новых зависимостей и изменения папки prod; использовать существующую навигацию, API и стандарты обоих репозиториев.
  • Проверка: ручной прогон обоих режимов и недоступного API; Go-тесты; frontend type-check, lint, lint:css и build; при изменении protobuf — штатная генерация обоих клиентов.
  • Результат: поле environment добавлено в существующий публичный GetPermissions API; значение определяется тем же режимом запуска бэкенда, который отключает внешние интеграции площадки. В HeaderMenu добавлены русские подписи «Сервер» (PROD) и «Локальная сеть» (VENUE) через Naive UI; загрузка, неизвестная среда и ошибки не подменяются production. Сведения меню хранятся в общем UI-store; устаревшие ответы не заменяют новые, а права не применяются после смены токена.
  • Проверки: штатные make generate и npm run proto:gen, gofmt, go test ./..., npm run type-check, npm run lint, npm run lint:css, npm run build и git diff --check прошли. Табличный Go-тест проверяет оба режима для гостя, пользователя и администратора. Firefox headless с подменой API проверил PROD/VENUE до и после входа, загрузку, серверную и сетевую ошибки, неизвестное значение; подпись находится внутри viewport при ширине 1440 и 390 px.
  • Ревью: diff проверен по стандартам обоих репозиториев; зависимости не добавлены, generated-файлы получены штатной генерацией. Сборочные изменения dist исключены из diff; папка prod и существующие локальные артефакты бэкенда не менялись.
  • Ограничение проверки: реальные Android/iPhone и развёртывание обновлённой версии не проверялись; для появления индикатора нужно обновить бэкенд и фронтенд. Миграция БД не требуется. Commit и push не выполнялись.

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 указан в отчёте плана.