first commit
This commit is contained in:
68
memory_bank/active_context.md
Normal file
68
memory_bank/active_context.md
Normal file
@@ -0,0 +1,68 @@
|
||||
# Активный контекст
|
||||
|
||||
## Текущее состояние
|
||||
|
||||
Проект начинается с нуля. Сформированы исходный контекст, предметная модель, архитектурное направление и предварительная дорожная карта.
|
||||
|
||||
## Подтверждённые требования
|
||||
|
||||
- сообщество из 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;
|
||||
- игрок самостоятельно указывает рейтинг 1–100 для каждой роли;
|
||||
- балансировщик автоматически назначает роли и собирает команды 1/2/2;
|
||||
- участники сверх полного состава остаются в резерве;
|
||||
- первая турнирная сетка — single elimination;
|
||||
- игрок отмечается на микс через календарь;
|
||||
- Admin может изменить RSVP за игрока, а действие сохраняет автора;
|
||||
- капитан назначается отдельно для каждой команды и должен входить в её состав;
|
||||
- исход карты задаётся как победа одной из команд или ничья;
|
||||
- сервер автоматически пересчитывает счёт Bo3 и победителя серии;
|
||||
- frontend, API и PostgreSQL разворачиваются одним Compose-стеком;
|
||||
- Coolify управляет сетью и публичным маршрутом, PostgreSQL хранит данные в named volume.
|
||||
|
||||
## Ближайший следующий шаг
|
||||
|
||||
Создать full-stack каркас и первый вертикальный сценарий: Discord-вход → профиль с рейтингами → календарь → отметка участия → админка регистраций → список участников события.
|
||||
|
||||
Открытое продуктовое решение, которое не блокирует каркас: как выбирается Hybrid/Escort для второй карты — заранее организатором, случайно или отдельным действием команд.
|
||||
Reference in New Issue
Block a user