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
66 lines
1.9 KiB
Markdown
66 lines
1.9 KiB
Markdown
# User Profile History
|
|
|
|
📖 Audit trail modifications profil (Article 16 RGPD - Droit de rectification)
|
|
|
|
## Diagramme
|
|
|
|
```kroki-dbml
|
|
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
|