# Anonymisation automatique GPS après 24h ```mermaid sequenceDiagram participant User as Utilisateur participant App as Application participant DB as Base de données (PostGIS) participant Cron as Job Cron Quotidien Note over User,App: Écoute de contenu avec GPS User->>App: Écoute contenu (GPS activé) App->>App: Capturer position GPS précise App->>DB: INSERT position (lat, lon, anonymized: false) Note over DB: Position précise stockée
Utilisée pour recommandations Note over DB,Cron: Moins de 24h : position précise conservée App->>DB: SELECT positions pour recommandations DB->>App: Positions GPS précises (< 24h) App->>User: Recommandations hyperlocales Note over Cron: 24h+ plus tard Cron->>DB: SELECT positions WHERE created_at < NOW() - 24h AND anonymized = false DB->>Cron: Liste positions à anonymiser loop Pour chaque position Cron->>DB: Convertir (lat, lon) → geohash précision 5 (~5km²) Cron->>DB: UPDATE position avec geohash Cron->>DB: Supprimer coordonnées précises Cron->>DB: SET anonymized = true end Cron->>DB: Log anonymisation (nombre positions traitées) Note over DB: Positions anonymisées utilisées pour analytics App->>DB: SELECT positions anonymisées (analytics globales) DB->>App: Positions geohash uniquement App->>App: Générer heatmap trafic (~5km² précision) Note over User: Exception : historique personnel User->>App: Consulter "Mon historique d'écoute" App->>DB: SELECT historique personnel utilisateur DB->>App: Positions précises conservées (tant que compte actif) App->>User: Trajets détaillés ``` **Légende** : - **< 24h** : GPS précis conservé (recommandations hyperlocales) - **> 24h** : Conversion automatique en geohash précision 5 (~5km²) - **Exception** : Historique personnel conservé intact tant que compte actif - **Analytics** : Uniquement positions anonymisées (geohash)