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
2.0 KiB
2.0 KiB
Account Deletions
📖 Suppressions de compte avec grace period 30 jours (Article 17 RGPD)
Diagramme
Table users {
id uuid [primary key]
email varchar(255)
status varchar(20)
}
Table account_deletions {
id uuid [primary key]
user_id uuid [not null, unique, ref: - users.id, note: 'One-to-one: un user ne peut avoir qu une seule demande active']
status deletion_status_enum [not null, default: 'pending']
cancellation_token varchar(64) [unique, note: 'Token dans email pour annuler (expire après 30j)']
requested_at timestamp [not null, default: `now()`]
effective_at timestamp [not null, note: 'Auto-calculated: requested_at + 30 days']
cancelled_at timestamp [note: 'Timestamp annulation via lien email (NULL si non annulé)']
deleted_at timestamp [note: 'Timestamp suppression effective (NULL si pending/cancelled)']
deletion_reason text [note: 'Raison optionnelle fournie par l utilisateur']
deleted_data_summary jsonb [note: 'Résumé des données supprimées (audit trail)']
indexes {
(user_id) [unique]
(status, effective_at) [note: 'Daily cron job: WHERE status = pending AND effective_at < NOW()']
(cancellation_token) [unique]
}
}
Enum deletion_status_enum {
pending [note: 'Grace period actif (30j), compte désactivé, annulation possible']
cancelled [note: 'Utilisateur a annulé via lien email']
completed [note: 'Suppression effective réalisée après 30j']
}
Légende
Statuts :
pending: Grace period actif (30j), compte désactivé, annulation possiblecancelled: Utilisateur a annulé via lien emailcompleted: Suppression effective réalisée après 30j
Processus :
- Demande → compte désactivé, contenus cachés
- Email avec
cancellation_token(valide 30j) - Si annulation →
status = cancelled, compte réactivé - Si 30j écoulés → job cron supprime données, anonymise contenus
Données supprimées :
- Profil utilisateur, historique GPS/écoute, sessions
- Contenus créés : anonymisés (
créateur = "Utilisateur supprimé")