Journal d'audit (AuditLog)
En une phrase : la mémoire infalsifiable de la plateforme — qui a fait quoi, quand, sur quelle ressource, et sous quelle casquette.
Rôle métier
Le journal existe d'abord pour deux besoins d'affaires : suivre l'émission et l'activation des cartes-cadeaux et instruire les litiges B2B avec les partenaires (« qui a annulé ce lot ? quand ce code a-t-il été consommé ? »). Par extension, chaque endpoint qui modifie la base écrit au moins une entrée — le journal est la piste d'audit générale du back-office.
Chaque entrée raconte une action complète :
- qui — l'utilisateur authentifié (ou personne, pour un invité), avec la casquette déclarée au moment de l'action (voyageur, super-admin, organisation — et laquelle) ;
- quoi — l'événement (création, modification, suppression, ou un verbe métier :
login,generated,status_updated…) et le détail des champs modifiés ; - sur quoi — la ressource touchée (utilisateur, organisation, code d'activation, prestataire…) ;
- dans quel contexte — la requête HTTP d'origine (IP, méthode, chemin).
Ce qui est tracé — et ce qui ne l'est pas
- Les entités du domaine sont auditées automatiquement à chaque modification ; les opérations en lot ou hors modèle (login, génération de codes, acceptation d'invitation…) écrivent des entrées explicites.
- Jamais de secrets : mots de passe, tokens (même hachés) et identifiants de connexion sont exclus à l'écriture — le journal peut être montré sans rédaction.
- Exclusions délibérées : le va-et-vient des tokens d'API (bruit — les flux d'auth ont leurs entrées dédiées) et les données de seed.
- L'appartenance à une organisation est rapportée à la personne concernée, l'organisation en contexte.
Cycle de vie
Append-only : une entrée ne se modifie ni ne se supprime par l'application. L'entrée d'audit vit dans la même transaction que l'écriture qu'elle décrit : une opération annulée n'en laisse aucune trace. La durée de rétention (litiges B2B) est une décision produit encore ouverte — aucune purge n'est planifiée à ce jour.
Relations métier
| Relation | Sens métier |
|---|---|
| → Utilisateur (causer) | L'auteur de l'action ; nul pour un invité (ex. tentative de reset de mot de passe) |
| → toute entité du domaine (subject) | La ressource sur laquelle l'action a porté |
Règles métier
- Consultation réservée aux super-admins, du plus récent au plus ancien, filtrable par période.
- Le journal est un registre, pas un flux applicatif : rien dans le produit ne doit dépendre de sa lecture pour fonctionner.
Détail des mécanismes : Journal d'audit.

