# language: fr Fonctionnalité: Limites d'abonnements et désabonnement En tant qu'auditeur Je veux gérer mes abonnements de manière équilibrée Afin de suivre mes créateurs préférés sans être submergé Contexte: Étant donné que l'API RoadWave est disponible Et que je suis connecté en tant qu'auditeur Scénario: Limite maximale de 200 abonnements Étant donné que je suis abonné à 199 créateurs Quand j'essaie de m'abonner à un 200ème créateur Alors l'abonnement réussit Et je suis maintenant abonné à 200 créateurs Scénario: Impossible de dépasser 200 abonnements Étant donné que je suis déjà abonné à 200 créateurs Quand j'essaie de m'abonner à un nouveau créateur Alors l'action échoue Et je vois le message: """ Vous suivez déjà 200 créateurs. Désabonnez-vous d'un créateur pour en suivre un nouveau. """ Scénario: Suggestion de désabonnement de créateurs inactifs Étant donné que je suis abonné à 200 créateurs Et que j'essaie de m'abonner à un nouveau créateur Quand je vois le message de limite atteinte Alors je vois aussi une suggestion: """ Vous n'avez pas écouté [Créateur X] depuis 6 mois, le désabonner ? """ Et un bouton "Désabonner" est proposé pour ce créateur Scénario: Liste triable des abonnements Étant donné que je suis abonné à 150 créateurs Quand j'accède à ma liste d'abonnements Alors je peux trier par: | critère | ordre | | Date d'abonnement | Plus récent / Plus ancien | | Nombre de contenus écoutés| Plus écoutés / Moins écoutés | | Dernière activité créateur| Plus récent / Plus ancien | | Ordre alphabétique | A-Z / Z-A | Scénario: Abonnement initial augmente les jauges de +5% Étant donné que mes jauges d'intérêt sont: | catégorie | valeur initiale | | Automobile | 60% | | Voyage | 55% | Et qu'un créateur tague ses contenus "Automobile" et "Voyage" Quand je m'abonne à ce créateur Alors mes jauges évoluent: | catégorie | nouvelle valeur | | Automobile | 65% (+5%) | | Voyage | 60% (+5%) | Scénario: Abonnement avec créateur ayant 3 tags Étant donné qu'un créateur tague ses contenus: | tags | | Automobile, Voyage, Technologie | Et que mes jauges sont toutes à 50% Quand je m'abonne à ce créateur Alors les 3 jauges augmentent de +5%: | catégorie | nouvelle valeur | | Automobile | 55% | | Voyage | 55% | | Technologie | 55% | Scénario: Désabonnement diminue les jauges de -5% Étant donné que je suis abonné à un créateur avec tags "Politique" et "Économie" Et que mes jauges sont: | catégorie | valeur actuelle | | Politique | 70% | | Économie | 65% | Quand je me désabonne de ce créateur Alors mes jauges évoluent: | catégorie | nouvelle valeur | | Politique | 65% (-5%) | | Économie | 60% (-5%) | Scénario: Désabonnement sans confirmation Étant donné que je consulte le profil d'un créateur suivi Quand je clique sur "Se désabonner" Alors le désabonnement est immédiat Et aucune popup de confirmation n'apparaît Car l'action est réversible (je peux me réabonner) Scénario: Réabonnement possible immédiatement Étant donné que je viens de me désabonner d'un créateur Quand je consulte à nouveau son profil Alors le bouton "S'abonner" est affiché Et je peux me réabonner immédiatement Et mes jauges augmentent à nouveau de +5% Scénario: Effet symétrique abonnement/désabonnement Étant donné qu'un créateur a les tags "Musique" et "Culture" Et que ma jauge Musique est à 50% Quand je m'abonne puis me désabonne immédiatement Alors ma jauge revient exactement à 50% Et il n'y a pas de perte ou gain net Scénario: Abonnement ne dépasse pas 100% de jauge Étant donné que ma jauge Automobile est à 97% Et qu'un créateur tague ses contenus "Automobile" Quand je m'abonne à ce créateur Alors ma jauge Automobile passe à 100% (limite max) Et l'augmentation effective est de +3% seulement Scénario: Désabonnement ne descend pas sous 0% Étant donné que ma jauge Politique est à 3% Et que je suis abonné à un créateur avec tag "Politique" Quand je me désabonne de ce créateur Alors ma jauge Politique passe à 0% (limite min) Et la diminution effective est de -3% seulement Scénario: Créateur ne voit pas qui est abonné (privacy) Étant donné que je suis abonné au créateur "JeanDupont" Quand "JeanDupont" consulte ses statistiques Alors il voit le nombre total d'abonnés (ex: "1,247 abonnés") Mais il ne voit pas la liste des utilisateurs abonnés Et mon identité reste privée Scénario: Créateur voit uniquement le nombre total d'abonnés Étant donné que je suis créateur Et que j'ai 523 abonnés Quand je consulte mes statistiques Alors je vois "523 abonnés" Mais je ne peux pas: | action interdite | | Voir la liste des abonnés | | Contacter mes abonnés individuellement| | Voir leurs profils | Scénario: Pas d'abonnement mutuel visible Étant donné que je suis abonné au créateur "Alice" Et qu'"Alice" est abonnée à mon compte créateur Quand je consulte le profil d'"Alice" Alors je ne vois pas d'indication qu'elle est abonnée à moi Et il n'y a pas de badge "Abonné mutuellement" Scénario: Performance avec 200 abonnements Étant donné que je suis abonné à 200 créateurs Quand l'algorithme calcule ma recommandation Alors la requête SQL utilise un JOIN sur la table abonnements Et la table est indexée sur user_id et creator_id Et le temps de calcul reste inférieur à 50ms Scénario: Impact sur la recommandation avec beaucoup d'abonnements Étant donné que je suis abonné à 150 créateurs très actifs Et qu'ils publient collectivement 100 contenus par jour Quand l'algorithme génère ma file de 5 contenus Alors environ 60-70% des contenus proviennent de créateurs suivis (grâce au boost +30%) Mais 30-40% proviennent de nouveaux créateurs (découverte) Scénario: Notification de désabonnement au créateur (non implémenté) Étant donné que je me désabonne d'un créateur Alors le créateur ne reçoit aucune notification Et il ne peut pas savoir qui s'est désabonné Car cela préserve la privacy et évite le harcèlement Scénario: Statistiques d'abonnements pour l'utilisateur Étant donné que je suis abonné à 87 créateurs Quand j'accède à mes statistiques d'abonnements Alors je vois: | métrique | exemple valeur | | Nombre total d'abonnements | 87 / 200 | | Créateurs les plus écoutés | Top 10 avec % écoute | | Créateurs non écoutés depuis 6 mois | 12 créateurs | | Nouveaux contenus non écoutés | 23 contenus | Scénario: Recherche dans la liste d'abonnements Étant donné que je suis abonné à 120 créateurs Quand j'accède à ma liste d'abonnements Alors je peux chercher par nom de créateur Et les résultats sont filtrés en temps réel Et je trouve rapidement un créateur spécifique Scénario: Export de la liste d'abonnements (RGPD) Étant donné que je demande l'export de mes données Quand l'export est généré Alors la liste de mes abonnements est incluse: ```json { "subscriptions": [ { "creator_name": "JeanDupont", "creator_id": "abc123", "subscribed_at": "2025-06-15T10:30:00Z" }, ... ] } ``` Scénario: Suppression compte utilisateur et impact sur abonnements Étant donné que je suis abonné à 50 créateurs Quand je supprime définitivement mon compte Alors tous mes abonnements sont supprimés Et le compteur d'abonnés de chaque créateur est décrémenté de -1 Et les jauges n'existent plus (données supprimées) Scénario: Suppression compte créateur et impact sur abonnés Étant donné que je suis abonné au créateur "Bob" Quand "Bob" supprime son compte créateur Alors je suis automatiquement désabonné Et mes jauges diminuent de -5% pour les tags de "Bob" Et je ne vois plus "Bob" dans ma liste d'abonnements Scénario: Limite 200 justifiée par usage réaliste Étant donné que la moyenne d'abonnements sur YouTube est de ~50-100 chaînes Et que Twitter limite à 5000 follows (mais moyenne ~150) Quand RoadWave fixe la limite à 200 Alors cela couvre largement 99% des utilisateurs Et évite les abus (comptes spam suivant tout le monde) Scénario: Table PostgreSQL optimisée pour abonnements Étant donné la structure de table subscriptions: ```sql CREATE TABLE subscriptions ( user_id UUID, creator_id UUID, subscribed_at TIMESTAMP, PRIMARY KEY (user_id, creator_id) ); CREATE INDEX idx_user_subscriptions ON subscriptions(user_id); CREATE INDEX idx_creator_subscribers ON subscriptions(creator_id); ``` Alors les requêtes d'abonnements sont O(1) avec index Et le count d'abonnés par créateur est rapide Et la vérification "est abonné ?" est instantanée Scénario: Détection d'abonnements abusifs Étant donné qu'un utilisateur s'abonne à 200 créateurs en moins de 5 minutes Quand le système détecte cette activité suspecte Alors un rate limiting est appliqué (max 10 abonnements/minute) Et l'utilisateur voit "Trop d'actions rapides. Veuillez réessayer dans 1 minute" Et cela prévient les bots de spam Scénario: Badge créateur vérifié visible dans abonnements Étant donné que je suis abonné à 3 créateurs dont 1 vérifié Quand je consulte ma liste d'abonnements Alors le créateur vérifié a un badge ✓ bleu Et les créateurs non vérifiés n'ont pas de badge