Espace IMF
L'interface métier quotidienne des employés d'une IMF. 25 pages couvrant le cycle complet d'octroi de crédit : de l'onboarding emprunteur jusqu'au pilotage portefeuille.
Hiérarchie des rôles
Chaque rôle ne voit que les données de son périmètre — un Agent ne voit que ses propres emprunteurs, un Directeur d'Agence voit toute son agence, un DG voit tout au niveau national.
| Rôle | Périmètre visible | Peut créer |
|---|---|---|
| ADMIN_IMF | Tout — admin technique du tenant + Paramètres | Tous les rôles |
| DG (Directeur Général) | Vue nationale, toutes données du tenant | Tous les rôles |
| Directeur Régional | Sa région et toutes ses agences | DA, SC, Agent, Caissier (sa région) |
| Directeur Agence | Son agence uniquement | SC, Agent, Caissier (son agence) |
| Superviseur Crédit | Dossiers de son agence | — |
| Agent | Ses propres emprunteurs et dossiers | — |
| Caissier | Caisse de son agence (paiements) | — |
🔐 Connexion
Authentification multi-tenant : slug du tenant + email + mot de passe. Le slug identifie l'IMF, l'email + mot de passe identifient l'utilisateur dans ce tenant.
🧪 Pour tester la connexion
- 1Ouvrir
/login - 2Slug :
al-amal-mf - 3Email :
karim.bouazizi@al-amal.tn(DG) — ou un autre compte du tableau ci-dessous - 4Mot de passe :
Qredon2026! - 5Cliquer "Se connecter" → redirection vers le Dashboard
📊 Dashboard
Vue d'accueil adaptée au rôle. Le DG voit les KPIs nationaux, le Directeur Régional voit sa région, etc. Cards : portefeuille total, PAR30/60/90, prêts actifs, dossiers en attente, derniers paiements.
👥 Emprunteurs
Gestion complète des emprunteurs : liste paginée filtrable, fiches détaillées 360°, KYC, transfert entre agents. Page dédiée "Pending validation" pour les emprunteurs auto-inscrits via le portail (statut KYC à valider par un agent).
Liste des emprunteurs
Emprunteurs en attente de validation KYC
💰 Dossiers de prêt
Cycle de vie complet d'un dossier : brouillon → soumission → KYC → scoring → revue → décision → décaissement → remboursements. Workflow trackable, chaque action loggée.
Liste des dossiers
Nouveau dossier (saisie agent)
📦 Produits de prêt
Catalogue configurable de produits : microcrédit commerce, agriculture, équipement, finance islamique. Chaque produit définit ses bornes (montant, durée), son taux, son workflow d'approbation et ses critères d'éligibilité.
📈 Portefeuille
Vue analytique du portefeuille : encours, PAR (Portfolio At Risk) 30/60/90 jours, ranking agences, performance par agent, snapshots historiques pour tendances.
💳 Remboursements
Suivi des échéances et enregistrement des paiements. Le Caissier saisit les paiements (cash / mobile money / virement / chèque), génère le reçu PDF, met à jour le statut du prêt.
🏢 Agences
Hiérarchie organisationnelle : Régions > Agences > Équipes. Chaque agence a un directeur, des coordonnées GPS, un statut actif/inactif.
🗺️ Régions
Niveau supérieur de la hiérarchie. Le seed crée 2 régions : Grand Tunis (REG-GT) et Cap Bon. Un Directeur Régional est assigné à une région.
👤 Utilisateurs IMF
Gestion des comptes IMF (DG, DR, DA, SC, Agents, Caissiers). Les règles de création respectent la hiérarchie : un DA ne peut créer que SC/Agent/Caissier dans son agence.
🔔 Notifications
Centre de notifications IMF (in-app). Les événements métier (prêt soumis, KYC validé, paiement reçu, etc.) génèrent des notifications avec priorité (faible / moyenne / haute / urgente).
⚙️ Paramètres tenant
Accessibles uniquement à ADMIN_IMF. 4 sous-sections : Audit (logs du tenant), Quotas (utilisation vs plan), Modules (activation des fonctionnalités), Onboarding (config parcours emprunteur).




🌐 Multilingue FR / AR / EN avec switcher
Bouton de bascule de langue dans la TopBar (en haut à droite). Le choix est mémorisé. L'arabe déclenche un layout RTL complet (sidebar à droite, textes alignés à droite, dates inversées).
🔑 Comptes de test (9 rôles)
Tous les comptes IMF démo ont le mot de passe Qredon2026!. Tenant slug : al-amal-mf.
| Rôle | Agence / Région | Note | |
|---|---|---|---|
karim.bouazizi@al-amal.tn | DG | — | Vue nationale |
moez.gharbi@al-amal.tn | ADMIN_IMF | — | Accès Settings |
sonia.mekki@al-amal.tn | Dir. Régional | Région Grand Tunis | Voit 3 agences |
nabil.jebali@al-amal.tn | Dir. Agence | Tunis Centre | |
rania.benamor@al-amal.tn | Dir. Agence | La Marsa | |
youssef.trabelsi@al-amal.tn | Sup. Crédit | Tunis Centre | |
fatma.chaabane@al-amal.tn | Agent | Tunis Centre | Plusieurs emprunteurs |
ahmed.dridi@al-amal.tn | Agent | La Marsa | |
salma.hamdi@al-amal.tn | Caissier | Tunis Centre | Enregistre paiements |
🧪 Tous les scénarios de test
Catalogue exhaustif des scénarios — du happy path aux edge cases. Organisés par domaine fonctionnel.
A. Authentification & rôles (10 scénarios)
- 1Login DG (vue nationale) — Karim Bouazizi voit les KPIs nationaux, toutes les agences, tous les emprunteurs du tenant.
- 2Login Directeur Régional — Sonia Mekki ne voit que les agences de la région Grand Tunis (Tunis Centre + La Marsa), pas Nabeul ni Hammamet.
- 3Login Directeur Agence — Nabil Jebali ne voit que les emprunteurs et dossiers de Tunis Centre.
- 4Login Agent — Fatma Chaabane ne voit que SES propres emprunteurs (ceux dont elle est
assignedAgent), pas ceux d'Ahmed Dridi. - 5Login Caissier — Salma Hamdi accède à la caisse de son agence Tunis Centre, peut enregistrer des paiements mais pas créer de dossier de prêt.
- 6Login ADMIN_IMF — Moez Gharbi est le seul à voir l'onglet "Paramètres" dans la sidebar.
- 7Login Superviseur Crédit — Youssef Trabelsi supervise les dossiers de Tunis Centre et peut approuver/rejeter en deuxième niveau.
- 8Tentative mauvais slug — Saisir
slug-inconnu→ erreur "Tenant introuvable". - 9Tentative mauvais mot de passe — Saisir un password incorrect → erreur "Identifiants invalides".
- 10Déconnexion — Bouton logout dans TopBar → retour à la page de connexion + tokens invalidés (impossible de revenir avec back button).
B. Gestion des emprunteurs (12 scénarios)
- 1Créer un emprunteur manuellement — Connecté Agent, /borrowers → "+ Nouvel emprunteur" → CIN, nom, phone (+216...), agence Tunis Centre. Sauvegarder → statut KYC PENDING_REVIEW.
- 2Modifier un emprunteur en attente — Ouvrir Ines Bouzid (
+216 55 104 004) → corriger l'adresse → sauvegarder → modification visible. - 3Valider un KYC (APPROVE) — Aller /borrowers/pending-validation → choisir un emprunteur PENDING_REVIEW → Approuver → statut passe à VERIFIED + notif portail envoyée.
- 4Rejeter un KYC — Choisir un emprunteur → Rejeter avec raison (ex: "documents flous") → statut REJECTED + notif portail.
- 5Demander info complémentaire — Choisir un emprunteur → "Compléments requis" + message → statut ADDITIONAL_INFO → l'emprunteur reçoit la demande dans son portail.
- 6Transférer un emprunteur — Vue détail Mohamed Ben Salah → "Transférer" → choisir nouvel agent (Ahmed Dridi) → confirmer → l'emprunteur disparaît de la liste de Fatma, apparaît chez Ahmed.
- 7Vue 360° d'un emprunteur — Cliquer sur un VERIFIED → onglets Profil · KYC · Dossiers de prêt · Historique paiements · Activité.
- 8Recherche par CIN — Barre de recherche → saisir
07891234→ Mohamed Ben Salah apparaît. - 9Filtre par statut KYC — Filtres : REJECTED → uniquement Fathi Derbali apparaît. PENDING_PROFILE → Sarra Mansouri + Hatem Khelifi.
- 10Filtre par agence — Choisir AGC-LM (La Marsa) → seuls Amira Zarrouki, Walid Chahed, Leila Haddad apparaissent.
- 11Auto-inscription portail → IMF — Un nouvel utilisateur s'inscrit sur le portail emprunteur (port 3002) → il apparaît automatiquement dans /borrowers/pending-validation côté IMF avec source "OTP phone".
- 12Pagination — Liste avec 50+ emprunteurs → pagination par 20 → navigation page suivante/précédente.
C. Cycle de vie des dossiers de prêt (15 scénarios)
- 1Workflow complet 4 rôles — Agent Fatma crée → SC Youssef approuve → DA Nabil décaisse → Caissier Salma enregistre 1er paiement. Vérifier que chaque étape génère une notification portail emprunteur.
- 2Brouillon DRAFT sauvegardé — Agent commence un dossier, ferme l'app, revient → le brouillon est conservé avec son contenu.
- 3Soumission SUBMITTED — Compléter et soumettre un brouillon → statut SUBMITTED → apparaît dans la file de revue du Sup. Crédit.
- 4Tentative dossier avec emprunteur non VERIFIED — Sélectionner Ines Bouzid (PENDING_REVIEW) → message d'erreur "L'emprunteur doit être vérifié KYC".
- 5Upload pièces du dossier — Étape Documents → uploader scan CIN, attestation revenus (PDF/JPG) → tailles et formats vérifiés.
- 6Approbation avec montant ajusté — Dossier de 5000 demandé → SC approuve à 4000 → statut APPROVED avec
approvedAmount=4000. - 7Rejet d'un dossier — SC rejette avec raison (CAPACITY = capacité insuffisante) → statut REJECTED + notif portail au borrower.
- 8Demande de complément — SC demande une pièce manquante → statut UNDER_REVIEW + notif portail "complément requis" → l'emprunteur uploade depuis son portail.
- 9Décaissement DISBURSED — Dossier APPROVED → DA "Décaisser" → choisir mode (cash / virement) → statut DISBURSED + génération automatique de l'échéancier (12 mensualités si durée 12 mois).
- 10Annulation dossier — Avant approbation, l'emprunteur peut annuler depuis son portail → statut CANCELLED visible côté IMF.
- 11Filtre dossiers par statut — Filtre "DISBURSED" → uniquement les prêts actifs visibles.
- 12Filtre dossiers par agent — DG filtre par agent Fatma → seuls les dossiers de Fatma apparaissent.
- 13Recherche par référence — Saisir la référence unique d'un dossier → résultat direct.
- 14Vue détaillée dossier — Onglets : Infos · Documents · Workflow (timeline) · Échéancier · Historique paiements.
- 15Workflow multi-niveaux (gros montant) — Produit configuré avec 3 niveaux d'approbation : SC → DA → DR. Tester l'escalade complète.
D. Produits de prêt (8 scénarios)
- 1Voir le catalogue produits — /products → liste des produits actifs (Microcrédit Commerce, Agriculture, etc.).
- 2Créer un nouveau produit (ADMIN_IMF) — Moez Gharbi → /products/new → Nom "Crédit Étudiant", min 1000 / max 8000, durée 6-24 mois, taux 8%, frais 1.5%.
- 3Configurer workflow d'approbation — Wizard nouveau produit → choisir 2 niveaux d'approbation : Agent → SC.
- 4Produit conforme finance islamique — Activer le toggle "Conforme Sharia" → impacte les calculs (pas d'intérêts, marge).
- 5Désactiver un produit — Toggle isActive → off → le produit n'apparaît plus dans la liste de sélection à la création de dossier.
- 6Réactiver un produit — Toggle on → réapparaît dans la sélection.
- 7Modifier les bornes d'un produit — Augmenter le montant max → les nouveaux dossiers peuvent demander plus, les anciens restent inchangés.
- 8Critères d'éligibilité — Définir : âge min 18, revenus min 1000 → tester avec un emprunteur sous le seuil → blocage.
E. Remboursements (10 scénarios)
- 1Vue échéances du jour — Caissier Salma → /repayments → vue des échéances UPCOMING dues aujourd'hui.
- 2Paiement complet à l'heure — Échéance UPCOMING → "Enregistrer un paiement" → montant exact → mode CASH → statut PAID + reçu PDF + notif portail.
- 3Paiement partiel — Échéance 500 TND → payer 300 → statut PARTIAL + reste dû.
- 4Paiement en retard — Échéance dépassée → statut LATE + jours de retard affichés.
- 5Mode mobile money — Saisir un paiement avec mode MOBILE_MONEY → numéro de transaction obligatoire.
- 6Mode virement bancaire — BANK_TRANSFER → référence virement requise.
- 7Mode chèque — CHECK → numéro de chèque + banque + date encaissement.
- 8Génération reçu PDF — Tout paiement enregistré → bouton "Imprimer le reçu" → PDF avec QR code de vérification.
- 9Détection automatique défaut — Une échéance en retard de >90 jours → marquage automatique en DEFAULTED.
- 10Export comptable — Filtre période + export CSV → fichier téléchargé avec colonnes adaptées à la compta.
F. Portefeuille & KPIs (9 scénarios)
- 1KPIs DG (vue nationale) — Total encours, Nb prêts actifs, Nb emprunteurs, PAR30/60/90, Taux approbation, Taux recouvrement.
- 2KPIs DR (vue régionale) — Mêmes KPIs mais limités à la région Grand Tunis.
- 3KPIs DA (vue agence) — Idem mais limités à Tunis Centre.
- 4Filtres période — Mois courant / Trimestre / Année / Custom → recalcul auto.
- 5Ranking agences — Onglet "Performance agences" → classement par volume octroyé, taux PAR, taux recouvrement.
- 6Performance par agent — Filtrer par agent Fatma → ses métriques personnelles.
- 7Snapshots historiques — Voir l'évolution du portefeuille sur 6 mois (courbes Recharts).
- 8Comparaison période — Comparer T1 vs T1 année précédente → calcul automatique des variations.
- 9Export portefeuille — Export CSV/Excel du portefeuille avec toutes les colonnes pour analyses externes.
G. Agences & Régions (8 scénarios)
- 1Voir les 4 agences seedées — Tunis Centre, La Marsa, Nabeul, Hammamet.
- 2Créer une nouvelle agence — DG → /agencies → "Nouvelle" → nom, code, région, GPS (lat/long), directeur → sauvegarder.
- 3Assigner un directeur — Agence sans directeur → "Assigner DA" → choisir un DA libre → confirmer.
- 4Désactiver une agence — Toggle isActive → off → l'agence n'apparaît plus dans les sélections (création emprunteur, dossier).
- 5Vue stats par agence — Détail agence → nb emprunteurs, nb prêts actifs, PAR de cette agence.
- 6Créer une nouvelle région — Code REG-SF (Sfax), nom Sfax → sauvegarder.
- 7Assigner un DR à une région — Région sans DR → "Assigner directeur" → choisir.
- 8Voir les agences d'une région — Détail région Grand Tunis → voir Tunis Centre + La Marsa.
H. Gestion des utilisateurs IMF (8 scénarios)
- 1DG crée tous les rôles — Karim peut créer DR, DA, SC, Agent, Caissier dans n'importe quelle agence.
- 2DR limité à sa région — Sonia ne peut créer que des DA/SC/Agents dans Tunis Centre ou La Marsa, pas Nabeul.
- 3DA limité à son agence — Nabil ne peut créer que SC/Agent/Caissier dans Tunis Centre.
- 4Agent ne peut pas créer — Fatma essaie de créer un user → option non visible / message d'erreur.
- 5Modifier un utilisateur — Changer phone, email → sauvegarder.
- 6Désactiver un user — Toggle isActive → off → l'utilisateur ne peut plus se connecter.
- 7Reset password — DG ou ADMIN_IMF → bouton "Reset password" → email envoyé à l'user avec lien temporaire.
- 8Voir lastLoginAt — Liste users → colonne "Dernière connexion" remplie.
I. Notifications (7 scénarios)
- 1Recevoir notification LOAN_SUBMITTED — Agent soumet un dossier → SC reçoit une notif "Nouveau dossier à réviser".
- 2Recevoir notification PAYMENT_LATE — Échéance en retard → Agent + DA reçoivent une alerte.
- 3Compteur non-lus (bell) — Badge rouge dans la TopBar avec le nombre de notifs non lues.
- 4Marquer comme lue — Cliquer sur une notif → badge décrémente.
- 5Mark all as read — Bouton "Tout marquer lu" → badge passe à 0.
- 6Filtre par priorité — URGENT / HIGH / MEDIUM / LOW → liste filtrée.
- 7Filtre par type — LOAN_* / PAYMENT_* / KYC_* / SYSTEM_* → liste filtrée.
J. Paramètres tenant — réservés ADMIN_IMF (6 scénarios)
- 1Accès Settings limité — Tentative DG/DR/DA/Agent → option Paramètres non visible. Seul Moez (ADMIN_IMF) y accède.
- 2Voir les logs d'audit du tenant — /settings/audit → liste de toutes les mutations avec acteur + date + payload.
- 3Exporter audit CSV — Bouton "Exporter" → fichier CSV téléchargé.
- 4Voir les quotas vs plan — /settings/quotas → utilisation actuelle vs limites du plan (ex: 8/20 agences, 12/50 users, 134/2000 prêts ce mois).
- 5Activer/désactiver un module — /settings/modules → toggle BORROWER_PORTAL off → l'app portail devient inaccessible pour ce tenant.
- 6Configurer l'onboarding — /settings/onboarding → champs obligatoires/optionnels du parcours emprunteur (ex: CIN obligatoire, justificatif revenus optionnel).
K. Multilingue & RTL Arabe (6 scénarios)
- 1Bascule FR → AR — Cliquer sur l'icône globe dans TopBar → choisir العربية → toute l'UI bascule en arabe + layout RTL (sidebar à droite).
- 2Bascule FR → EN — Choisir English → labels traduits en anglais, LTR.
- 3Persistance après refresh — Rafraîchir la page → la langue choisie est conservée.
- 4Persistance après logout/login — Se déconnecter, se reconnecter → langue conservée.
- 5Vérification RTL Arabe — Sidebar à droite, textes alignés à droite, dates et chiffres lus de droite à gauche, icônes flèches inversées.
- 6Vérification absence de clés brutes — Naviguer toutes les pages en AR et EN → aucune chaîne comme "auth.login" affichée (= toutes les clés sont traduites).
L. Edge cases & cas limites (10 scénarios)
- 1Tenant suspendu — Le Super Admin Qredon suspend le tenant al-amal-mf → tous les utilisateurs IMF sont déconnectés et reçoivent un message "Service temporairement suspendu".
- 2Session expirée (30 min d'inactivité) — Laisser l'app inactive 31 min → la prochaine action déclenche un refresh automatique du token, transparent pour l'utilisateur.
- 3Refresh token expiré (7 jours) — Inactivité >7 jours → retour à la page de connexion.
- 4Connexion simultanée multi-onglets — Ouvrir l'app dans 2 onglets → les deux fonctionnent en parallèle.
- 5Réseau coupé — Désactiver le wifi → l'app affiche un message "Connexion perdue" plutôt que de planter.
- 6Tenant nouvellement créé (données vides) — Se connecter sur un tenant sans emprunteurs → empty states clairs avec CTA "Créer le premier emprunteur".
- 7Pagination 100+ résultats — Filtrer un grand volume → navigation par pages fluide.
- 8Numéro phone invalide — Tenter de saisir
+216 1234(format incomplet) → message d'erreur "Format MENA invalide". - 9CIN dupliqué — Tenter de créer un emprunteur avec un CIN déjà existant → erreur "CIN déjà utilisé".
- 10Quota plan atteint — IMF avec plan Starter (5 agences max) tente d'en créer une 6e → erreur "Quota atteint, upgrade requis".
M. Workflows complets bout-à-bout (5 scénarios cross-plateforme)
- 1Onboarding complet d'un nouvel emprunteur
- Nouvel utilisateur s'inscrit sur le portail (port 3002) avec phone+email
- Validation double OTP (SMS + email — codes via MailHog port 8025)
- Complète son profil sur le portail (nom, CIN, activité, revenus)
- Apparaît côté IMF dans /borrowers/pending-validation
- Agent Fatma valide le KYC → statut VERIFIED
- L'emprunteur reçoit une notification push portail
- L'emprunteur peut désormais faire une demande de prêt
- 2Demande de prêt complète
- Emprunteur ouvre /apply sur le portail
- Sélectionne Microcrédit Commerce, montant 5000, durée 12 mois
- Wizard 4 étapes (Identité, Économique, Projet, Documents)
- Signature OTP de consentement à la soumission
- Dossier apparaît côté IMF avec statut SUBMITTED
- SC Youssef approuve à 4500 TND (montant ajusté)
- DA Nabil décaisse → DISBURSED + échéancier 12 mois généré
- Emprunteur reçoit notif "Prêt décaissé"
- 3Cycle de remboursement
- 1re échéance arrive (J+30 du décaissement)
- Emprunteur reçoit une notif "Échéance dans 3 jours"
- L'emprunteur se rend à l'agence ou paie via mobile money
- Caissier Salma enregistre le paiement (mode CASH ou MOBILE_MONEY)
- Reçu PDF généré avec QR code
- Emprunteur reçoit notif "Paiement confirmé" + reçu téléchargeable
- Statut échéance : UPCOMING → PAID
- 4KYC pending avec demande de complément
- Emprunteur Sarra Mansouri (PENDING_PROFILE) complète son profil partiellement
- Statut passe à PENDING_REVIEW
- Agent ouvre le dossier KYC, identifie une pièce manquante
- Agent clique "Demander info complémentaire" + message "Veuillez fournir un justificatif de domicile"
- Statut passe à ADDITIONAL_INFO_REQUIRED
- Emprunteur reçoit notif portail + voit l'alerte sur sa fiche
- Il uploade le justificatif depuis son portail
- Agent re-révise → APPROVE → statut VERIFIED
- 5Génération d'attestation + vérification publique par QR
- Emprunteur avec prêt clôturé demande une attestation LOAN_CLOSURE depuis son portail
- PDF généré côté backend avec QR code unique
- L'emprunteur télécharge l'attestation et la partage
- Un tiers (banque, employeur) scanne le QR → ouvre /verify/{qrCode}
- Page publique affichée sans login, montre uniquement les métadonnées de validité (type, date, signature) sans le fichier