Analyse des Cas d'Utilisation - Projet ESM¶
Vue d'ensemble¶
Le système gère le suivi éducatif et social de jeunes talibés dans le nord-Bénin. L'entité centrale est Enfant, autour de laquelle gravitent plusieurs processus : évaluation de vulnérabilité, accompagnement, formation/sensibilisation, et suivi.
CAS D'UTILISATION PRINCIPAUX¶
1. Gestion des Utilisateurs (Auth & Permissions)¶
CU1.1 - Authentification Utilisateur¶
- Acteurs : Utilisateur (agent ESM)
- Flux : Login → Session → 2FA (optionnel) → Accès aux données
- Tables impliquées :
Utilisateur(principal)Session(gestion des sessions actives)CodeVerification(2FA via email)BackupCode(codes de secours 2FA)TokenReset(réinitialisation mot de passe)TentativeConnexion(audit des tentatives)IPBlacklist(bloquage IPs malveillantes)- Relations :
Utilisateur1 → NSessionUtilisateur1 → NAuditLogUtilisateur→ProfilUtilisateur(rôle : Agent Terrain, Responsable, etc.)
CU1.2 - Audit & Sécurité¶
- Acteurs : Système, Utilisateur
- Tables :
AuditLog: trace toutes les actions (CRUD sur toutes entités)SecurityLog: événements de sécurité (login, lockout, etc.)- Flux : Chaque action → log dans AuditLog + SecurityLog (si applicable)
2. Gestion des Enfants¶
CU2.1 - Identification d'un Enfant¶
- Acteurs : Agent ESM
- Tables :
Enfant(principal)Commune(localisation)MaitreCoranique(lien optionnel)Utilisateur(qui a créé l'enregistrement)- Flux : Saisie des informations → Enregistrement → Statut ACTIF
- Relations :
Enfant→Commune(obligatoire)Enfant→MaitreCoranique(obligatoire)Enfant→Utilisateur(créateur)Enfant→Parent(optionnel)
CU2.2 - Suivi Parental¶
- Acteurs : Agent ESM
- Tables :
Enfant(tuteurId, parentId)Parent(ouTuteurselon le lien)- Flux : Identifier les parents/tuteurs → Lier à l'enfant
- Note : À compléter - les FK
tuteurId/parentIdne sont pas encore liés aux nouvelles tables
3. Évaluation de Vulnérabilité¶
CU3.1 - Évaluation d'un Enfant¶
- Acteurs : Agent ESM
- Tables :
Enfant(évalué)EvaluationVulnerabilite(principal)ConfigCritere(libellés des 6 critères)Utilisateur(agent évaluateur)- Flux : Remplir 6 critères booléens → Calcul score → Déterminer niveau (N1-N4)
- Relations :
EvaluationVulnerabilite→EnfantEvaluationVulnerabilite→UtilisateurConfigCritere: référentiel des libellés (modifiable sans code)- Seuils :
- N1 : score ≤ 1 (Faible)
- N2 : score = 2 (Modéré)
- N3 : score 3-4 (Élevé)
- N4 : score ≥ 5 (Critique)
4. Accompagnement¶
CU4.1 - Création d'un Programme d'Accompagnement¶
- Acteurs : Agent ESM
- Tables :
Enfant(bénéficiaire)Accompagnement(principal)TypeAccompagnement(référentiel : Formation Artisanale, Soutien Psychosocial, etc.)- Flux : Choisir type → Date début → Objectif → Responsable
- Relations :
Accompagnement→Enfant(1:N)Accompagnement→TypeAccompagnement(N:1)Accompagnement→Utilisateur(agent référent)- Statuts : EN_COURS, SUSPENDU, TERMINE, ABANDONNE
CU4.2 - Suivi d'un Accompagnement¶
- Acteurs : Agent ESM
- Tables :
SuiviAccompagnement(principal)Accompagnement(auquel s'accroche le suivi)- Flux : Visite → Observations → Évolution → Prochaine étape
- Relations :
SuiviAccompagnement→Accompagnement(N:1)
5. Formation & Sensibilisation¶
CU5.1 - Organisation d'une Formation¶
- Acteurs : Agent ESM
- Tables :
FormationSensibilisation(principal)PersonneRessource(animateur)Commune(lieu)- Flux : Titre + Date + Lieu → Animateur → Thèmes
- Relations :
FormationSensibilisation→PersonneRessource(via animateurId, optionnel)FormationSensibilisation→Commune(optionnel)
CU5.2 - Participation à une Formation¶
- Acteurs : Agent ESM, Participants
- Tables :
ParticipationFormation(principal)FormationSensibilisation(liée)- Participants possibles :
- TUTEUR (via Tuteur.id)
- MAITRE_CORANIQUE
- AGENT
- COMMUNAUTE
- Relations :
ParticipationFormation→FormationSensibilisationtypeParticipant+participantIdforment une clé unique polymorphique
6. Gestion des Référentiels¶
CU6.1 - Gestion des Profils Utilisateur¶
- Acteurs : Administrateur
- Tables :
ProfilUtilisateur(référentiel dynamique)- Exemples : AGENT_TERRAIN, RESPONSABLE, ADMIN, etc.
CU6.2 - Gestion des Types d'Accompagnement¶
- Acteurs : Administrateur
- Tables :
TypeAccompagnement(référentiel dynamique)- Exemples : FORMATION_ARTISANALE, SOUTIEN_PSCHO_SOCIAL, etc.
CU6.3 - Gestion des Types de Lien Parent/Tuteur¶
- Acteurs : Système
- Tables :
TypeLienParent(PERE, MERE, GRAND_PARENT, ONCLE_TANTE)TypeLienTuteur(TUTEUR_LEGAL, TUTEUR_COMMUNAUTAIRE, AUTRE)
CU6.4 - Gestion des Types de Personne Ressource¶
- Acteurs : Système
- Tables :
TypePersonneRessource(INTERVENANT, ANIMATEUR, FORMATEUR)
RELATIONS ENTRE TABLES (Schéma actuel)¶
Relations principales avec Enfant¶
Enfant
├── Commune (obligatoire)
├── MaitreCoranique (obligatoire)
├── Utilisateur (créateur)
├── EvaluationVulnerabilite (0..N)
└── Accompagnement (1..N)
Relations avec Utilisateur¶
Utilisateur
├── ProfilUtilisateur (obligatoire)
├── Commune (optionnel, filtrage multi-tenant)
├── Enfant (0..N, enfants créés)
├── MaitreCoranique (0..N)
├── EvaluationVulnerabilite (0..N)
├── Accompagnement (0..N)
├── SuiviAccompagnement (0..N)
└── FormationSensibilisation (0..N)
Relations avec MaitreCoranique¶
MaitreCoranique
├── Commune (optionnel)
├── Utilisateur (créateur)
└── Enfant (0..N, talibés sous tutelle)
Relations avec FormationSensibilisation¶
FormationSensibilisation
├── Utilisateur (créateur)
├── Commune (optionnel)
├── PersonneRessource (animateur, optionnel)
└── ParticipationFormation (0..N)
POINTS D'ATTENTION / À FINALISER¶
-
Tuteur/Parent vs TuteursParents : La migration n'est pas terminée. Les FK
tuteurId/parentIddansEnfantne sont pas encore correctement reliées aux nouvelles tables. -
PersonneRessource : Prête à l'emploi, mais les participations forment un polymorphisme non typé.
-
Relations manquantes :
Tuteur→MaitreCoranique(relation inverse)Parent→Enfant(relation inverse si besoin)
4. Tables orphelines : tuteurs_parents dans la base actuelle n'est pas dans le schéma - migration nécessaire.¶
MATRICE DES RELATIONS MÉTIERS¶
┌─────────────────┐ ┌──────────────┐
│ Enfant │◄─1:N───►│Accompagnement│
│ (talibé) │ │(programme) │
└────────┬────────┘ └──────┬───────┘
│ │
│ │
▼ ▼
┌─────────────────┐ ┌──────────────┐
│Commune │ │TypeAccomp. │
│(Ndali, Kandi..) │ └──────────────┘
└─────────────────┘ │
▲ │
│ N:1 │
┌────────┴────────┐ │
│MaitreCoranique │◄─1:N───►┌─────────┴────────┐
│(professeur) │ │SuiviAccompagn. │
└─────────────────┘ │(visites) │
└──────────────────┘
┌─────────────────┐
│EvaluationVuln. │
│(6 critères/N1-N4)│
└─────────────────┘
┌─────────────────┐ ┌──────────────────┐
│Formation │◄─1:N───►│Participation │
│Sensibilisation │ │Formation │
└────────┬────────┘ └──────────────────┘
│
│ N:1
▼
┌─────────────────┐
│PersonneRessource│
│(animateur) │
└─────────────────┘
┌─────────────────┐
│Utilisateur │
│(agent) │
└────────┬────────┘
│
│ N:1
▼
┌─────────────────┐
│ProfilUtilisateur│
└─────────────────┘
TÂCHES DE DÉVELOPPEMENT RESTantes¶
- Créer le module Parents :
- DTO avec TypeLienParent
- Repository Prisma
- Use cases (Creer, Lister, Modifier, Supprimer)
-
Routes
/api/v1/esm/parents -
Mettre à jour le module Tuteurs :
- Retirer PERE/MERE/... de TypeLienTuteur
-
Ajouter relation
maitreCoranvers MaitreCoranique -
Mettre à jour les relations Enfant :
- Lier
tuteurId→ Tuteur -
Lier
parentId→ Parent (nouvelle table) -
Script de migration :
- Transfert
TuteursParents→Tuteurs+Parents - Basé sur
typeLien(PERE/MERE/... → Parents, TUTEUR_* → Tuteurs)