Aller au contenu

Audit de conformité FrontEnd — ProjetESM

Référence : ../spécs/2_REFERENCE_FRONTEND_FINAL.md
Architecture fonctionnelle : 20260613_1332_architecture-fonctionnelle.md
Date : 2026-06-16


Résumé exécutif

Zone Conformité Détail
Module auth (DDD 4 couches) ✅ Conforme Seul module 100 % DDD
ThemeProvider + Tailwind ✅ Conforme RGB sans virgule, 7 thèmes, caritas par défaut
ApiClient (auto-refresh 401) ✅ Conforme
Router (routes statiques → dynamiques) ✅ Conforme
10 autres modules (structure DDD) ❌ Non-conforme Structure plate sans 4 couches
Sidebar (hiérarchie + RBAC) ❌ Non-conforme Menu plat, RBAC 2 niveaux
Modules métier manquants ❌ Incomplet 5 modules absents de l'architecture

1. Points conformes ✅

1.1 Module auth — 100 % DDD

Structure complète des 4 couches : - domain/entities/ (User, Session), value-objects/ (Password, Token), ports/ (IAuthRepository, ISessionRepository, ITwoFactorRepository…) - application/dto/, use-cases/auth/ (Login, Logout, Refresh, Verify2FA), use-cases/profile/, use-cases/sessions/, use-cases/two-factor/ - infrastructure/api/, di/container.ts, repositories/, services/ (tokenManager, storage, validation) - presentation/hooks/ (useAuth, use2FA, useSession…), pages/, store/ (authStore, sessionStore)

1.2 ThemeProvider

  • Couleurs en format RGB sans virgule "79 70 229"
  • createContext avec valeur par défaut (pas de null) ✅
  • Persistance localStorage avec clés esm-theme-slug / esm-theme-custom
  • 7 thèmes définis : indigo, émeraude, rose, ambre, violet, ardoise, caritas
  • THEME_DEFAUT = caritasTheme

1.3 Tailwind config

  • Tokens sémantiques via rgb(var(--color-xxx) / <alpha-value>)
  • Sidebar tokens : sidebar.bg/text/active/hover/border
  • Palette états : success, warning, danger ✅

1.4 ApiClient

  • Gestion 401 + retry avec refresh automatique ✅
  • Alias @/ utilisé partout ✅
  • async/await partout ✅

2. Non-conformités critiques ❌

2.1 — 10 modules sans structure DDD

Modules concernés : enfants, accompagnements, tuteurs, maitresCoraniques, formations, evaluations, administration, rapports, referentiels, tableau-de-bord

Structure actuelle (plate) :

Modules/enfants/
├── api/enfants.api.ts         ← fonctions apiClient directes
├── hooks/useEnfants.ts        ← useQuery/useMutation appelant api/ directement
├── pages/
├── store/enfantsStore.ts      ← Zustand non-persistant, UI only
└── types/enfants.types.ts

Structure attendue (DDD) :

Modules/enfants/
├── domain/
│   ├── entities/Enfant.ts
│   ├── ports/IEnfantsRepository.ts
│   └── value-objects/
├── application/
│   ├── dto/dtos.ts
│   └── use-cases/ListerEnfantsUseCase.ts, ObtenirEnfantUseCase.ts...
├── infrastructure/
│   ├── api/enfants.api.ts
│   ├── repositories/EnfantsRepository.ts
│   └── di/container.ts
└── presentation/
    ├── hooks/useEnfants.ts     ← appelle container.useCase.execute()
    ├── pages/
    └── store/enfantsStore.ts  ← persist + createJSONStorage

Conséquences : - useEnfants appelle directement listerEnfants() au lieu de container.listerEnfantsUseCase.execute() - Aucun use case, aucune entité domain, aucun port de repository - Stores Zustand non persistants (pas de persist + createJSONStorage) - Types dans types/*.types.ts au lieu de application/dto/dtos.ts


2.2 — Sidebar non-conforme

Problèmes identifiés :

Défaut Détail
Menu plat Aucun sous-menu accordéon — 9 sections avec sous-items attendues
RBAC 2 niveaux Seul ADMIN est filtré ; COORDINATEUR n'existe pas côté FE
Sections manquantes Insertion socio-éco, Mobilisation communautaire, Sécurité & Audit
Items hors spec Evaluations et Import Excel dans le menu principal
Lien Profil absent ProfilePage existe mais n'est accessible que par URL directe

Visibilité RBAC attendue vs. actuelle :

Section Agent Coordinateur Admin Actuel
Tableau de bord ✅ partiel
Gestion enfants ✅ partiel
Accompagnements ✅ partiel
Insertion socio-éco ❌ absent
Acteurs de terrain ⚠️ incomplet
Sensibilisation ⚠️ partiel
Mobilisation ❌ absent
Pilotage & Indicateurs ⚠️ partiel
Administration
Sécurité & Audit ❌ absent

2.3 — Modules métier manquants

Module architecture Fichiers frontend actuels État
Module 3 — Parents (acteur) ❌ Absent
Module 5 — Insertion socio-éco ❌ Absent
Module 6 — Sensibilisation formations/ partiel ⚠️ Partiel
Module 7 — Mobilisation communautaire ❌ Absent
Module 8 — Études & Pilotage evaluations/ + rapports/ partiels ⚠️ Partiel
Module 9 — Audit applicatif ❌ Absent

Modules hors architecture (à clarifier) : - evaluations/ — absent de l'architecture fonctionnelle, à reclasser - import/ — utilitaire admin non défini, à conserver ou documenter


3. Corrections mineures

Défaut Fichier Correction
applyTheme() codé en dur ThemeProvider.tsx:18-48 Remplacer par boucle camelToKebab()
RegisterPage hors spec presentation/pages/RegisterPage.tsx Vérifier si inscription publique prévue
select: (res) => (res.data as any)?.donnees useEnfants.ts:22 Typer correctement sans any

4. Référence module modèle

Le module auth est la référence d'implémentation à dupliquer pour tous les autres modules.
Fichier d'entrée : FrontEnd/src/Modules/auth/index.ts


Document généré le 2026-06-16 — à mettre à jour après chaque mission de correction