Files
mixmaker/memory_bank/roadmap.md
lemintare fa4edc0df5
Some checks failed
CI / backend (push) Has been cancelled
CI / frontend (push) Has been cancelled
CI / compose (push) Has been cancelled
Add player profiles and community settings
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-19 21:43:48 +03:00

106 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Дорожная карта
Статус на 19 июля 2026: полный versioned production-пайплайн между событием, составами, live-серией и турнирной сеткой реализован. Backend, admin roster editor, live/spectator UI, SSE и проверки контракта связаны в единый сценарий.
## Завершённый контрольный рубеж — полный пайплайн скрима
- [x] закрыть регистрацию и зафиксировать Going-участников;
- [x] сгенерировать и выбрать вариант баланса;
- [x] дать Admin обменивать игроков одинаковой роли и заменять их резервными;
- [x] пересчитывать показатели после каждой ручной правки;
- [x] подтвердить составы 1/2/2 и капитанов;
- [x] редактировать произвольный граф Bo3 через Team / Winner / Loser и запускать все готовые пары;
- [x] связать жеребьёвку, map draft, hero draft и результаты карт единым versioned FSM;
- [x] блокировать обычное изменение составов после старта;
- [x] разрешить аудируемую аварийную замену Admin;
- [x] синхронизировать admin/live/spectator экраны через SSE;
- [x] показывать сохранённые составы на публичной странице события после балансировки;
- [x] уведомлять участника звуком, когда сервер передаёт ход его команде;
- [x] покрыть переходы и конфликты версий 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 — удобство сообщества
- пресеты регламентов;
- [x] публичные профили игроков, статистика Bo3/карт и история последних матчей;
- статистика команд;
- повторная жеребьёвка с защитой от одинаковых составов;
- [x] Discord-анонс нового микса с `@everyone` и ссылкой на регистрацию;
- [x] event-specific Discord-роли ответа и статусов Going/Maybe/NotGoing;
- обновление анонса, напоминания, публикация составов и результатов;
- [x] идемпотентная синхронизация временных Discord team/captain и Tank/Damage/Support ролей;
- [x] отдельные member-list группы для команд и зарегистрированных участников;
- [x] пятиминутная глобальная сверка и восстановление managed Discord-ролей;
- [x] уникальные nickname, BattleTag и настраиваемая Admin ссылка на Discord в FAQ;
- создание и очистка временных командных голосовых каналов;
- импорт данных и резервное копирование.
## Идеи после MVP
- режим «капитанский драфт» игроков;
- ограничения «хочу вместе» и «не ставить вместе»;
- сезонный рейтинг сообщества;
- прогноз вероятности победы и подсветка причин дисбаланса;
- голосование зрителей за карту или MVP;
- публичный overlay для стрима;
- PWA с push-уведомлением о начале матча;
- синхронизация событий с внешним календарём через iCalendar;
- библиотека версионируемых регламентов под разные патчи.