Aller au contenu

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 :
  • Utilisateur 1 → N Session
  • Utilisateur 1 → N AuditLog
  • UtilisateurProfilUtilisateur (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 :
  • EnfantCommune (obligatoire)
  • EnfantMaitreCoranique (obligatoire)
  • EnfantUtilisateur (créateur)
  • EnfantParent (optionnel)

CU2.2 - Suivi Parental

  • Acteurs : Agent ESM
  • Tables :
  • Enfant (tuteurId, parentId)
  • Parent (ou Tuteur selon le lien)
  • Flux : Identifier les parents/tuteurs → Lier à l'enfant
  • Note : À compléter - les FK tuteurId/parentId ne 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 :
  • EvaluationVulnerabiliteEnfant
  • EvaluationVulnerabiliteUtilisateur
  • ConfigCritere : 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 :
  • AccompagnementEnfant (1:N)
  • AccompagnementTypeAccompagnement (N:1)
  • AccompagnementUtilisateur (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 :
  • SuiviAccompagnementAccompagnement (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 :
  • FormationSensibilisationPersonneRessource (via animateurId, optionnel)
  • FormationSensibilisationCommune (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 :
  • ParticipationFormationFormationSensibilisation
  • typeParticipant + participantId forment 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

  1. Tuteur/Parent vs TuteursParents : La migration n'est pas terminée. Les FK tuteurId/parentId dans Enfant ne sont pas encore correctement reliées aux nouvelles tables.

  2. PersonneRessource : Prête à l'emploi, mais les participations forment un polymorphisme non typé.

  3. Relations manquantes :

  4. TuteurMaitreCoranique (relation inverse)
  5. ParentEnfant (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

  1. Créer le module Parents :
  2. DTO avec TypeLienParent
  3. Repository Prisma
  4. Use cases (Creer, Lister, Modifier, Supprimer)
  5. Routes /api/v1/esm/parents

  6. Mettre à jour le module Tuteurs :

  7. Retirer PERE/MERE/... de TypeLienTuteur
  8. Ajouter relation maitreCoran vers MaitreCoranique

  9. Mettre à jour les relations Enfant :

  10. Lier tuteurId → Tuteur
  11. Lier parentId → Parent (nouvelle table)

  12. Script de migration :

  13. Transfert TuteursParentsTuteurs + Parents
  14. Basé sur typeLien (PERE/MERE/... → Parents, TUTEUR_* → Tuteurs)