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.
Rôles plateforme
| Rôle | Droits | Restrictions |
|---|---|---|
| SUPER_ADMIN | Accès complet : suspension tenants, changement plans, gestion admins | Aucune |
| ADMIN_TECH | Gestion tenants, modules, création admins IMF | Ne peut pas suspendre les tenants |
| SUPPORT | Lecture seule : tenants, audit, billing, monitoring | Aucune action de mutation |
🔐 Connexion
Authentification simple : email + mot de passe. Pas de slug tenant — les admins sont au scope plateforme, pas par IMF.
🧪 Pour tester
- 1Ouvrir
/login - 2Email :
admin@qredon.io - 3Mot de passe :
Admin123! - 4Cliquer "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.
➕ 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.
📋 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).




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


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