# language: fr
Fonctionnalité: Contenus Premium exclusifs
  En tant que créateur monétisé
  Je veux pouvoir rendre certains contenus exclusifs aux abonnés Premium
  Afin d'inciter les utilisateurs à s'abonner

  Contexte:
    Étant donné que je suis un créateur avec la monétisation activée

  Scénario: Toggle "Réservé Premium" lors de la création
    Étant donné que je crée un nouveau contenu
    Quand j'accède aux options de publication
    Alors je vois un toggle "Réservé aux abonnés Premium 👑"
    Et je peux l'activer ou le désactiver

  Scénario: Contenu marqué Premium lors de la création
    Étant donné que je crée un nouveau contenu
    Quand j'active le toggle "Réservé Premium"
    Et que je publie le contenu
    Alors le champ `is_premium` en base est mis à `true`
    Et le contenu est visible uniquement pour les utilisateurs Premium

  Scénario: Contenu gratuit par défaut
    Étant donné que je crée un nouveau contenu
    Quand je ne touche pas au toggle "Réservé Premium"
    Et que je publie le contenu
    Alors le champ `is_premium` en base est mis à `false` (défaut)
    Et le contenu est accessible à tous les utilisateurs

  Scénario: Modification d'un contenu existant en Premium
    Étant donné que j'ai publié un contenu gratuit il y a 2 jours
    Quand je modifie le contenu et active le toggle "Réservé Premium"
    Et que j'enregistre les modifications
    Alors le contenu devient immédiatement Premium
    Et les utilisateurs gratuits ne peuvent plus y accéder

  Scénario: Passage d'un contenu Premium en gratuit
    Étant donné que j'ai publié un contenu Premium il y a 1 mois
    Quand je modifie le contenu et désactive le toggle "Réservé Premium"
    Et que j'enregistre les modifications
    Alors le contenu devient immédiatement gratuit
    Et tous les utilisateurs peuvent maintenant y accéder

  Scénario: Aucune limite sur pourcentage de contenus Premium
    Étant donné que je publie 10 nouveaux contenus
    Quand je décide de rendre les 10 contenus Premium (100%)
    Alors le système accepte sans limitation
    Et je peux avoir 100% de mon catalogue en Premium

  Scénario: Stratégie freemium - Mix gratuit/premium
    Étant donné que je publie 10 nouveaux contenus
    Quand je décide de rendre 5 contenus Premium et 5 gratuits (50/50)
    Alors le système accepte cette stratégie
    Et je peux tester différents mix pour optimiser mes revenus

  Scénario: Stratégie tout gratuit possible
    Étant donné que je suis monétisé via publicités
    Quand je décide de ne mettre aucun contenu en Premium (0%)
    Alors le système accepte cette stratégie
    Et je génère des revenus uniquement via les publicités

  Scénario: Badge 👑 visible sur l'interface utilisateur
    Étant donné qu'un utilisateur consulte ma liste de contenus
    Quand il voit un contenu Premium
    Alors un badge 👑 "Premium" est affiché
    Et le contenu est clairement identifiable comme réservé

  Scénario: Utilisateur gratuit voit les contenus Premium dans la liste
    Étant donné que je suis un utilisateur gratuit
    Quand je consulte les contenus d'un créateur
    Alors je vois aussi les contenus Premium dans la liste
    Et ils sont affichés avec un badge 👑
    Mais je ne peux pas les lire

  Scénario: Tentative de lecture Premium par utilisateur gratuit - Overlay bloquant
    Étant donné que je suis un utilisateur gratuit
    Quand je clique sur un contenu Premium pour le lire
    Alors un overlay bloquant apparaît
    Et je vois le message:
      """
      👑 Ce contenu est réservé aux abonnés Premium

      Passez Premium pour 4.99€/mois et accédez à tous les contenus exclusifs !
      """
    Et un bouton "Passer Premium" est affiché

  Scénario: CTA "Passer Premium" redirige vers abonnement
    Étant donné que je vois l'overlay de contenu Premium bloqué
    Quand je clique sur "Passer Premium"
    Alors je suis redirigé vers la page d'abonnement Premium
    Et je peux m'abonner pour 4.99€/mois

  Scénario: Utilisateur Premium peut lire tous les contenus Premium
    Étant donné que je suis un utilisateur Premium actif
    Quand je clique sur un contenu Premium
    Alors le contenu se lance immédiatement
    Et je n'ai aucun overlay bloquant
    Et je peux profiter pleinement du contenu exclusif

  Scénario: Contenus Premium inclus dans les recommandations
    Étant donné que l'algorithme génère ma file de 5 contenus
    Quand je suis un utilisateur gratuit
    Alors les contenus Premium peuvent apparaître dans les recommandations
    Et cela me fait découvrir qu'il existe du contenu exclusif

  Scénario: Contenu Premium skippé automatiquement pour utilisateur gratuit
    Étant donné que je suis un utilisateur gratuit
    Et qu'un contenu Premium apparaît dans ma file de recommandation
    Quand j'écoute le contenu précédent jusqu'à la fin
    Alors le contenu Premium est automatiquement skippé
    Et le contenu suivant (gratuit) est lancé
    Et le slot Premium ne compte pas dans ma file de 5 contenus

  Scénario: Contenu Premium diffusé normalement pour utilisateur Premium
    Étant donné que je suis un utilisateur Premium
    Et qu'un contenu Premium apparaît dans ma file de recommandation
    Quand j'écoute le contenu précédent jusqu'à la fin
    Alors le contenu Premium est lancé normalement
    Et je profite du contenu exclusif sans interruption

  Scénario: Champ `is_premium` boolean en base PostgreSQL
    Étant donné qu'un contenu est créé
    Quand il est stocké en base de données
    Alors la table `contents` contient un champ `is_premium BOOLEAN DEFAULT FALSE`
    Et ce champ est indexé pour requêtes rapides

  Scénario: Index PostgreSQL sur `is_premium`
    Étant donné que l'algorithme doit filtrer les contenus selon le statut Premium
    Quand une requête SQL est exécutée:
      ```sql
      SELECT * FROM contents
      WHERE creator_id = :creator_id
        AND (is_premium = FALSE OR :user_is_premium = TRUE)
      ORDER BY created_at DESC;
      ```
    Alors l'index sur `is_premium` accélère la requête
    Et le temps de réponse reste <20ms

  Scénario: Cache Redis pour statut Premium
    Étant donné qu'un contenu Premium est consulté fréquemment
    Quand l'API vérifie le statut Premium
    Alors la valeur est récupérée depuis Redis:
      ```
      content:[content_id]:premium = true
      ```
    Et le cache a un TTL de 1 heure
    Et cela évite des requêtes SQL inutiles

  Scénario: Invalidation cache lors de modification statut Premium
    Étant donné qu'un contenu est passé de gratuit à Premium
    Quand le créateur enregistre la modification
    Alors le cache Redis `content:[id]:premium` est invalidé immédiatement
    Et la nouvelle valeur est mise à jour
    Et les utilisateurs voient le changement en temps réel

  Scénario: Justification liberté créateur - Stratégie personnalisée
    Étant donné que chaque créateur a une audience différente
    Quand un créateur décide de sa stratégie Premium
    Alors il peut tester différentes approches:
      | stratégie                    | % Premium | objectif                           |
      | Tout gratuit                 | 0%        | Maximiser audience + revenus pub   |
      | Mix 50/50                    | 50%       | Équilibrer audience et exclusivité |
      | Premium majoritaire          | 80%       | Cibler abonnés fidèles             |
      | 100% Premium                 | 100%      | Contenu ultra-exclusif             |

  Scénario: Justification incitation Premium - Argument fort pour s'abonner
    Étant donné qu'un utilisateur gratuit voit beaucoup de contenus Premium
    Quand il consulte les profils de ses créateurs préférés
    Alors il voit que 60% de leur contenu est réservé Premium
    Et cela l'incite à s'abonner pour 4.99€/mois
    Et RoadWave augmente son taux de conversion vers Premium

  Scénario: Justification équité - Petit créateur peut tout mettre en Premium
    Étant donné que je suis un petit créateur avec 600 abonnés
    Et que 50 sont abonnés Premium
    Quand je mets 100% de mon contenu en Premium
    Alors je génère des revenus uniquement via mes 50 abonnés Premium
    Et cela me permet de vivre de mon contenu malgré une petite audience

  Scénario: Justification équité - Gros créateur peut tout offrir gratuitement
    Étant donné que je suis un gros créateur avec 50 000 abonnés
    Et que je génère déjà beaucoup de revenus publicitaires
    Quand je laisse 100% de mon contenu gratuit
    Alors je maximise mon audience et mes revenus pub
    Et je n'ai pas besoin de mettre du contenu en Premium

  Scénario: Statistiques créateur - Ratio Premium/Gratuit
    Étant donné que j'accède à mon tableau de bord créateur
    Quand je consulte mes statistiques de contenus
    Alors je vois:
      | métrique                     | valeur      |
      | Contenus totaux              | 47          |
      | Contenus gratuits            | 32 (68%)    |
      | Contenus Premium             | 15 (32%)    |
      | Écoutes Premium ce mois      | 12,345      |
      | Écoutes gratuites ce mois    | 28,901      |

  Scénario: Statistiques créateur - Revenus par type
    Étant donné que j'ai des contenus gratuits et Premium
    Quand je consulte mes revenus détaillés
    Alors je vois:
      | source                        | montant    |
      | Revenus pub (gratuit)         | 86.70€     |
      | Revenus Premium (exclusifs)   | 34.20€     |
      | Revenus Premium (tout contenu)| 78.90€     |
    Et je peux comparer l'efficacité de chaque stratégie

  Scénario: Notification créateur - Contenu Premium très écouté
    Étant donné que j'ai publié un contenu Premium il y a 3 jours
    Et qu'il a généré 5 000 écoutes Premium (très élevé)
    Quand le système détecte cette performance
    Alors je reçois une notification:
      """
      🔥 Votre contenu Premium "[Titre]" cartonne !
      5 000 écoutes en 3 jours. Continuez à créer du contenu exclusif de qualité !
      """

  Scénario: A/B test utilisateur - Impact badge Premium sur conversion
    Étant donné que RoadWave veut optimiser le taux de conversion Premium
    Quand un A/B test est lancé
    Alors groupe A voit le badge 👑 "Premium"
    Et groupe B voit le badge 💎 "Exclusif"
    Et les taux de clic et conversion sont mesurés
    Et le badge le plus performant est déployé définitivement

  Scénario: Analytics plateforme - Adoption fonctionnalité Premium
    Étant donné que RoadWave suit l'adoption de la fonctionnalité
    Quand un admin consulte les métriques
    Alors il voit:
      | métrique                              | valeur    |
      | Créateurs utilisant Premium           | 847 (68%) |
      | % moyen contenus Premium              | 23%       |
      | Taux conversion vers Premium (users)  | 8.5%      |
      | Revenus Premium/mois                  | 47,890€   |

  Scénario: Impact sur churn - Contenus Premium réduisent le churn Premium
    Étant donné qu'un utilisateur Premium envisage de résilier
    Mais qu'il a accès à 150 contenus Premium de ses créateurs préférés
    Quand il voit la valeur exclusive qu'il perdrait
    Alors il est moins susceptible de résilier (churn réduit de ~30%)
    Et les contenus Premium augmentent la rétention

  Scénario: Transparence - Créateur voit combien de contenus Premium il a
    Étant donné que j'accède à mon profil créateur
    Quand je consulte mes contenus
    Alors je peux filtrer par statut:
      | filtre       | résultats |
      | Tous         | 47        |
      | Gratuits     | 32        |
      | Premium 👑   | 15        |
    Et je peux facilement gérer mon catalogue

  Scénario: Export liste contenus avec statut Premium (RGPD)
    Étant donné que je demande l'export de mes données
    Quand l'export est généré
    Alors la liste de mes contenus inclut le statut Premium:
      ```json
      {
        "contents": [
          {
            "title": "Mon épisode exclusif",
            "is_premium": true,
            "published_at": "2025-06-15T10:30:00Z"
          },
          {
            "title": "Mon épisode gratuit",
            "is_premium": false,
            "published_at": "2025-06-14T08:15:00Z"
          }
        ]
      }
      ```

  Scénario: Suppression compte créateur et contenus Premium
    Étant donné que je supprime définitivement mon compte créateur
    Quand la suppression est confirmée
    Alors tous mes contenus (gratuits et Premium) sont supprimés
    Et les utilisateurs Premium ne peuvent plus y accéder
    Et les fichiers audio sont supprimés du CDN sous 7 jours

  Scénario: Performance avec 1 million de contenus Premium
    Étant donné que RoadWave a 1 million de contenus dont 300 000 Premium
    Quand l'algorithme génère une recommandation
    Alors la requête SQL filtre efficacement avec l'index `is_premium`
    Et le temps de réponse reste <50ms
    Et la scalabilité est garantie
