Files
roadwave/docs/domains/_shared/entities/user-profile-history.md
jpgiannetti 23fe67470b docs: migrer schémas BDD de Mermaid vers DBML
Remplace les diagrammes Mermaid par DBML (via kroki-dbml) pour
une meilleure expressivité des schémas de base de données :
- Ajout support notes, contraintes et indexes détaillés
- Migration de tous les schémas d'entités partagées
- Ajout fichier exemple dbml-example.md
- Configuration plugin mkdocs-kroki pour rendu DBML
2026-02-12 20:49:02 +01:00

1.9 KiB

User Profile History

📖 Audit trail modifications profil (Article 16 RGPD - Droit de rectification)

Diagramme

Table users {
  id uuid [primary key]
  email varchar(255)
  username varchar(50)
  bio text
}

Table user_profile_history {
  id uuid [primary key]
  user_id uuid [not null, ref: > users.id]
  field_name profile_field_enum [not null, note: 'Champ modifié (email, username, bio, etc.)']
  old_value text [note: 'Valeur avant modification (NULL si création)']
  new_value text [not null, note: 'Nouvelle valeur']
  change_reason change_reason_enum [not null]
  ip_address inet [not null, note: 'IP de l origine du changement']
  changed_at timestamp [not null, default: `now()`]

  indexes {
    (user_id, changed_at) [note: 'Timeline modifications user (ordre chronologique)']
    (field_name, changed_at) [note: 'Track modifications par type de champ']
    (user_id, field_name) [note: 'Historique d un champ spécifique']
  }
}

Enum profile_field_enum {
  email [note: 'Re-vérification requise après changement']
  username [note: 'Limite: 1 changement/30j']
  bio [note: 'Biographie utilisateur']
  avatar_url [note: 'URL de l avatar']
  date_of_birth [note: 'Date de naissance']
}

Enum change_reason_enum {
  user_edit [note: 'Modification self-service utilisateur']
  admin_correction [note: 'Correction par admin (via backoffice)']
  gdpr_request [note: 'Suite demande RGPD formelle (droit de rectification)']
}

Légende

Champs trackés :

  • email: Re-vérification requise
  • username: Limite 1 changement/30j
  • bio, avatar_url, date_of_birth

Change reasons :

  • user_edit: Modification self-service utilisateur
  • admin_correction: Correction par admin
  • gdpr_request: Suite demande RGPD formelle

Audit :

  • Historique complet conservé (preuve légale)
  • Accessible utilisateur : "Historique de mes modifications"
  • Accessible DPO : investigations