Règles métier — Administration
Ce document constitue la source de vérité fonctionnelle pour l'espace d'administration de Primatch. Toute modification des règles métier doit être répercutée ici avant d'être implémentée.
Rôle administrateur
Seuls les utilisateurs ayant le rôle admin peuvent accéder à l'espace d'administration. Un middleware dédié (admin) protège toutes les routes admin côté API.
1. Tableau de bord (Dashboard)
KPIs temps réel
| ID | Règle |
| RB-ADMIN-001 | Le dashboard affiche 5 KPIs temps réel : nombre total d'utilisateurs, nombre total de parties, nombre total de clubs, taux d'activité (%), nombre de clubs en attente. |
| RB-ADMIN-002 | Le taux d'activité est calculé comme le pourcentage d'utilisateurs ayant joué au moins une partie dans les 30 derniers jours. |
| RB-ADMIN-003 | Les tendances d'inscription et de parties sont affichées sous forme de courbes historiques (6 derniers mois). |
Distribution des niveaux
| ID | Règle |
| RB-ADMIN-004 | La distribution des joueurs par niveau est affichée sous forme de barres de progression montrant le nombre de joueurs dans chaque palier. |
Clubs en attente
| ID | Règle |
| RB-ADMIN-005 | Les 5 derniers clubs en attente de validation sont affichés dans le dashboard avec un accès rapide à la page de gestion des clubs. |
2. Gestion des niveaux de jeu
CRUD des niveaux
| ID | Règle |
| RB-ADMIN-010 | Un niveau de jeu est défini par : nom (unique), valeur minimale, valeur maximale, ordre de tri. |
| RB-ADMIN-011 | Les plages de valeurs [min_value, max_value] ne doivent pas se chevaucher entre niveaux. |
| RB-ADMIN-012 | L'administrateur peut créer, modifier et supprimer des niveaux de jeu. |
| RB-ADMIN-013 | La suppression d'un niveau est irréversible (suppression physique). |
Restauration des défauts
| ID | Règle |
| RB-ADMIN-014 | L'action « Restaurer les défauts » supprime tous les niveaux existants et recrée les niveaux par défaut définis dans le seeder. |
| RB-ADMIN-015 | ⚠️ La restauration des défauts est une opération destructrice qui affecte les niveaux de tous les joueurs. |
3. Gestion des utilisateurs
Consultation
| ID | Règle |
| RB-ADMIN-020 | L'administrateur peut consulter la liste paginée de tous les utilisateurs de la plateforme. |
| RB-ADMIN-021 | La recherche s'effectue par nom, prénom ou email (recherche textuelle). |
| RB-ADMIN-022 | Le filtrage par rôle est disponible : player, club_manager, admin. |
| RB-ADMIN-023 | La fiche détaillée d'un utilisateur affiche ses statistiques (parties jouées, victoires, défaites) et les clubs qu'il gère. |
Indicateur de fiabilité
| ID | Règle |
| RB-ADMIN-024 | Le score de fiabilité (reliability_score) est affiché avec un code couleur : vert (≥ 80), orange (50–79), rouge (< 50). |
4. Gestion des clubs
Cycle de vie d'un club
stateDiagram-v2
[*] --> pending : Inscription
pending --> validated : Approbation admin
pending --> suspended : Rejet admin
validated --> suspended : Suspension admin
suspended --> validated : Réactivation admin
| ID | Règle |
| RB-ADMIN-030 | Un club nouvellement inscrit a le statut pending (en attente de validation). |
| RB-ADMIN-031 | L'administrateur peut approuver un club → statut validated. |
| RB-ADMIN-032 | L'administrateur peut rejeter un club → statut suspended. |
| RB-ADMIN-033 | L'administrateur peut suspendre un club validé → statut suspended. |
| RB-ADMIN-034 | L'administrateur peut créer, modifier et supprimer des clubs manuellement. |
Filtrage
| ID | Règle |
| RB-ADMIN-035 | La liste des clubs est filtrable par statut : tous, en attente (pending), suspendus (suspended). |
| RB-ADMIN-036 | La recherche textuelle s'effectue sur le nom et la ville du club. |
5. Paramètres de l'application
Documents légaux
| ID | Règle |
| RB-ADMIN-040 | L'administrateur peut modifier le contenu des documents légaux : CGU, Politique de confidentialité, Mentions légales. |
| RB-ADMIN-041 | Le contenu légal est au format texte libre (HTML autorisé). |
| RB-ADMIN-042 | Les documents légaux sont accessibles publiquement en lecture seule via une route dédiée (GET /settings/{key}). |
FAQ
| ID | Règle |
| RB-ADMIN-045 | L'administrateur peut gérer la FAQ sous forme de paires question/réponse. |
| RB-ADMIN-046 | Les questions peuvent être ajoutées, modifiées et supprimées individuellement. |
| RB-ADMIN-047 | La FAQ est stockée comme un tableau JSON sérialisé dans les paramètres. |
Configuration système
| ID | Règle |
| RB-ADMIN-050 | Le délai de rappel de match est configurable : 1 heure, 2 heures ou 24 heures. |
| RB-ADMIN-051 | Les modifications de paramètres sont appliquées en batch via un seul appel API. |
6. Sécurité et accès
| ID | Règle |
| RB-ADMIN-060 | Toutes les routes admin sont protégées par le middleware auth:api (JWT) et le middleware admin (vérification du rôle). |
| RB-ADMIN-061 | Un utilisateur non-admin qui tente d'accéder à une route admin reçoit une réponse 403 Forbidden. |
| RB-ADMIN-062 | Côté frontend, le ProtectedRoute vérifie le rôle admin et redirige vers la page d'accueil si le rôle ne correspond pas. |