Aller au contenu

Audit Routes Protégées - Diagnostic erreurs 500 (2026-06-08)

Problème signalé

  • 30 routes retournent 500 après authentification
  • /api/v1/paie/employes/ retourne 0 employés alors que la DB en contient 147

Cause racine identifiée

1. Architecture multi-tenant

Le système DDD Module utilise un filtrage par idUtilisateur sur toutes les entités : - employes.idUtilisateur → propriétaire de l'employé - declarations.idUtilisateur → propriétaire de la déclaration - bulletinsPaie.idUtilisateur → propriétaire du bulletin

2. Distribution des données

Utilisateur Email Rôle Employés
cmmuyz5z7000tn8ly34on80ir kanmaber@gmail.com role_super_admin 147
cmq4jglrb0001jjsurrwty8yk fullstack@test.com role_admin_caritas 0

3. Erreurs par catégorie

Module Routes 500 Cause
Employés 8/17 Pas de données liées à cet utilisateur
Déclarations 5/6 Pas de déclarations pour ce tenant
Configuration 10/17 Validation schéma sur champs requis
Bulletins 4/13 Pas de bulletins liés à ce tenant
Administration 2/9 Projets manquants

Vérifications effectuées

  • PostgreSQL local (127.0.0.1:5432) : ✅ Actif, 39 tables
  • Table employes : ✅ 147 enregistrements
  • Backend Docker (gestionfichepaie-backend) : ✅ Up, --network host

Recommandations

Pour un audit fonctionnel

  1. Utiliser kanmaber@gmail.com (role_super_admin) - propriétaire des données
  2. Seeder des données pour fullstack@test.com - créer employés/projets test

Pour le développement

  • L'audit actuel validé la logique multi-tenant : les routes protégées fonctionnent, mais retournent des résultats vides car le tenant n'a pas de données

Tests supplémentaires

✅ Seeding effectué : 3 employés, 2 déclarations, 1 projet, 1 bulletin créés pour fullstack@test.com

Résultats après seeding

  • Routes GET : ✅ 200 avec données existantes
  • Routes PUT : ✅ 200 (modification employé)
  • Routes POST fonctionnelles : ✅ 5/9 créent avec bons payloads

Routes POST validées

Route Status Payload clé
POST /api/v1/paie/employes/ 201 nom, prenoms, fonction, salaireBase, dateEmbauche
POST /api/v1/paie/employes/:id/oppositions 201 type, reference, montant, dateDebut
POST /api/v1/paie/configuration/primes/templates 201 code, nom, typeCalcul: MONTANT_FIXE
POST /api/v1/paie/configuration/its 201 nom, taux1, tranche1, dateDebut
POST /api/v1/paie/configuration/cnss 201* Contraintes uniques par date

*201 avec date différente

Pattern des erreurs POST

  1. Enums mal orthographiées (ex: FIXEMONTANT_FIXE)
  2. Contraintes uniques (CNSS: idUtilisateur+dateDebut)
  3. Nested creates manquants (projets: idOrganisation, utilisateur.create)

Conclusion

  • Audit fonctionnel validé : le système multi-tenant filtre correctement
  • Documentation des payloads : nécessaire pour les routes POST complexes