# User Consents 📖 Consentements RGPD avec historique et versioning ## Diagramme ```kroki-dbml Table users { id uuid [primary key] } Table user_consents { id uuid [primary key] user_id uuid [not null, ref: > users.id] consent_type consent_type_enum [not null] consent_version varchar(10) [not null, note: 'Format: v1.0, v2.0, etc.'] accepted boolean [not null, note: 'true = opted-in, false = opted-out'] given_at timestamp [not null, default: `now()`] ip_address inet [not null, note: 'Proof of consent for CNIL audits'] user_agent text [not null, note: 'Device/browser proof'] indexes { (user_id, consent_type, consent_version) [note: 'Latest consent per type'] (user_id, given_at) [note: 'Consent history timeline'] } } Enum consent_type_enum { geolocation_precise [note: 'Géolocalisation GPS précise (obligatoire pour contenu hyperlocal)'] analytics [note: 'Analytics Matomo (optionnel)'] push_notifications [note: 'Notifications push (optionnel)'] cookies_analytics [note: 'Cookies analytiques (optionnel)'] } ``` ## Légende **Types de consentement** : - `geolocation_precise` : Géolocalisation GPS précise (obligatoire pour contenu hyperlocal) - `analytics` : Analytics Matomo (optionnel) - `push_notifications` : Notifications push (optionnel) - `cookies_analytics` : Cookies analytiques (optionnel) **Versioning** : - Chaque changement de CGU/politique = nouvelle version - Historique complet conservé (preuve légale) - Format version : `v1.0`, `v2.0`, etc. **Conformité RGPD** : - Granularité : fonctionnel / analytique / marketing - Consentement libre et éclairé - Révocable à tout moment - Historique = preuve en cas de contrôle CNIL