Files
mixmaker/memory_bank/roadmap.md
lemintare c3624376b0
Some checks failed
CI / backend (push) Has been cancelled
CI / frontend (push) Has been cancelled
CI / compose (push) Has been cancelled
Add Discord guild ID configuration and enhance event announcement options
This commit introduces the `DISCORD_GUILD_ID` environment variable to the configuration files, allowing for better integration with Discord for role synchronization. The event announcement functionality has been updated to include an option for the `@everyone` mention, which can be toggled during event creation. The backend logic has been modified to handle this new option, and corresponding updates have been made to the frontend to allow users to control the mention behavior. Additionally, tests have been added to ensure the correct functionality of these features.
2026-07-19 11:34:11 +03:00

7.0 KiB
Raw Blame History

Дорожная карта

Статус на 19 июля 2026: полный versioned production-пайплайн между событием, составами, live-серией и турнирной сеткой реализован. Backend, admin roster editor, live/spectator UI, SSE и проверки контракта связаны в единый сценарий.

Завершённый контрольный рубеж — полный пайплайн скрима

  • закрыть регистрацию и зафиксировать Going-участников;
  • сгенерировать и выбрать вариант баланса;
  • дать Admin обменивать игроков одинаковой роли и заменять их резервными;
  • пересчитывать показатели после каждой ручной правки;
  • подтвердить составы 1/2/2 и капитанов;
  • редактировать произвольный граф Bo3 через Team / Winner / Loser и запускать все готовые пары;
  • связать жеребьёвку, map draft, hero draft и результаты карт единым versioned FSM;
  • блокировать обычное изменение составов после старта;
  • разрешить аудируемую аварийную замену Admin;
  • синхронизировать admin/live/spectator экраны через SSE;
  • покрыть переходы и конфликты версий unit-, integration- и UI-тестами.

Этап 0 — уточнение продукта

  • согласовать способ оценки игроков и рейтинг по ролям;
  • определить размеры команд и число одновременно создаваемых команд;
  • выбрать первый формат турнирной сетки;
  • подтвердить редактируемые части регламента;
  • подготовить wireframes ключевых экранов.

Этап 1 — фундамент

  • создать Go backend и React frontend;
  • подготовить отдельный Compose для локальной разработки;
  • подготовить production Compose для Coolify без пользовательских сетей;
  • добавить multi-stage Dockerfile для frontend и backend;
  • настроить PostgreSQL в составе production-стека, persistent volume и миграции;
  • добавить healthcheck и graceful shutdown сервисов;
  • описать переменные Coolify и настройку внешних резервных копий БД;
  • реализовать Discord OAuth и серверные сессии;
  • добавить роли Admin/Player и безопасное начальное назначение Admin по Discord ID;
  • зафиксировать OpenAPI-контракт;
  • реализовать базовую навигацию и дизайн-систему;
  • добавить переключение RU/EN и локализовать все пользовательские строки;
  • добавить автоматические проверки и тесты.

Этап 2 — игроки и балансировка

  • самостоятельное заполнение профиля и рейтингов по ролям;
  • выбор предпочитаемых ролей, до трёх желаемых союзников и до трёх avoid-игроков;
  • календарь будущих миксов;
  • статусы участия Going / Maybe / NotGoing;
  • админку для событий, игроков и регистраций;
  • изменение Admin статуса участия за другого игрока с аудитом;
  • подтверждение списка участников Admin;
  • назначение доступных ролей;
  • генерация нескольких вариантов команд;
  • оценка качества баланса;
  • мягкий учёт ролевых, командных и avoid-предпочтений в целевой функции;
  • ручная перестановка игроков с пересчётом показателей.
  • назначение и переназначение капитана каждой команды.

Этап 3 — проведение серии

  • создание пары команд;
  • серверная жеребьёвка с прозрачным результатом;
  • драфт карт по выбранному ruleset;
  • бан героев с проверкой ролей и истории серии;
  • фиксация победителя или ничьей каждой карты;
  • автоматический счёт серии и определение победителя;
  • исправление ошибочного результата с аудитом;
  • синхронизация клиентов в реальном времени.

Этап 4 — турнир

  • versioned drag-and-drop редактор произвольной сетки;
  • автоматическое создание следующих пар по Winner/Loser-зависимостям;
  • экран трансляции/зрителя;
  • история результатов игрового вечера.

Этап 5 — удобство сообщества

  • пресеты регламентов;
  • статистика игроков и команд;
  • повторная жеребьёвка с защитой от одинаковых составов;
  • Discord-анонс нового микса с @everyone и ссылкой на регистрацию;
  • обновление анонса, напоминания, публикация составов и результатов;
  • идемпотентная синхронизация временных Discord team/captain и Tank/Damage/Support ролей;
  • создание и очистка временных командных голосовых каналов;
  • импорт данных и резервное копирование.

Идеи после MVP

  • режим «капитанский драфт» игроков;
  • ограничения «хочу вместе» и «не ставить вместе»;
  • сезонный рейтинг сообщества;
  • прогноз вероятности победы и подсветка причин дисбаланса;
  • голосование зрителей за карту или MVP;
  • публичный overlay для стрима;
  • PWA с push-уведомлением о начале матча;
  • синхронизация событий с внешним календарём через iCalendar;
  • библиотека версионируемых регламентов под разные патчи.