Админка — права, модерация, метрики
Вход тот же, что везде — телефон и код. Дальше 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 (старт, пауза, смена уровня, вылеты,
подтверждение), на рассылки и на админские операции.
Что рядом
Заголовок раздела «Что рядом»- Что ведёт платформа — то же словами продукта.
- poker-admin — как запустить админку.
- Рейтинг: пакет формул — что меняет раздел «Рейтинг».