Перейти к содержимому

Админка — права, модерация, метрики

Вход тот же, что везде — телефон и код. Дальше AdminGate: аккаунт без adminRole видит экран «Нет доступа» и кнопку «Выйти».

Первый супер-админ бутстрапится из PLATFORM_ADMIN_PHONES на бэкенде и дальше раздаёт роли остальным. Подробности гейта — в аутентификации и ролях.

Навигация фильтруется дважды: компонентом RequirePermission и фильтром в Layout. Источник истины всё равно серверный — интерфейс лишь прячет недоступное.

Раздел Право
Дашборд metrics.view
Организаторы organizers.manage
Турниры content.manage
Игроки moderation
Рейтинг rating_config.manage
Сезоны seasons.manage
Города cities.manage
Слайдеры content.manage
Тиры content.manage
Админы admins.manage
Рассылка push.send

Матрица «роль → права» — в apps/server/src/auth/permissions.ts, она же приведена в статье про аутентификацию.

Метод и путь Что делает
GET /admin/users поиск
PATCH /admin/users/{id} бан и разбан guarded-апдейтом
POST /admin/users/{id}/merge слияние дублей

Слияние идёт в одной интерактивной транзакции: регистрации дубля переезжают на основной аккаунт — кроме турниров, где у основного уже есть своя запись. Иначе нарушился бы уникальный индекс (tournamentId, userId).

GET /admin/metrics считает:

  • новых игроков за 30 дней;
  • активных игроков за 30 дней;
  • retention — долю сыгравших два турнира и больше;
  • завершённые турниры за 30 дней;
  • разбивку по 8 неделям.

Недели считаются с понедельника, в UTC. Это стоит помнить, сверяя цифры с календарём клуба в другом часовом поясе.

POST /admin/push с таргетом all | tournament | city | users; для users принимаются идентификаторы и телефоны. Возвращает { targeted, pushed } и пишет аудит.

Два числа расходятся, когда у части адресатов нет активных токенов устройств.

Управление турнирами со стороны платформы

Заголовок раздела «Управление турнирами со стороны платформы»

Платформа может завести турнир за любой клуб: POST /admin/organizers/{id}/tournaments. Ей же доступен пересчёт результатов — POST /admin/tournaments/{id}/recount, описанный в результатах и аудите.

AuditLog пишется на действия live (старт, пауза, смена уровня, вылеты, подтверждение), на рассылки и на админские операции.