# Privacy Policy Versions 📖 Versioning politique de confidentialité (Articles 13-14 RGPD) ## Diagramme ```kroki-dbml Table privacy_policy_versions { id uuid [primary key] version varchar(10) [not null, unique, note: 'Format: v1.0, v2.0, etc.'] content_markdown text [not null, note: 'Source: docs/legal/politique-confidentialite.md (versionné Git)'] major_change boolean [not null, default: false, note: 'true = popup obligatoire pour tous les users'] changelog text [not null, note: 'Résumé des changements pour communication'] effective_date timestamp [not null, note: 'Date d entrée en vigueur de cette version'] created_at timestamp [not null, default: `now()`] indexes { (version) [unique] (effective_date) [note: 'Order versions chronologically'] } } Table users { id uuid [primary key] } Table user_policy_acceptances { id uuid [primary key] user_id uuid [not null, ref: > users.id] policy_version_id uuid [not null, ref: > privacy_policy_versions.id] accepted boolean [not null, note: 'true = accepté, false = refusé (compte gelé)'] accepted_at timestamp [not null, default: `now()`] ip_address inet [not null, note: 'IP de l utilisateur lors de l acceptation (preuve CNIL)'] indexes { (user_id, policy_version_id) [unique, note: 'Un user ne peut accepter qu une fois une version'] (user_id, accepted_at) [note: 'Historique acceptations user'] (policy_version_id) [note: 'Count acceptances par version'] } } ``` ## Légende **Versioning** : - `major_change`: `true` → popup obligatoire pour tous les utilisateurs - `major_change`: `false` → notification simple - Fichier source : `docs/legal/politique-confidentialite.md` (versionné Git) **Popup si changement majeur** : - Utilisateur doit accepter nouvelle version pour continuer - Refus → compte gelé (lecture seule)