Files
mixmaker/memory_bank/active_context.md
2026-07-18 23:32:11 +03:00

5.1 KiB
Raw Blame History

Активный контекст

Текущее состояние

Проект начинается с нуля. Сформированы исходный контекст, предметная модель, архитектурное направление и предварительная дорожная карта.

Подтверждённые требования

  • сообщество из 20+ игроков;
  • backend на Go с Clean Architecture;
  • современный frontend на фреймворке;
  • Discord OAuth и самостоятельное заполнение игроком рейтингов Tank, Damage и Support;
  • календарь запланированных миксов со статусами Going / Maybe / NotGoing;
  • административная панель управления событиями, игроками и регистрациями;
  • возможность Admin отметить участие за другого игрока;
  • автоматическая балансировка полных команд 1 Tank / 2 Damage / 2 Support;
  • резерв для участников, не вошедших в полные команды;
  • назначение Admin капитана каждой сформированной команды;
  • жеребьёвка на сайте;
  • последовательные баны карт и героев;
  • серии Bo3;
  • фиксация исхода каждой карты, счёта серии и итогового победителя;
  • турнирная сетка;
  • production-развёртывание единым Docker Compose resource в Coolify;
  • PostgreSQL в том же Compose-стеке с persistent volume;
  • мобильный и десктопный интерфейс.

Исходный регламент

  • основной Bo3: Control → Hybrid/Escort → Control;
  • альтернативный Bo3: Control → Push → Escort;
  • первый бан карт определяется жеребьёвкой;
  • карты банятся по очереди до одной оставшейся;
  • тайбрейкер Control не повторяет уже сыгранную Control-карту;
  • перед каждой картой команды делают по два бана героев в порядке A → B → A → B;
  • два бана одной команды должны относиться к разным ролям;
  • команда не повторяет собственный бан героя в пределах серии;
  • повторить героя, которого ранее банил соперник, разрешено;
  • первой героев банит команда, проигравшая начальный жребий.

Предлагаемый стек

  • backend: Go, PostgreSQL, REST, WebSocket/SSE;
  • frontend: React, TypeScript, Vite, TanStack Query/Router, Tailwind CSS, shadcn/ui;
  • контракт: OpenAPI;
  • локальная инфраструктура: Docker Compose;
  • production: Coolify + Docker Compose без пользовательских сетей.

Принятые решения для MVP

  • игрок входит через Discord;
  • игрок самостоятельно указывает рейтинг 1100 для каждой роли;
  • балансировщик автоматически назначает роли и собирает команды 1/2/2;
  • участники сверх полного состава остаются в резерве;
  • первая турнирная сетка — single elimination;
  • игрок отмечается на микс через календарь;
  • Admin может изменить RSVP за игрока, а действие сохраняет автора;
  • капитан назначается отдельно для каждой команды и должен входить в её состав;
  • исход карты задаётся как победа одной из команд или ничья;
  • сервер автоматически пересчитывает счёт Bo3 и победителя серии;
  • frontend, API и PostgreSQL разворачиваются одним Compose-стеком;
  • Coolify управляет сетью и публичным маршрутом, PostgreSQL хранит данные в named volume.

Ближайший следующий шаг

Создать full-stack каркас и первый вертикальный сценарий: Discord-вход → профиль с рейтингами → календарь → отметка участия → админка регистраций → список участников события.

Открытое продуктовое решение, которое не блокирует каркас: как выбирается Hybrid/Escort для второй карты — заранее организатором, случайно или отдельным действием команд.