Phase 1 · Complète 🔗 Ouvrir l'app live →

Admin Platform

La console de gestion plateforme de l'équipe Qredon. Onboarding des IMF clientes, gestion des modules payants, facturation, monitoring santé, audit trail global.

15
Pages plateforme
3
Rôles admin
4
Plans (Starter→Enterprise)
8
Modules activables

Rôles plateforme

RôleDroitsRestrictions
SUPER_ADMINAccès complet : suspension tenants, changement plans, gestion adminsAucune
ADMIN_TECHGestion tenants, modules, création admins IMFNe peut pas suspendre les tenants
SUPPORTLecture seule : tenants, audit, billing, monitoringAucune action de mutation

🔐 Connexion

Authentification simple : email + mot de passe. Pas de slug tenant — les admins sont au scope plateforme, pas par IMF.

Login Admin
🧪 Pour tester
  1. 1
    Ouvrir /login
  2. 2
    Email : admin@qredon.io
  3. 3
    Mot de passe : Admin123!
  4. 4
    Cliquer "Se connecter" → redirection vers /tenants

🏛️ Tenants (IMF)

Liste de toutes les IMF clientes onboardées sur la plateforme. Chaque tenant a son propre espace de données isolé. Filtrage par statut (actif / en provisioning / suspendu / archivé) et par plan.

Liste tenants

➕ Créer un nouveau tenant

Wizard d'onboarding d'une nouvelle IMF : identité (nom, slug, langue, devise) → plan (Starter/Growth/Scale/Enterprise) → modules → email admin IMF initial. Provisioning automatique.

Wizard nouveau tenant

📋 Détail tenant

4 sous-onglets : Overview (KPIs métiers du tenant), Modules (toggle activation des fonctionnalités), Billing (historique factures), Audit (logs spécifiques au tenant).

Tenant detail
Tenant modules
Tenant billing
Tenant audit

👤 Administrateurs plateforme

Gestion des comptes Super Admin, Admin Tech, Support. Accès SUPER_ADMIN uniquement.

Users list
New user

📜 Audit trail global

Journal de toutes les actions des admins plateforme + des IMF (cross-tenant). Filtres par tenant, action, période, acteur. Export CSV.

Audit global

💵 Facturation globale

Toutes les factures émises envers les IMF clientes. Statuts (en attente / payée / en retard / annulée). Calcul auto basé sur le plan + remises éventuelles.

Facturation

📊 Monitoring santé

État système : santé base de données, santé cache Redis, utilisation mémoire, latence API, files de jobs asynchrones.

Monitoring

⚙️ Paramètres plateforme

Configuration globale Qredon : configuration emails, fournisseurs SMS, taux par défaut, etc.

Settings

🔑 Compte de test

EmailMot de passeRôle
admin@qredon.ioAdmin123!SUPER_ADMIN

Seul compte plateforme créé par le seed. Pour tester les rôles ADMIN_TECH et SUPPORT, les créer manuellement depuis /users/new.

🧪 Tous les scénarios de test

Catalogue exhaustif des scénarios pour la console Admin Platform.

A. Connexion & rôles (6 scénarios)
  1. 1
    Login SUPER_ADMIN — admin@qredon.io / Admin123! → accès complet, tous les onglets visibles dans la sidebar.
  2. 2
    Login ADMIN_TECH (à créer manuellement) — peut gérer tenants/modules mais l'option "Suspendre" est désactivée.
  3. 3
    Login SUPPORT (à créer manuellement) — toutes les actions de mutation sont désactivées (formulaires en lecture seule).
  4. 4
    Mauvais mot de passe — saisir un password incorrect → message d'erreur "Identifiants invalides".
  5. 5
    Email inconnu — saisir un email inexistant → message d'erreur similaire (ne révèle pas si l'email existe ou non — bonne pratique sécurité).
  6. 6
    Déconnexion — bouton logout dans TopBar → retour à /login + tokens invalidés.
B. Gestion des tenants (15 scénarios)
  1. 1
    Voir les 3 tenants seedés — Al-Amal Microfinance (Growth, actif), Test IMF (Starter, actif), Qredon Demo (Growth, actif).
  2. 2
    Filtre par statut — Choisir "Actif" → 3 tenants. Choisir "Suspendu" → liste vide.
  3. 3
    Filtre par plan — Plan "Growth" → Al-Amal + Qredon Demo. Plan "Starter" → Test IMF.
  4. 4
    Recherche par slug — Barre de recherche "al-amal" → Al-Amal apparaît.
  5. 5
    Créer un nouveau tenant (wizard 7 étapes)
    1. Étape 1 — Nom IMF "Demo Test", slug demo-test
    2. Étape 2 — Pays Tunisie, devise TND, langue par défaut FR
    3. Étape 3 — Plan Growth
    4. Étape 4 — Modules : BORROWER_PORTAL + ADVANCED_ANALYTICS + SMS_ALERTS
    5. Étape 5 — Email admin IMF (recevra invite)
    6. Étape 6 — Couleur primaire + logo (optionnels)
    7. Étape 7 — Confirmation + provisioning
    8. Vérifier que le tenant passe par PROVISIONING → ACTIVE en quelques secondes
  6. 6
    Tentative slug dupliqué — Créer avec slug al-amal-mf → erreur "Slug déjà utilisé".
  7. 7
    Tentative slug invalide — Saisir Demo_Test 123! → message "Slug doit être en minuscules, chiffres et tirets uniquement".
  8. 8
    Voir le détail d'un tenant — Cliquer sur Al-Amal → onglets Overview, Modules, Billing, Audit.
  9. 9
    Onglet Modules d'un tenant — Voir 8 modules avec leur statut (3 activés pour Al-Amal). Toggle un module activé → désactivation immédiate.
  10. 10
    Onglet Billing d'un tenant — Historique factures émises pour ce tenant.
  11. 11
    Onglet Audit d'un tenant — Toutes les mutations spécifiques à ce tenant.
  12. 12
    Changer le plan — Détail Al-Amal → "Changer le plan" → choisir Scale → confirmation → quotas augmentés (50 agences → 999, etc.).
  13. 13
    Suspendre un tenant — Bouton "Suspendre" + raison "Impayé" → statut SUSPENDED → tous les utilisateurs IMF de ce tenant sont déconnectés et bloqués (403).
  14. 14
    Réactiver un tenant — Bouton "Réactiver" → statut ACTIVE → les utilisateurs IMF peuvent à nouveau se connecter.
  15. 15
    Archiver un tenant — Action ARCHIVE → statut ARCHIVED → les données sont conservées (RGPD) mais inaccessibles.
C. Gestion des administrateurs plateforme (7 scénarios)
  1. 1
    Voir la liste des admins — /users → seul "Super Admin" créé par le seed.
  2. 2
    Créer un ADMIN_TECH — /users/new → email "tech@qredon.io", rôle ADMIN_TECH, mot de passe temporaire → ajouté.
  3. 3
    Créer un SUPPORT — /users/new → email "support@qredon.io", rôle SUPPORT → l'utilisateur pourra se connecter mais ne pourra pas modifier.
  4. 4
    Désactiver un admin — Toggle isActive off → l'utilisateur ne peut plus se connecter.
  5. 5
    Réactiver un admin — Toggle on → peut se reconnecter.
  6. 6
    Tentative de suppression du dernier SUPER_ADMIN — Si on essaie de supprimer le seul SUPER_ADMIN → message "Impossible de supprimer le dernier Super Admin".
  7. 7
    Changer le mot de passe — Bouton "Reset password" → nouveau password temporaire généré + email envoyé à l'admin.
D. Audit trail global (8 scénarios)
  1. 1
    Voir tous les logs — /audit → tableau chronologique de toutes les mutations cross-tenant.
  2. 2
    Filtre par action — Sélectionner "TENANT_CREATED" → uniquement les créations de tenants.
  3. 3
    Filtre par tenant — Sélectionner Al-Amal → seules ses actions apparaissent.
  4. 4
    Filtre par acteur — Choisir un admin → ses actions uniquement.
  5. 5
    Filtre par période — Date début / date fin → actions dans l'intervalle.
  6. 6
    Vue détail d'une action — Cliquer une entrée → modal avec payload JSON complet (oldValue / newValue / IP / user-agent).
  7. 7
    Export CSV — Bouton "Exporter" → fichier CSV téléchargé avec toutes les colonnes.
  8. 8
    Pagination — Si >1000 logs, pagination par 50 ou 100.
E. Facturation (7 scénarios)
  1. 1
    Voir la liste des factures — /billing → toutes les factures cross-tenant.
  2. 2
    Filtre par statut — En attente / Payée / En retard / Annulée.
  3. 3
    Marquer une facture comme payée — Action "Marquer payée" + date paiement → statut passe à PAID.
  4. 4
    Annuler une facture — Action "Annuler" + raison → statut CANCELLED.
  5. 5
    Voir le détail d'une facture — Période, plan facturé, remise, total HT, total TTC.
  6. 6
    Recalcul automatique après changement de plan — Tenant passe Growth → Scale en milieu de mois → facture suivante prorata.
  7. 7
    Notification factures en retard — Une facture impayée depuis >30 jours → alerte automatique côté dashboard.
F. Monitoring santé (5 scénarios)
  1. 1
    Voir l'état système — /monitoring → cards avec statut OK/WARN/DOWN pour DB, Redis, mémoire, API.
  2. 2
    Latence API — Graphique temps de réponse moyen sur les dernières 24h.
  3. 3
    Utilisation mémoire — Pourcentage utilisé sur le serveur + alerte si >80%.
  4. 4
    Files de jobs — État des queues asynchrones (emails, exports CSV, audits) — backlog + jobs failed.
  5. 5
    Refresh manuel — Bouton "Rafraîchir" → re-fetch des métriques en temps réel.
G. Edge cases (6 scénarios)
  1. 1
    Tentative provisioning avec quotas dépassés — Plan Starter limite à 5 agences. Créer une IMF puis dépasser cette limite côté IMF → blocage avec message clair.
  2. 2
    SUPPORT essaie de modifier — Connecté SUPPORT, tenter de cliquer "+ Nouveau tenant" → bouton désactivé/invisible.
  3. 3
    ADMIN_TECH essaie de suspendre — Bouton "Suspendre" non disponible pour ADMIN_TECH.
  4. 4
    Réactiver un tenant ARCHIVED — Doit nécessiter une étape supplémentaire (le statut ARCHIVED est censé être définitif).
  5. 5
    Session expirée — Laisser l'app inactive 30+ min → la prochaine action déclenche refresh token (transparent) ou retour à /login si refresh expiré.
  6. 6
    Tenant sans aucune donnée — Nouveau tenant créé → ouvrir son détail → empty states clairs (pas d'erreur, juste "Aucune donnée").
H. Workflows complets bout-à-bout (3 scénarios)
  1. 1
    Onboarding complet d'une nouvelle IMF
    1. SUPER_ADMIN crée tenant "Demo Test" via wizard 7 étapes
    2. Statut passe par PROVISIONING (création de l'espace de données)
    3. Statut devient ACTIVE après quelques secondes
    4. L'admin IMF "moez@demo-test.tn" reçoit un email d'invitation
    5. L'admin IMF clique le lien, définit son mot de passe
    6. L'admin IMF se connecte sur l'Espace IMF (port 3001) avec slug "demo-test"
    7. Il peut commencer à créer ses agences, ses agents, ses emprunteurs
  2. 2
    Suspension pour impayé et réactivation
    1. SUPER_ADMIN voit une facture impayée depuis 45 jours sur /billing
    2. Il ouvre le détail du tenant correspondant
    3. Action "Suspendre" + raison "Impayé facture #12345"
    4. Le tenant passe en SUSPENDED
    5. Tous les utilisateurs IMF sont déconnectés immédiatement
    6. Si un IMF tente de se connecter → message "Service suspendu, contactez l'admin"
    7. Une fois la facture payée, "Marquer payée" puis "Réactiver le tenant"
    8. Statut ACTIVE → l'IMF reprend l'accès
  3. 3
    Upgrade de plan avec activation module
    1. L'IMF Al-Amal demande à activer le module ISLAMIC_FINANCE (non inclus dans Growth)
    2. SUPER_ADMIN ouvre le détail Al-Amal
    3. Onglet Modules → tenter de toggle ISLAMIC_FINANCE → message "Module non inclus dans le plan Growth, upgrade requis"
    4. Changer le plan Al-Amal vers Scale
    5. Retour Modules → toggle ISLAMIC_FINANCE on → activé
    6. Côté IMF Al-Amal, l'option "Conforme Sharia" apparaît à la création de produit
    7. Facture recalculée pour le prochain mois (prorata)