Règles RGPD (docs/domains/_shared/rules/rgpd.md): - Ajouter sections 13.11-13.22 (droits utilisateurs, mineurs, sécurité) - Droit de rectification, opposition, limitation du traitement - Gestion des mineurs: 13 ans minimum + consentement parental 13-15 ans - Protection renforcée: RoadWave Kids pour < 13 ans - Sécurité: chiffrement multi-niveaux, procédure breach 72h CNIL - Politique de confidentialité avec versioning - Sous-traitants, DPIA, délais de réponse Entités (6 nouvelles): - PARENTAL_CONSENTS + PARENTAL_CONTROLS (workflow 13-15 ans) - PRIVACY_POLICY_VERSIONS + USER_POLICY_ACCEPTANCES - ACCOUNT_DELETIONS (grace period 30j) - BREACH_INCIDENTS + BREACH_AFFECTED_USERS - USER_PROFILE_HISTORY (audit trail rectification) - DATA_RETENTION_LOGS (purge 5 ans) Diagrammes séquences (5 nouveaux): - Consentement parental avec validation email - Anonymisation GPS automatique après 24h - Notification breach CNIL (procédure 72h) - Export données asynchrone - Suppression compte avec grace period Cycles de vie (3 nouveaux + 1 enrichi): - parental-consent-lifecycle.md - breach-incident-lifecycle.md - account-deletion-lifecycle.md - user-account-lifecycle.md (ajout états mineurs, frozen) Features BDD (4 nouvelles, 195 scénarios RGPD): - minors-protection.feature (9 scénarios) - data-security.feature (12 scénarios) - privacy-policy.feature (8 scénarios) - user-rights.feature (8 scénarios) Infrastructure: - Réorganiser docs générées: docs/bdd + output → generated/bdd + generated/pdf - Mettre à jour mkdocs.yml, Makefile, scripts Python - Ajouter /generated/ au .gitignore
66 lines
2.2 KiB
Markdown
66 lines
2.2 KiB
Markdown
# Export de données (portabilité)
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant User as Utilisateur
|
|
participant App as Application
|
|
participant DB as Base de données
|
|
participant Queue as File d'attente
|
|
participant Worker as Worker Background
|
|
participant CDN as CDN (fichiers audio)
|
|
participant Storage as Stockage temporaire
|
|
participant Email as Service Email
|
|
|
|
User->>App: Demande export données
|
|
|
|
App->>DB: Vérifier dernière demande
|
|
alt Dernière demande < 30 jours
|
|
DB->>App: Demande refusée
|
|
App->>User: "Prochain export disponible dans X jours"
|
|
else Demande autorisée
|
|
App->>DB: Créer demande export (statut: pending)
|
|
App->>Queue: Ajouter job export
|
|
App->>User: "Export en cours, email sous 48h"
|
|
|
|
Queue->>Worker: Job export disponible
|
|
|
|
Note over Worker: Génération asynchrone
|
|
|
|
Worker->>DB: Récupérer profil utilisateur
|
|
Worker->>DB: Récupérer historique d'écoute
|
|
Worker->>DB: Récupérer contenus créés (métadonnées)
|
|
Worker->>DB: Récupérer centres d'intérêt
|
|
Worker->>DB: Récupérer historique consentements
|
|
|
|
Worker->>CDN: Télécharger fichiers audio utilisateur
|
|
CDN->>Worker: Fichiers audio (.opus)
|
|
|
|
Worker->>Worker: Générer export.json (machine-readable)
|
|
Worker->>Worker: Générer index.html (human-readable)
|
|
Worker->>Worker: Générer README.txt
|
|
Worker->>Worker: Créer archive ZIP
|
|
|
|
Worker->>Storage: Stocker ZIP (expire 7j)
|
|
Storage->>Worker: URL signée (expire 7j)
|
|
|
|
Worker->>DB: Mettre à jour demande (statut: completed)
|
|
Worker->>DB: Enregistrer URL + date expiration
|
|
|
|
Worker->>Email: Envoyer email avec lien
|
|
Email->>User: Email + lien téléchargement (valide 7j)
|
|
|
|
User->>Storage: Clic lien téléchargement
|
|
Storage->>User: Téléchargement ZIP
|
|
|
|
Note over Storage: Après 7 jours
|
|
|
|
Storage->>Storage: Suppression automatique ZIP
|
|
end
|
|
```
|
|
|
|
**Légende** :
|
|
- Limite : 1 export / 30 jours (anti-abus)
|
|
- Délai génération : 48h maximum (conformité RGPD Article 20)
|
|
- Expiration lien : 7 jours
|
|
- Format : ZIP contenant JSON, HTML, audio, README
|