Files
roadwave/features/mode-offline/validite-renouvellement.feature
2026-01-31 11:45:11 +01:00

336 lines
14 KiB
Gherkin
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# language: fr
Fonctionnalité: Validité et renouvellement contenus offline
En tant qu'utilisateur
Je veux que mes contenus téléchargés restent valides un certain temps
Afin de garantir la légalité et la fraîcheur du contenu
Contexte:
Étant donné que je suis connecté à l'application RoadWave
Et que j'ai des contenus téléchargés
# ===== DURÉE DE VALIDITÉ =====
Scénario: Validité de 30 jours après téléchargement
Étant donné que je télécharge un contenu le 1er juin 2025
Quand le téléchargement est terminé
Alors le contenu est valide jusqu'au 1er juillet 2025 (30 jours)
Et la date d'expiration est stockée en local
Scénario: Affichage date expiration sur contenu téléchargé
Étant donné que j'ai téléchargé un contenu il y a 20 jours
Quand je consulte les détails du contenu
Alors je vois "Expire dans 10 jours"
Et je sais combien de temps il reste avant expiration
Scénario: Standard industrie aligné (Spotify, YouTube, Deezer)
Étant donné que Spotify, YouTube Music et Deezer utilisent 30 jours
Quand RoadWave fixe également 30 jours
Alors c'est le standard accepté par les utilisateurs
Et il n'y a pas de confusion avec les autres plateformes
Scénario: Justification 30 jours - Force reconnexion régulière
Étant donné qu'un utilisateur ne se connecte jamais
Quand ses contenus expirent après 30 jours
Alors il est obligé de se reconnecter pour les renouveler
Et le système peut vérifier:
| vérification |
| Abonnement Premium toujours actif|
| Contenus non modérés/supprimés |
| Métadonnées à jour |
Scénario: Justification 30 jours - Évite stockage obsolète
Étant donné qu'un contenu a été modéré après téléchargement
Quand le contenu expire après 30 jours maximum
Alors le contenu illégal est automatiquement supprimé
Et ne reste pas indéfiniment sur le device
# ===== RENOUVELLEMENT AUTOMATIQUE =====
Scénario: Détection WiFi et contenus >25 jours
Étant donné que j'ai des contenus téléchargés il y a 26 jours
Quand l'app détecte une connexion WiFi
Alors une requête GET /offline/contents/refresh est envoyée
Et le backend vérifie chaque contenu
Scénario: Vérification abonnement Premium toujours actif
Étant donné qu'un contenu téléchargé en Premium est à renouveler
Quand le backend vérifie le statut
Et que l'abonnement Premium est toujours actif
Alors la validité est renouvelée à 30 jours supplémentaires
Scénario: Abonnement Premium expiré - Contenu non renouvelé
Étant donné qu'un contenu Premium téléchargé est à renouveler
Quand le backend vérifie le statut
Et que l'abonnement Premium a expiré
Alors le contenu n'est pas renouvelé
Et il sera supprimé à l'expiration (J-0)
Et l'utilisateur voit "Contenu Premium expiré (abonnement inactif)"
Scénario: Vérification contenu pas modéré/supprimé
Étant donné qu'un contenu téléchargé est à renouveler
Quand le backend vérifie le statut
Et que le contenu a été modéré ou supprimé entre temps
Alors le contenu n'est pas renouvelé
Et sera supprimé immédiatement du device
Et l'utilisateur voit "1 contenu retiré (violation règles)"
Scénario: Mise à jour métadonnées lors du renouvellement
Étant donné qu'un contenu téléchargé est renouvelé
Quand le backend traite le renouvellement
Alors les métadonnées sont mises à jour:
| métadonnée | mise à jour si changée |
| Titre | |
| Nom créateur | |
| Description | |
| Tags | |
| Statut Premium | |
Et l'utilisateur voit les infos à jour
Scénario: Pas de re-téléchargement audio si fichier OK
Étant donné qu'un contenu est renouvelé
Quand le fichier audio local est intact
Alors seules les métadonnées sont mises à jour
Et le fichier audio n'est pas re-téléchargé
Et cela économise la bande passante
Scénario: Re-téléchargement audio si fichier corrompu
Étant donné qu'un contenu est renouvelé
Quand le fichier audio local est corrompu (checksum invalide)
Alors le fichier audio est re-téléchargé entièrement
Et le nouveau fichier remplace le corrompu
Scénario: Renouvellement silencieux si WiFi régulier
Étant donné que je me connecte en WiFi tous les jours
Quand mes contenus atteignent 25-30 jours
Alors ils sont automatiquement renouvelés en arrière-plan
Et je ne vois aucune notification (processus transparent)
Et mes contenus restent valides indéfiniment
Scénario: Renouvellement batch de plusieurs contenus
Étant donné que j'ai 30 contenus à renouveler
Quand le renouvellement automatique se déclenche
Alors une requête batch est envoyée:
```json
POST /offline/contents/refresh
{
"content_ids": ["abc123", "def456", "ghi789", ...]
}
```
Et le backend traite les 30 contenus en une seule requête
Et cela économise les requêtes HTTP
Scénario: Temps de traitement renouvellement
Étant donné que 30 contenus sont à renouveler
Quand la requête batch est traitée
Alors le backend répond en <2 secondes
Et les métadonnées sont mises à jour localement
Et l'utilisateur ne remarque aucun ralentissement
# ===== NOTIFICATIONS EXPIRATION =====
Scénario: Notification J-3 avant expiration
Étant donné que j'ai 15 contenus qui expirent dans 3 jours
Quand le système vérifie les expirations
Alors je reçois une notification:
"""
⚠️ 15 contenus expirent dans 3 jours
Connectez-vous en WiFi pour les renouveler automatiquement.
"""
Et je peux agir avant l'expiration
Scénario: Pas de notification si connexion WiFi régulière
Étant donné que je me connecte en WiFi tous les jours
Et que mes contenus sont automatiquement renouvelés
Quand le système vérifie les expirations
Alors aucune notification J-3 n'est envoyée
Car les contenus sont déjà renouvelés silencieusement
Scénario: Notification uniquement si contenus non renouvelés
Étant donné que j'ai 20 contenus dont 15 renouvelés et 5 non renouvelés
Quand le J-3 arrive pour les 5 non renouvelés
Alors je reçois "5 contenus expirent dans 3 jours"
Et seuls les contenus à risque sont mentionnés
Scénario: Action utilisateur après notification J-3
Étant donné que je reçois la notification J-3
Quand je clique sur la notification
Alors l'app s'ouvre sur la page Téléchargements
Et je vois les contenus qui vont expirer en rouge
Et je peux me connecter en WiFi pour les renouveler
Scénario: Suppression automatique J-0 (expiration)
Étant donné qu'un contenu n'a pas été renouvelé
Quand le jour d'expiration arrive (J-0)
Alors le fichier est automatiquement supprimé du device
Et l'espace disque est libéré
Et le compteur est décrémenté (ex: 45/50 → 44/50)
Scénario: Toast après suppression automatique J-0
Étant donné que 15 contenus viennent d'expirer
Quand l'utilisateur ouvre l'app
Alors il voit un toast:
"""
🗑️ 15 contenus expirés ont été supprimés
Reconnectez-vous en WiFi régulièrement pour éviter les expirations.
"""
Scénario: Liste contenus supprimés après expiration
Étant donné que 15 contenus ont expiré
Quand je consulte l'historique des suppressions
Alors je vois la liste des 15 contenus supprimés:
| titre | créateur | date expiration |
| Mon épisode préféré | JeanDupont | 15 juin 2025 |
| Road trip Bretagne | MarieLambert| 15 juin 2025 |
| ... | ... | ... |
Et je peux les re-télécharger si je veux
Scénario: Re-téléchargement après expiration
Étant donné qu'un contenu a expiré et été supprimé
Quand je retrouve ce contenu dans l'app
Alors le badge ✅ "Offline" n'est plus affiché
Et je peux le re-télécharger normalement
Et la validité repart à 30 jours
# ===== CAS PARTICULIERS =====
Scénario: Utilisateur ne se connecte jamais pendant 30 jours
Étant donné que je télécharge 50 contenus le 1er juin
Mais que je ne me connecte jamais en WiFi pendant 30 jours
Quand le 1er juillet arrive
Alors tous les 50 contenus expirent
Et sont automatiquement supprimés
Et je n'ai plus aucun contenu offline
Scénario: Utilisateur en zone blanche 30+ jours
Étant donné que je télécharge 50 contenus avant de partir en zone sans réseau
Et que je reste 45 jours sans connexion
Quand les contenus expirent après 30 jours
Alors ils sont supprimés même si je ne peux pas me connecter
Et je perds l'accès à mes contenus offline
Scénario: Recommandation téléchargement avant zone blanche longue
Étant donné que je prépare un road trip de 60 jours
Quand je consulte la FAQ
Alors je vois la recommandation:
"""
⚠️ Road trips >30 jours
Les contenus téléchargés expirent après 30 jours.
Pour les longs voyages sans connexion:
Téléchargez de nouveaux contenus tous les 25 jours si possible
Ou planifiez une reconnexion WiFi tous les 25 jours
"""
Scénario: Changement statut Premium en gratuit pendant validité
Étant donné que je suis Premium et j'ai téléchargé 200 contenus
Quand mon abonnement Premium expire
Et que je repasse en gratuit
Alors au prochain renouvellement, seulement 50 contenus sont conservés
Et les 150 autres sont supprimés (limite gratuit)
Et je vois "Limite gratuit (50 contenus) appliquée. 150 contenus supprimés."
Scénario: Sélection automatique 50 meilleurs contenus si passage gratuit
Étant donné que je repasse en gratuit avec 200 contenus téléchargés
Quand le système applique la limite de 50
Alors les 50 contenus les plus récemment écoutés sont conservés
Et les 150 autres sont supprimés
Et cela maximise les chances de garder les contenus que j'aime
Scénario: Contenus Premium exclusifs supprimés si abonnement expire
Étant donné que j'ai téléchargé 20 contenus Premium exclusifs
Quand mon abonnement Premium expire
Alors les 20 contenus Premium sont immédiatement supprimés
Car ils ne sont accessibles qu'aux abonnés Premium actifs
Et je vois "20 contenus Premium supprimés (abonnement expiré)"
# ===== STATISTIQUES ET MONITORING =====
Scénario: Affichage temps restant avant expiration
Étant donné que j'ai 45 contenus téléchargés
Quand je consulte la page Téléchargements
Alors je vois pour chaque contenu:
| contenu | temps restant |
| Mon épisode (récent)| Expire dans 28 jours |
| Road trip (ancien) | Expire dans 3 jours |
Et je sais lesquels sont prioritaires pour renouvellement
Scénario: Tri par date expiration
Étant donné que j'ai 45 contenus avec différentes dates d'expiration
Quand je trie par "Expiration"
Alors les contenus qui expirent le plus tôt apparaissent en premier
Et je peux voir rapidement lesquels nécessitent une reconnexion urgente
Scénario: Badge rouge si expiration <3 jours
Étant donné qu'un contenu expire dans 2 jours
Quand je consulte la liste des téléchargements
Alors le contenu a un badge rouge "⚠️ Expire bientôt"
Et il est visuellement mis en avant
Scénario: Statistiques utilisateur - Taux de renouvellement
Étant donné que j'accède à mes statistiques
Quand je consulte la section Téléchargements
Alors je vois:
| métrique | valeur |
| Contenus actuels | 45 |
| Contenus expirés depuis début | 87 |
| Contenus renouvelés (auto) | 234 |
| Taux renouvellement automatique | 73% |
Scénario: Statistiques admin - Taux expiration global
Étant donné qu'un admin consulte les métriques offline
Quand il accède au dashboard
Alors il voit:
| métrique | valeur |
| Contenus téléchargés actifs | 1,234,567 |
| Expirations ce mois | 45,678 |
| Taux expiration | 3.7% |
| Renouvellements automatiques/mois | 234,567 |
Scénario: Alerte admin si taux expiration >10%
Étant donné que le taux d'expiration mensuel dépasse 10%
Quand le système détecte cette anomalie
Alors une alerte est envoyée:
"""
Taux d'expiration anormal: 12.3%
Nombre expirations ce mois: 152,345
Causes possibles:
- Utilisateurs ne se connectent plus en WiFi
- Problème renouvellement automatique ?
- Churn utilisateurs augmenté ?
Action recommandée: Enquête technique + email rappel utilisateurs
"""
Scénario: Email rappel si pas de connexion WiFi depuis 20 jours
Étant donné que je n'ai pas connecté l'app en WiFi depuis 20 jours
Et que j'ai 45 contenus téléchargés
Quand le système détecte cette inactivité WiFi
Alors je reçois un email:
"""
📡 Connectez-vous en WiFi pour conserver vos téléchargements
Vous n'avez pas connecté RoadWave en WiFi depuis 20 jours.
Vos 45 contenus téléchargés expireront dans 10 jours si non renouvelés.
Connectez-vous en WiFi avant le 30 juin pour les renouveler automatiquement.
"""
Scénario: Performance renouvellement avec 10 000 utilisateurs simultanés
Étant donné que 10 000 utilisateurs se connectent en WiFi simultanément
Quand chacun demande le renouvellement de 50 contenus
Alors le serveur traite 500 000 vérifications
Et grâce au cache Redis et index PostgreSQL, le temps de réponse reste <3s
Et les serveurs gèrent la charge sans problème
Scénario: Logs audit renouvellements
Étant donné qu'un contenu est renouvelé
Quand l'opération se termine
Alors un log est enregistré:
| timestamp | user_id | content_id | action | résultat |
| 2025-06-15 14:30:00 | abc123 | xyz789 | renew | success (+30d) |
| 2025-06-15 14:30:01 | abc123 | def456 | renew | failed (deleted)|
Et ces logs aident à débugger les problèmes