Files
SIRH/doc/audit-logging.md
tristan 057d6bf06f
Some checks failed
Auto Tag Develop / tag (push) Has been cancelled
[#SIRH-17] Ajouter un système de log des actions utilisateurs (#9)
| Numéro du ticket | Titre du ticket |
|------------------|-----------------|
|                  |                 |

## Description de la PR

## Modification du .env

## Check list

- [ ] Pas de régression
- [ ] TU/TI/TF rédigée
- [ ] TU/TI/TF OK
- [ ] CHANGELOG modifié

Reviewed-on: #9
Co-authored-by: tristan <tristan@yuno.malio.fr>
Co-committed-by: tristan <tristan@yuno.malio.fr>
2026-03-30 07:52:49 +00:00

2.3 KiB

Journal des actions (Audit Log)

Objectif

Tracer les actions utilisateurs pour diagnostiquer rapidement les problèmes de calcul signalés. Quand un utilisateur signale une incohérence dans ses heures, RTT ou congés, le journal permet de voir exactement ce qui a été modifié, par qui, et quand.

Accès

  • Rôle requis : ROLE_SUPER_ADMIN (rôle caché, non visible dans l'interface de gestion des utilisateurs)
  • Ajout du rôle : directement en base de données
    UPDATE users SET roles = '["ROLE_ADMIN","ROLE_SUPER_ADMIN"]' WHERE username = 'xxx';
    
  • Page : /audit-logs (lien "Journal" dans la sidebar, visible uniquement avec le rôle)

Actions tracées

Processor Entité Actions
AbsenceWriteProcessor Absence create, delete
WorkHourBulkUpsertProcessor WorkHour create, update, delete
WorkHourSiteValidationProcessor WorkHour site_validate
WorkHourBulkValidationProcessor WorkHour validate
WorkHourBulkSiteValidationProcessor WorkHour site_validate
EmployeeWriteProcessor Employee create, update (changement contrat)
ContractSuspensionWriteProcessor ContractSuspension create, update
EmployeeRttPaymentProcessor EmployeeRttPayment update
EmployeeFractionedDaysProcessor EmployeeLeaveBalance update

Données stockées

Chaque entrée contient :

  • employee : l'employé concerné (FK, nullable)
  • username : l'utilisateur qui a effectué l'action
  • action : type d'action (create, update, delete, validate, site_validate)
  • entityType : type d'entité (work_hour, absence, employee, etc.)
  • description : description lisible en français
  • changes : diff JSON {old: {...}, new: {...}} avec les anciennes/nouvelles valeurs
  • affectedDate : date de travail ou début d'absence (pour filtrage par période)
  • createdAt : horodatage de l'action

Filtres disponibles

  • Par employé
  • Par plage de dates (date affectée)
  • Par type d'entité

Pagination

Les résultats sont paginés par 50 entrées. L'API retourne {items, total, page, perPage} et accepte un query param page.

Convention

Tout nouveau processor traitant des entités impactant les calculs (heures, absences, contrats, RTT) doit intégrer le service AuditLogger et logger les actions create/update/delete.