Files
mixmaker/memory_bank/roadmap.md

6.5 KiB
Raw Blame History

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

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

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

  • закрыть регистрацию и зафиксировать Going-участников;
  • сгенерировать и выбрать вариант баланса;
  • дать Admin обменивать игроков одинаковой роли и заменять их резервными;
  • пересчитывать показатели после каждой ручной правки;
  • подтвердить составы 1/2/2 и капитанов;
  • запускать одиночную Bo3-серию для двух команд или single-elimination турнир для нескольких;
  • связать жеребьёвку, 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 — турнир

  • single-elimination сетка;
  • автоматическое создание следующих пар;
  • экран трансляции/зрителя;
  • история результатов игрового вечера.

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

  • пресеты регламентов;
  • статистика игроков и команд;
  • повторная жеребьёвка с защитой от одинаковых составов;
  • Discord-уведомления;
  • импорт данных и резервное копирование.

Идеи после MVP

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