[[Категория:Шаблоны]]
Youtrack ID: TBD
| Версия | Описание | Дата добавления требования | Инициатор изменений |
|---|---|---|---|
| 1.0 | Подготовка первоначальных требований по модулю apps/tournaments/ (frontend + backend) |
16.02.2026 | Инициатор заказа |
Сервис: модуль турниров apps/tournaments/.
Технологическая площадка:
Основные пользовательские URL:
/login/register/password-reset/tournaments/tournaments/{id}/teams/players/profile/profile/{username}/kicks/importsБез данного сервиса:
Реализуется веб-система «Турниры»:
UPCOMING → PLANNING → IN_PROGRESS → COMPLETED.Роль пользователя: Гость (неавторизованный)
/register и заполняет поля: email, пароль, UID, роли, платформа./login, вводит email/username и пароль./password-reset → ввод email → ввод кода из письма + новый пароль.Роль пользователя: Игрок (авторизованный, не админ)
/tournaments, смотрит список карточек турниров.Подробности для перехода в /tournaments/{id}.Записаться.Отменить регистрацию, пока турнир в стадии UPCOMING./profile редактирует свои роль/платформу/Twitch.Роль пользователя: Капитан команды
/teams создает команду кнопкой Создать команду.+ Добавить игрока, 👑 Назначить капитаном, ✕ Удалить из команды.Роль пользователя: Администратор (is_staff)
/tournaments: Создать турнир, удалить турнир./tournaments/{id}:
Редактировать (только UPCOMING).Открыть регистрацию (только UPCOMING и если закрыта).Начать планировку (при достаточном числе игроков).Создать сетку (на этапе PLANNING).Создать каналы Huddle (этап IN_PROGRESS).Прошлый этап турнира (откат стадии).Завершить турнир.TeamPlanningBoard:
Автораспределение, Сохранить планировку.Назначить капитаном, Заменить игрока, Удалить из турнира.Назначить команду, Удалить из турнира.TournamentBracket:
Верхняя сетка, Нижняя сетка, Гранд-финал (для double elimination).Посмотреть команду, в IN_PROGRESS также Заменить команду.Записать результат каждого матча./players: управление профилями игроков и тестовыми пользователями./kicks: просмотр и Отменить кик.Роль пользователя: Суперпользователь (is_superuser)
/imports: настройка API-ключа, сезона по умолчанию.Затрагиваемые сервисы:
auth:
players:
teams:
tournaments:
tournament_kicks:
imports:
websocket:
cache:
is_staff).is_superuser).Layout)Кнопки/вкладки:
ThemeToggle — переключает тему оформления.Игроки — видна только is_staff, переход на /players.Турниры — переход на /tournaments.Удаления — видна только is_staff, переход на /kicks.Профиль — переход на /profile.Импорты — видна только is_superuser, переход на /imports.Выйти — делает logout, очищает кэш, переводит на /login.Войти/Регистрация — для неавторизованного пользователя.Дополнительно:
hudle.ru, funpay.com).TournamentParticipantBadge (если пользователь участвует в активном турнире)./login)Поля:
Кнопки:
Войти.Забыли пароль? → /password-reset.Зарегистрироваться → /register.Поведение:
/profile./register)Шаг 1 (форма регистрации):
Зарегистрироваться.Шаг 2 (подтверждение email):
Назад, Подтвердить.Поведение:
/profile./password-reset)Шаг 1:
Отправить код.Шаг 2:
Назад, Изменить пароль.Поведение:
/login./tournaments)Кнопки и действия:
Создать турнир (только админ) — открывает модалку CreateTournamentModal.Подробности → /tournaments/{id}.Удалить турнир (только админ).Записаться (игрок, UPCOMING).
RegisterTournamentModal + RegulationsModal.RegulationsModal:
Открыть регламент турнира (PDF).Записаться активна только после открытия PDF + чекбокса.Отменить регистрацию (игрок, если уже записан).Начать планировку (админ, при достаточном числе игроков).Создать сетку (админ, когда турнир в PLANNING).Попробовать снова.Поля в модалке создания турнира:
/tournaments/{id})← Назад к турнирам.Открыть регламент (если файл есть).Редактировать (админ, UPCOMING) → EditTournamentModal.Открыть регистрацию (админ, UPCOMING, если закрыта).Записаться / Отменить регистрацию (игрок).Начать планировку (админ, UPCOMING, при достаточном числе игроков).Создать сетку (админ, PLANNING, минимум 2 команды).Создать каналы Huddle (админ, IN_PROGRESS).Прошлый этап турнира (админ, IN_PROGRESS или PLANNING).Завершить турнир (админ, IN_PROGRESS или PLANNING).UPCOMING)Генерировать тестовых (40).Зарегистрировать в БД (40).Перейти к профилю.TeamPlanningBoard, для админа в PLANNING)Автораспределение.Сохранить планировку.Перейти к профилю.Назначить капитаном / Снять с капитана.Заменить игрока.Удалить из турнира.Перейти к профилю.Назначить команду (подменю команд с проверкой заполненности).Удалить из турнира.ReplacePlayerModal:
Отмена, Заменить.KickPlayerModal:
Отмена, Удалить из турнира.TournamentBracket)Верхняя сетка.Нижняя сетка.Гранд-финал.Записать результат у матча с двумя командами.Посмотреть команду.Заменить команду (только IN_PROGRESS, админ).RecordMatchResultModal):
+ Добавить игру;× удалить игру;Сохранить прогресс (частичный результат);Записать результат (финализирует матч при валидном счете);Отмена.EditTournamentModal)Отмена, Сохранить изменения./teams)Кнопки:
Создать команду → CreateTeamModal.Сбалансировать команды.+ Добавить игрока.👑 Назначить капитаном.✕ Удалить из команды.Удалить команду (иконка корзины).Модалки:
CreateTeamModal: Отмена, Создать команду.AddPlayerToTeamModal: выбор доступного игрока, Отмена, Добавить игрока./players, только админ)Кнопки:
Создать тестовых (48).Удалить тестовых.Редактировать.Удалить./profile/{username}.Модалка редактирования игрока (EditPlayerModal):
Отмена, Сохранить./profile и /profile/{username})Кнопки:
Редактировать профиль (только свой профиль).Отмена, Сохранить./tournaments/{id}./kicks)Кнопки:
Отменить кик (только админ и только для активного кика).Поведение:
/imports, только superuser)Показать / Скрыть ключ.Сохранить API ключ.Сохранить сезон.Загрузить и обновить.Запустить импорт.Сбросить фильтры.Закрыть.Назад, Вперед.TournamentParticipantBadge)Кнопки/ссылки:
TeamModal.TeamModal.Перейти на сервер турниров (Huddle redirect).Перейти на сервер команды (если URL есть).FROM: noreply@<домен_проекта>.
TO: email пользователя.
SUBJECT: Код подтверждения регистрации.
BODY: 6-значный код, срок действия 15 минут, инструкция по завершению регистрации.
FROM: noreply@<домен_проекта>.
TO: email пользователя.
SUBJECT: Код восстановления пароля.
BODY: 6-значный код, срок действия 15 минут, инструкция по смене пароля.
События Google Analytics
категория: tournaments.
действие: show.
ярлык: tournaments_list_opened.
категория: tournaments.
действие: click.
ярлык: tournament_create_clicked.
категория: tournaments.
действие: click.
ярлык: tournament_register_clicked.
категория: tournaments.
действие: click.
ярлык: tournament_unregister_clicked.
категория: tournaments.
действие: click.
ярлык: tournament_open_registration_clicked.
категория: tournaments.
действие: click.
ярлык: tournament_start_planning_clicked.
категория: tournaments.
действие: click.
ярлык: tournament_generate_bracket_clicked.
категория: tournaments.
действие: click.
ярлык: tournament_finish_clicked.
категория: bracket.
действие: click.
ярлык: match_record_result_opened.
категория: bracket.
действие: click.
ярлык: match_result_saved.
категория: planning.
действие: click.
ярлык: planning_autobalance_clicked.
категория: planning.
действие: click.
ярлык: planning_saved.
категория: teams.
действие: click.
ярлык: team_created.
категория: teams.
действие: click.
ярлык: team_player_added.
категория: players.
действие: click.
ярлык: player_updated.
категория: imports.
действие: click.
ярлык: import_run_clicked.
категория: imports.
действие: error.
ярлык: import_run_failed.
Цели
IN_PROGRESS.Просмотры
Пользовательские параметры и показатели
user_role (guest, player, staff, superuser).tournament_status.bracket_format.registered_players_count.team_count.Класс сервиса: 1 класс.
Обоснование:
Рекомендуемый объем автотестов:
Формат данных
Периодичность
PENDING/RUNNING.Сборка мусора