# language: fr

@rgpd @data-retention
Fonctionnalité: Durée de conservation des données et purge automatique

  # 13.6 - 5 ans inactivité → purge automatique (principe de minimisation RGPD)

  Contexte:
    Étant donné que le système de purge automatique est actif

  # Règles de conservation

  Scénario: Auditeur inactif depuis 5 ans - suppression automatique
    Étant donné que je suis un auditeur (sans contenu créé)
    Et que je ne me suis pas connecté depuis le 2020-01-01
    Et que la date actuelle est 2025-01-02 (>5 ans)
    Quand le job de purge automatique s'exécute
    Alors mon compte est automatiquement supprimé
    Et toutes mes données personnelles sont effacées
    Et aucune trace ne subsiste dans la base de données

  Scénario: Créateur avec contenus actifs - conservation indéfinie
    Étant donné que je suis un créateur
    Et que j'ai créé 10 contenus qui reçoivent encore des écoutes
    Et que je ne me suis pas connecté depuis 6 ans
    Quand le job de purge automatique s'exécute
    Alors mon compte n'est pas supprimé
    Et mes données personnelles sont conservées tant que mes contenus sont écoutés
    Et mes contenus continuent d'être diffusés normalement

  Scénario: Créateur inactif sans écoutes - suppression automatique
    Étant donné que je suis un créateur
    Et que j'ai créé 5 contenus
    Et que je ne me suis pas connecté depuis 5 ans (depuis 2020-01-01)
    Et que mes contenus n'ont reçu aucune écoute depuis 2 ans (depuis 2023-01-01)
    Et que la date actuelle est 2025-01-02
    Quand le job de purge automatique s'exécute
    Alors mon compte est automatiquement supprimé
    Et mes contenus sont anonymisés (créateur = "Utilisateur supprimé")
    Et les fichiers audio restent disponibles mais anonymisés

  # Notifications avant suppression

  Scénario: Notifications par email avant purge
    Étant donné que je suis inactif depuis 4 ans et 9 mois
    Quand le système détecte que je suis éligible à la purge dans 90 jours
    Alors je reçois un email avec le sujet "Votre compte RoadWave sera supprimé dans 90 jours"
    Et l'email contient:
      """
      Bonjour,

      Votre compte RoadWave n'a pas été utilisé depuis plus de 4 ans.
      Conformément à notre politique de conservation des données, votre compte sera automatiquement supprimé dans 90 jours si vous ne vous connectez pas.

      Pour conserver votre compte, il suffit de vous connecter avant le [date limite].

      Date de dernière connexion: [date]
      Date de suppression prévue: [date + 90j]

      Si vous ne souhaitez pas conserver ce compte, aucune action n'est requise.
      """
    Et un lien de connexion est inclus dans l'email

  Scénario: Rappels à 90j, 30j et 7j avant suppression
    Étant donné que je suis éligible à la purge automatique
    Quand les délais s'écoulent
    Alors je reçois les emails suivants:
      | délai     | sujet email                                        |
      | 90 jours  | Votre compte sera supprimé dans 90 jours           |
      | 30 jours  | Rappel: Votre compte sera supprimé dans 30 jours   |
      | 7 jours   | Dernière alerte: suppression dans 7 jours          |
    Et chaque email contient un lien de connexion pour réactiver le compte
    Et les notifications push sont également envoyées si activées

  Scénario: Connexion annule la suppression programmée
    Étant donné que je suis éligible à la purge dans 15 jours
    Et que j'ai reçu plusieurs emails d'avertissement
    Quand je me connecte à mon compte
    Alors la suppression programmée est annulée immédiatement
    Et le compteur d'inactivité est remis à zéro
    Et je reçois un email de confirmation: "Votre compte a été réactivé"
    Et je peux continuer à utiliser l'application normalement

  # Job de purge automatique

  Scénario: Exécution quotidienne du job de purge
    Étant donné que le système est en production
    Quand on consulte les jobs planifiés
    Alors un job "purge_inactive_accounts" est configuré
    Et le job s'exécute tous les jours à 03:00 (heure creuse)
    Et le job identifie les comptes éligibles à la purge
    Et le job traite les suppressions automatiques

  Scénario: Critères d'éligibilité à la purge
    Étant donné que le job de purge s'exécute
    Quand le système identifie les comptes éligibles
    Alors les critères suivants sont appliqués:
      | type_compte                  | critères                                          |
      | Auditeur uniquement          | 5 ans sans connexion                              |
      | Créateur avec contenus actifs| Jamais (tant qu'écoutes)                          |
      | Créateur inactif             | 5 ans sans connexion + 2 ans sans écoute          |
    Et seuls les comptes remplissant tous les critères sont supprimés

  Scénario: Métriques du job de purge
    Étant donné que le job de purge s'exécute le 2025-01-15
    Quand le job se termine
    Alors un rapport est généré avec:
      | métrique                          | exemple |
      | Comptes analysés                  | 150 000 |
      | Comptes éligibles à la purge      | 350     |
      | Auditeurs supprimés               | 300     |
      | Créateurs inactifs supprimés      | 50      |
      | Créateurs conservés (actifs)      | 0       |
      | Erreurs                           | 0       |
      | Durée d'exécution                 | 45s     |
    Et le rapport est loggé pour audit

  # Contenus conservés après purge

  Scénario: Contenus de comptes purgés conservés anonymement
    Étant donné que mon compte créateur est purgé automatiquement
    Quand la suppression est effective
    Alors mes contenus créés sont conservés indéfiniment
    Et les contenus sont anonymisés (créateur = "Utilisateur supprimé")
    Et les fichiers audio restent sur le CDN
    Et les statistiques d'écoute sont préservées
    Et les utilisateurs peuvent toujours écouter mes contenus

  # Exception: créateurs avec écoutes régulières

  Scénario: Créateur inactif mais contenus populaires - pas de purge
    Étant donné que je suis un créateur inactif depuis 6 ans
    Mais que mes contenus reçoivent 500+ écoutes par mois
    Quand le job de purge s'exécute
    Alors mon compte n'est pas supprimé
    Et je continue de recevoir les emails d'avertissement tous les 6 mois
    Et mes contenus continuent d'être diffusés
    Et je peux me reconnecter à tout moment

  # Définition de "écoute" pour les créateurs

  Scénario: Qu'est-ce qu'une "écoute" pour le calcul d'inactivité
    Étant donné que je suis un créateur
    Quand le système calcule si mes contenus sont "actifs"
    Alors une "écoute" est comptabilisée si:
      | condition                              | comptabilisée |
      | Écoute complète (>80%)                 | oui           |
      | Écoute partielle (>30%)                | oui           |
      | Skip rapide (<30%)                     | non           |
      | Écoute par un bot (détecté)            | non           |
    Et au moins 1 écoute valide dans les 2 dernières années maintient le compte actif

  # Principe de minimisation RGPD

  Scénario: Conformité principe de minimisation
    Étant donné que le système de purge automatique est en place
    Quand un auditeur RGPD vérifie la conformité
    Alors le système respecte le principe de minimisation:
      | principe                                  | respecté |
      | Conservation limitée dans le temps        | oui      |
      | Suppression automatique après inactivité  | oui      |
      | Délai raisonnable (5 ans)                 | oui      |
      | Notifications préalables                  | oui      |
      | Exception justifiée (contenus actifs)     | oui      |
    Et le délai de 5 ans est conforme aux standards de l'industrie

  # Reset du compteur d'inactivité

  Scénario: Actions qui réinitialisent le compteur d'inactivité
    Étant donné que je suis inactif depuis 4 ans
    Quand j'effectue l'une des actions suivantes:
      | action                            |
      | Connexion à l'application         |
      | Publication d'un nouveau contenu  |
      | Like d'un contenu                 |
      | Abonnement à un créateur          |
      | Modification de mon profil        |
    Alors le compteur d'inactivité est remis à zéro
    Et la suppression programmée est annulée
    Et je ne suis plus éligible à la purge pour 5 ans

  # Logs d'audit

  Scénario: Traçabilité des suppressions automatiques
    Étant donné qu'un compte est supprimé automatiquement
    Quand la suppression est effective
    Alors un log d'audit est créé avec:
      | champ                      | valeur                       |
      | user_id                    | [ID anonymisé]               |
      | account_type               | auditeur / créateur          |
      | last_login                 | 2020-01-15T10:00:00Z         |
      | last_content_listen        | 2023-06-01T14:30:00Z         |
      | purge_date                 | 2025-01-15T03:00:00Z         |
      | notifications_sent         | 3 (90j, 30j, 7j)             |
      | reason                     | 5_years_inactivity           |
    Et le log est conservé 5 ans pour audit RGPD
    Et l'user_id est pseudonymisé pour anonymat

  # Cas particuliers

  Scénario: Compte Premium inactif - pas de privilège spécial
    Étant donné que je suis un utilisateur Premium
    Et que je suis inactif depuis 5 ans
    Quand le job de purge s'exécute
    Alors mon compte est supprimé comme un compte gratuit
    Et l'abonnement Premium ne prolonge pas la durée de conservation
    Et aucun remboursement n'est effectué (compte inactif depuis 5 ans)

  Scénario: Compte avec signalements de modération - purge différée
    Étant donné que je suis éligible à la purge
    Mais que j'ai des signalements de modération en cours
    Quand le job de purge s'exécute
    Alors ma purge est différée de 90 jours
    Et les signalements sont traités en priorité
    Et si les signalements aboutissent à un ban, le compte est supprimé immédiatement
    Et si les signalements sont infondés, la purge automatique reprend son cours

  # Durée de 5 ans - justification

  Scénario: Pourquoi 5 ans d'inactivité
    Étant donné que le délai de purge est fixé à 5 ans
    Quand on justifie ce choix
    Alors les raisons suivantes sont avancées:
      | justification                                           |
      | Standard de l'industrie (Google, Facebook: 2-3 ans)     |
      | Équilibre raisonnable entre minimisation et utilité     |
      | Conforme aux recommandations CNIL                       |
      | Laisse une marge de réactivation pour utilisateurs      |
      | Exception pour créateurs = intérêt légitime communauté  |

  # Communication transparente

  Scénario: Politique de conservation visible dans les CGU
    Étant donné que je consulte les CGU de RoadWave
    Quand je lis la section "Conservation des données"
    Alors la politique de purge automatique est clairement expliquée:
      """
      Conservation des données:
      - Comptes auditeurs: suppression automatique après 5 ans d'inactivité
      - Comptes créateurs: suppression après 5 ans d'inactivité + 2 ans sans écoute de leurs contenus
      - Exception: créateurs dont les contenus sont encore écoutés régulièrement
      - Notifications: 90j, 30j et 7j avant suppression
      - Contenus créés: conservés de manière anonyme après suppression du compte
      """
    Et les utilisateurs sont informés dès l'inscription
