Couverture Backend — Architecture Fonctionnelle vs Implémentation¶
Date : 2026-06-15 12:36
Référence : 20260613_1332_architecture-fonctionnelle.md
Périmètre : BackEnd — 16 modules DDD analysés
Synthèse exécutive¶
| Modules fonctionnels | Implémentés | Partiels | Manquants |
|---|---|---|---|
| 9 modules architecture | 6 | 2 | 1 |
| Modèles Prisma couverts | Modèles sans API dédiée |
|---|---|
| 35 / 40 | 5 (CasOriente, PersonneRessource, AuditLog, Permission, ProfilPermission) |
1. Correspondance par module fonctionnel¶
Module 1 — Authentification & Sécurité ✅ COMPLET¶
Module backend : Auth
| Cas d'utilisation | Implémenté | Use case |
|---|---|---|
| Inscription compte utilisateur | ✅ | InscrireUtilisateurUseCase |
| Connexion + 2FA (TOTP / email) | ✅ | ConnexionUseCase, Verifier2FAUseCase, EnvoyerCode2FAUseCase |
| Gestion sessions (multi-appareils, expiration) | ✅ | ListerSessionsActivesUseCase, RevoquerSessionUseCase, RevoquerToutesSessionsUseCase |
| Réinitialisation mot de passe par token | ✅ | DemanderResetPasswordUseCase, ResetPasswordUseCase, VerifierTokenResetUseCase |
| Détection + blocage force brute | ✅ | BloquerIPUseCase, DetecterConnexionsSuspectesUseCase |
| Blacklistage IP suspectes | ✅ | BloquerIPUseCase, DebloquerIPUseCase |
| Backup codes 2FA | ✅ | GenererBackupCodesUseCase, VerifierBackupCodeUseCase, RevoquerCodesRecuperationUseCase |
| Journal sécurité | ✅ | ObtenirLogsSecuriteUseCase, ObtenirHistoriqueUseCase |
| Activation 2FA / désactivation | ✅ | Activer2FAUseCase, Desactiver2FAUseCase |
| Profil utilisateur | ✅ | ObtenirProfilUseCase, ModifierProfilUseCase, SupprimerCompteUseCase |
Note : Le module Auth n'est pas enregistré via l'auto-discovery (
*.module.routes.tsabsent). Ses routes sont probablement montées manuellement dansserver.tsouAppDIConfiguration.ts.
Module 2 — Administration & Référentiels ⚠️ PARTIEL¶
Modules backend : Administration + Referentiels
| Cas d'utilisation | Implémenté | Module backend |
|---|---|---|
| Référentiel géographique (communes) | ✅ | Referentiels — CRUD communes |
| Types d'accompagnement | ✅ | Referentiels — CRUD types |
| Profils utilisateurs | ✅ | Referentiels — CRUD profils |
| Configuration critères vulnérabilité | ✅ | Referentiels — Lister/Modifier ConfigCritere |
| Gestion utilisateurs (vue admin) | ✅ | Administration — CRUD + reset MDP + déblocage |
| Personnes-ressources (intervenants, animateurs) | ❌ | ABSENT |
| ActionAudit / RessourceAudit (référentiels d'audit) | ⚠️ | Schéma Prisma existant, pas de routes de gestion |
Ce qui manque :
- Module ou sous-routes PersonneRessource (CRUD complet : intervenants, animateurs, formateurs, avec type TypePersonneRessource)
Module 3 — Gestion des Acteurs de Terrain ✅ COMPLET¶
Modules backend : MaitresCoraniques + Tuteurs + Parents
| Cas d'utilisation | Implémenté | Module backend |
|---|---|---|
| Maîtres coraniques (daara) : CRUD + localisation | ✅ | MaitresCoraniques |
| Tuteurs légaux et communautaires | ✅ | Tuteurs |
| Parents biologiques | ✅ | Parents |
| Association Parent ↔ Enfant | ✅ | Parents — AssocierEnfantParentUseCase |
Module 4 — Identification & Suivi des Enfants ⚠️ PARTIEL¶
Modules backend : Enfants + Accompagnements + Evaluations (extension)
| Cas d'utilisation | Implémenté | Module backend |
|---|---|---|
| Identification + enregistrement enfant talibé | ✅ | Enfants — CRUD |
| Suivi statut enregistrement (actif/sorti/perdu/décédé) | ✅ | Enfants — ChangerStatutEnfantUseCase |
| Ouverture dossier accompagnement | ✅ | Accompagnements — CreerAccompagnementUseCase |
| Visites de suivi sur accompagnement | ✅ | Accompagnements — CreerSuiviUseCase, ListerSuivisUseCase |
| Clôture + changement statut accompagnement | ✅ | Accompagnements — ChangerStatutAccompagnementUseCase |
| Évaluation vulnérabilité (6 critères) | ✅ | Evaluations — 5 use cases (module non prévu dans l'architecture initiale) |
| Orientation formelle vers services externes (CasOriente) | ❌ | ABSENT |
Ce qui manque :
- Sous-ressource CasOriente dans Accompagnements — routes : GET/POST /accompagnements/:id/cas-orientes, PUT/DELETE /accompagnements/:accompagnementId/cas-orientes/:casId
- Champs : serviceDestinataire, typeOrientation, dateOrientation, dateRetourInfo, suitesDonnees
Module 5 — Insertion Socio-Économique ✅ COMPLET¶
Module backend : Insertion
| Cas d'utilisation | Implémenté | Use case |
|---|---|---|
| Inscription formation professionnelle | ✅ | CreerParcoursInsertionUseCase |
| Suivi CQM (certificat qualification) | ✅ | ChangerStatutUseCase → CQM_OBTENU |
| Suivi plan d'affaires + micro-subvention | ✅ | Statut INSTALLE |
| Traçabilité du parcours complet | ✅ | Transitions EN_FORMATION → CQM_OBTENU → INSTALLE |
Module 6 — Sensibilisation & Communication ✅ COMPLET¶
Module backend : Formations (contient aussi la sensibilisation)
| Cas d'utilisation | Implémenté | Use case / Handler |
|---|---|---|
| Formations / sessions de sensibilisation | ✅ | CreerFormationUseCase + participations + présence |
| Traçabilité des participants | ✅ | AjouterParticipationUseCase, TogglePresenceUseCase |
| Supports de communication | ✅ | CreerSupportUseCase, ListerSupportsUseCase |
| Distributions de supports par commune | ✅ | CreerDistributionUseCase |
| Émissions radio | ✅ | CreerEmissionUseCase, ModifierEmissionUseCase |
| Éducateurs pairs | ✅ | CreerEducateurUseCase, ModifierEducateurUseCase |
Module 7 — Mobilisation Communautaire & Gouvernance ✅ COMPLET¶
Module backend : Mobilisation
| Cas d'utilisation | Implémenté | Routes |
|---|---|---|
| Comités villageois — CRUD + cycle de vie | ✅ | GET/POST /comites, PATCH /comites/:id/statut |
| Membres des comités | ✅ | GET/POST /comites/:id/membres |
| Réunions de comité | ✅ | GET/POST /comites/:id/reunions |
| Cadres de concertation (multi-niveaux) | ✅ | GET/POST /cadres-concertation |
| Sessions de concertation | ✅ | GET/POST /cadres-concertation/:id/sessions |
| Groupes de parole / parlements jeunes | ✅ | GET/POST /sessions-parole |
| Participations aux sessions (genre, tranche d'âge) | ✅ | GET/POST /sessions-parole/:id/participations |
Module 8 — Études, Diagnostic & Pilotage ✅ COMPLET¶
Modules backend : Pilotage + Rapports
| Cas d'utilisation | Implémenté | Module |
|---|---|---|
| Études diagnostiques communales | ✅ | Pilotage — CRUD EtudeDiagnostique |
| Indicateurs de suivi (définition + cibles) | ✅ | Pilotage — CRUD IndicateurSuivi |
| Saisie périodique des mesures | ✅ | Pilotage — SaisirMesureUseCase, ModifierMesureUseCase |
| Tableau de bord analytique | ✅ | Rapports — ObtenirTableauDeBordUseCase |
| KPIs par période | ✅ | Rapports — ObtenirKPIsPeriodeUseCase |
| Répartitions géographiques et thématiques | ✅ | Rapports — 3 use cases répartition |
| Fiche enfant | ✅ | Rapports — ObtenirFicheEnfantUseCase |
| Bilan formation | ✅ | Rapports — ObtenirBilanFormationUseCase |
Module 9 — Audit Applicatif ❌ ABSENT¶
Module backend : aucun module dédié
| Cas d'utilisation | Implémenté | Situation actuelle |
|---|---|---|
| Traçabilité des actions utilisateurs | ⚠️ | AuditLog écrit via Auth, pas de route de lecture |
| Journal d'audit consultable | ❌ | Pas de route GET /audit |
| Filtres (acteur, action, ressource, IP, période) | ❌ | Pas implémenté |
| Consultation historique pour contrôle interne | ❌ | Pas implémenté |
2. Modules backend sans correspondance directe dans l'architecture¶
| Module backend | Rôle | Lien fonctionnel |
|---|---|---|
Evaluations |
Évaluation de vulnérabilité des enfants (6 critères, score, niveau N1-N4) | Extension du Module 4 — complète le dossier enfant |
ImportExcel |
Import de données en masse via fichier Excel | Utilitaire transverse — alimentation initiale de la base |
Synchronisation |
Synchronisation offline/online (delta sync par idUtilisateur) | Utilitaire — support des agents de terrain sans connexion permanente |
3. Modèles Prisma sans API dédiée¶
| Modèle Prisma | Module architecture | Situation |
|---|---|---|
CasOriente |
Module 4 | Schéma existant, aucune route ni use case — à implémenter |
PersonneRessource |
Module 2 | Schéma existant, aucune route ni use case — à implémenter |
AuditLog |
Module 9 | Données écrites par Auth, aucune route de consultation — à implémenter |
Permission |
Transverse RBAC | Seed existant (30 permissions), pas d'API de gestion publique |
ProfilPermission |
Transverse RBAC | Seed existant, pas d'API de gestion publique |
4. Ce qui reste à implémenter¶
Priorité 1 — Fonctionnalités métier manquantes¶
4.1 CasOriente (Module 4 — Accompagnements)¶
Intégrer comme sous-ressource du module Accompagnements.
Routes à ajouter :
GET /api/v1/esm/accompagnements/:id/cas-orientes — lister les cas orientés
POST /api/v1/esm/accompagnements/:id/cas-orientes — créer une orientation
GET /api/v1/esm/accompagnements/:id/cas-orientes/:casId — obtenir un cas
PUT /api/v1/esm/accompagnements/:id/cas-orientes/:casId — modifier (suites données)
DELETE /api/v1/esm/accompagnements/:id/cas-orientes/:casId — supprimer
Use cases : CreerCasOriente, ObtenirCasOriente, ListerCasOrientes, ModifierCasOriente, SupprimerCasOriente
4.2 PersonneRessource (Module 2 — Referentiels)¶
Ajouter au module Referentiels (ou créer un module PersonnesRessources séparé).
Routes à ajouter :
GET /api/v1/esm/personnes-ressources — lister (filtre par type, commune)
POST /api/v1/esm/personnes-ressources — créer
GET /api/v1/esm/personnes-ressources/:id — obtenir
PUT /api/v1/esm/personnes-ressources/:id — modifier
DELETE /api/v1/esm/personnes-ressources/:id — supprimer
Use cases : CreerPersonneRessource, ListerPersonnesRessources, ObtenirPersonneRessource, ModifierPersonneRessource, SupprimerPersonneRessource
4.3 Module Audit Applicatif (Module 9)¶
Créer un module Audit dédié ou étendre Administration.
Routes à ajouter :
GET /api/v1/esm/audit/logs — journal d'audit (filtre : acteur, action, ressource, période, IP)
GET /api/v1/esm/audit/logs/:id — détail d'un log
Use cases : ListerLogsAudit, ObtenirLogAudit, (ExporterLogsAudit optionnel)
Priorité 2 — Module Auth : routes auto-discovery¶
Le module Auth n'a pas de fichier auth.module.routes.ts (routes montées manuellement).
Si la cohérence avec le système auto-discovery est requise, créer :
- Auth/infrastructure/http/routes/auth.module.routes.ts
Priorité 3 — RBAC : API de gestion (optionnel)¶
Les modèles Permission et ProfilPermission sont seeded (30 permissions, 5 profils) mais sans API de gestion.
Si une interface d'administration des permissions est nécessaire :
GET /api/v1/esm/admin/permissions
GET /api/v1/esm/admin/profils/:id/permissions
PUT /api/v1/esm/admin/profils/:id/permissions — affecter permissions à un profil
5. Tableau de bord récapitulatif¶
| Module architecture | Backend module(s) | Statut | Lacune |
|---|---|---|---|
| M1 — Auth & Sécurité | Auth |
✅ Complet | Routes hors auto-discovery |
| M2 — Admin & Référentiels | Administration + Referentiels |
⚠️ Partiel | PersonneRessource manquant |
| M3 — Acteurs de terrain | MaitresCoraniques + Tuteurs + Parents |
✅ Complet | — |
| M4 — Enfants & Accompagnements | Enfants + Accompagnements + Evaluations |
⚠️ Partiel | CasOriente manquant |
| M5 — Insertion | Insertion |
✅ Complet | — |
| M6 — Sensibilisation | Formations |
✅ Complet | — |
| M7 — Mobilisation | Mobilisation |
✅ Complet | — |
| M8 — Pilotage | Pilotage + Rapports |
✅ Complet | — |
| M9 — Audit | (absent) | ❌ Manquant | Module entier à créer |
| (hors archi) | Evaluations |
➕ Extension | Complète M4 |
| (hors archi) | ImportExcel |
➕ Utilitaire | Import masse |
| (hors archi) | Synchronisation |
➕ Utilitaire | Offline/online |
Score couverture fonctionnelle : 6 modules complets + 2 partiels + 1 absent = 75 % des modules architecture
Score couverture modèles Prisma : 35 / 40 modèles avec API dédiée = 87,5 %
Document généré le 2026-06-15 12:36