# ТЗ: Evrone Tournament — турнирная платформа

Демонстрационная версия документа · категория «Ивенты» · №30

> Это демонстрационное техническое задание: оно показывает структуру и глубину
> документа, который передаётся вместе с прототипом. Боевое ТЗ по этому солюшену
> готовится и заменит этот файл.

## 1. Суть решения

Сетки single/double elimination, лиги, результаты, брекеты в реальном времени.

Турнирные сетки (single/double elimination, круговая система, швейцарская), лиги и сезоны, регистрация команд и участников, расписание матчей, внесение результатов и автоматический подсчёт таблиц, профили игроков со статистикой, брекеты в реальном времени для зрителей.

## 2. Технологический стек

| Слой | Решение |
|---|---|
| Backend | Ruby on Rails 8, PostgreSQL |
| Frontend | Hotwire (Turbo + Stimulus), Tailwind CSS |
| Фоновые задачи | Solid Queue |
| Файлы | Active Storage, S3-совместимое хранилище |
| Деплой | Docker, Kamal, production + staging |

## 3. Роли

- Игрок
- Капитан команды
- Организатор
- Судья

## 4. Модель данных

### 4.1. Tournament

```
format: enum # single elimination, double elimination, круговая, швейцарская
state: enum
season_id: references, nullable
```

### 4.2. Match

```
tournament_id: references
round: integer
participants: jsonb
result: jsonb
state: enum
```

### 4.3. Participant

```
kind: enum # игрок, команда
profile: jsonb
stats: jsonb
```

## 5. Ключевые сценарии

1. Организатор создаёт турнир, выбирает формат и открывает регистрацию
2. Сетка строится автоматически, расписание матчей публикуется
3. Судья вносит результат, таблицы и сетка пересчитываются
4. Зрители смотрят брекет в реальном времени

## 6. Интеграции

- Уведомления участникам
- Публичный виджет сетки
- Импорт составов команд

## 7. Нефункциональные требования

- Серверный рендеринг, работоспособность ключевых страниц без JavaScript
- Мобильная адаптивность обязательна
- Роли и права проверяются на уровне сервера, а не интерфейса
- Логирование действий пользователей по значимым операциям
- Покрытие тестами моделей и ключевых сценариев
- Развёртывание одной командой, окружения production и staging

## 8. Состав MVP

Один турнир — сетка, результаты, таблица.

## 9. Критерии приёмки

1. Все сценарии из раздела 5 проходят end-to-end на тестовом стенде
2. Роли из раздела 3 видят только то, что им положено
3. Интеграции из раздела 6 работают через слой адаптеров и переключаются конфигурацией
4. Прототип разворачивается из репозитория одной командой
5. Документация по запуску и переменным окружения лежит в README
