# Дорожная карта Статус на 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] Discord-анонс нового микса с `@everyone` и ссылкой на регистрацию; - [x] event-specific Discord-роли ответа и статусов Going/Maybe/NotGoing; - обновление анонса, напоминания, публикация составов и результатов; - [x] идемпотентная синхронизация временных Discord team/captain и Tank/Damage/Support ролей; - [x] отдельные member-list группы для команд и зарегистрированных участников; - [x] пятиминутная глобальная сверка и восстановление managed Discord-ролей; - создание и очистка временных командных голосовых каналов; - импорт данных и резервное копирование. ## Идеи после MVP - режим «капитанский драфт» игроков; - ограничения «хочу вместе» и «не ставить вместе»; - сезонный рейтинг сообщества; - прогноз вероятности победы и подсветка причин дисбаланса; - голосование зрителей за карту или MVP; - публичный overlay для стрима; - PWA с push-уведомлением о начале матча; - синхронизация событий с внешним календарём через iCalendar; - библиотека версионируемых регламентов под разные патчи.