# language: fr Fonctionnalité: Profil créateur En tant qu'utilisateur de RoadWave Je veux consulter les profils des créateurs Afin de découvrir leur contenu et décider de m'abonner Contexte: Étant donné que l'application RoadWave est démarrée # 15.2.1 - Structure de la page profil Scénario: URL du profil créateur Étant donné un créateur avec le pseudo "paris_stories" Quand l'utilisateur accède au profil Alors l'URL est "https://roadwave.fr/@paris_stories" Scénario: Informations principales du profil Étant donné un créateur "@paris_stories" avec les informations suivantes: | champ | valeur | | photo | avatar_120x120.jpg | | pseudo | paris_stories | | badge_vérifié | true | | bio | Histoires et anecdotes de Paris | | abonnés | 1200 | | contenus | 42 | | durée_totale | 18h | | écoutes_totales | 54000 | Quand le profil est affiché Alors les éléments suivants sont visibles: | élément | valeur affichée | | Photo profil | 120×120 px | | @pseudo | @paris_stories | | Badge vérifié | ✓ | | Bio | Histoires et... | | Nombre abonnés | 1.2K abonnés | | Nombre contenus | 42 contenus | | Durée totale | 18h de contenu créé | | Écoutes totales | 54K écoutes totales | Plan du Scénario: Arrondi des statistiques publiques Étant donné un créateur avec Quand le profil est affiché Alors la valeur affichée est "" Exemples: | métrique | valeur_exacte | valeur_affichée | | abonnés | 342 | 342 | | abonnés | 1200 | 1.2K | | abonnés | 54000 | 54K | | abonnés | 1200000 | 1.2M | | écoutes | 842 | 842 | | écoutes | 5400 | 5.4K | | écoutes | 142000 | 142K | | écoutes | 2100000 | 2.1M | | durée (heures) | 18 | 18h | | durée (heures) | 142 | 142h | Scénario: Bio avec markdown basique Étant donné un créateur avec la bio suivante en markdown: """ **Histoires de Paris** - Découvrez la capitale *Nouveau contenu chaque semaine* https://paris-stories.fr """ Quand le profil est affiché Alors le texte en gras "Histoires de Paris" est formaté Et le texte en italique "Nouveau contenu chaque semaine" est formaté Et le lien "https://paris-stories.fr" est cliquable Scénario: Limitation de la bio à 300 caractères Étant donné un créateur qui entre une bio de 350 caractères Quand la bio est sauvegardée Alors seuls les 300 premiers caractères sont conservés Et un message "Maximum 300 caractères" s'affiche Scénario: Boutons d'action principaux Étant donné que l'utilisateur consulte un profil créateur Quand la page est chargée Alors les boutons suivants sont visibles: | bouton | action | | S'abonner | Abonnement au créateur | | Partager profil | Menu de partage | | ••• | Menu contextuel | Scénario: Menu contextuel du profil [•••] Étant donné que l'utilisateur clique sur le bouton [•••] Quand le menu s'ouvre Alors les options suivantes sont disponibles: | option | description | | Partager profil | Partager le lien du profil | | Signaler profil | Signaler spam ou usurpation d'identité | | Bloquer créateur | Masquer tous les contenus du créateur | Scénario: Liste des contenus du créateur Étant donné un créateur avec 3 contenus publiés Quand le profil est affiché Alors chaque contenu affiche: | élément | exemple | | Cover image | Image 16:9 | | Titre | Balade à Paris | | Durée et écoutes | 12 min · 🎧 2.3K | | Localisation | 📍 Paris | | Bouton lecture | ▶️ | Plan du Scénario: Options de tri des contenus Étant donné un créateur avec 10 contenus publiés Quand l'utilisateur sélectionne le tri "" Alors les contenus sont triés par Exemples: | option_tri | critère | | Plus récents | Date publication DESC (défaut) | | Plus populaires | Écoutes × facteur temporel (90 jours) | | Plus anciens | Date publication ASC | Scénario: Filtrage des contenus par tag Étant donné un créateur avec des contenus taggés "Voyage", "Histoire", "Gastronomie" Quand l'utilisateur filtre par tags "Voyage, Histoire" Alors seuls les contenus avec ces tags sont affichés Et le nombre de résultats est indiqué "12 contenus" Scénario: Recherche locale dans le profil Étant donné que l'utilisateur consulte le profil de "@paris_stories" Et que le créateur a publié 50 contenus Quand l'utilisateur entre "Montmartre" dans la barre de recherche Alors la recherche s'effectue sur les titres et descriptions Et seuls les contenus correspondants sont affichés Et le placeholder indique "Rechercher dans les contenus de @paris_stories" Scénario: Chargement paginé des contenus Étant donné un créateur avec 100 contenus publiés Quand le profil est affiché Alors 20 contenus sont chargés initialement Et un bouton "Charger plus" est visible en bas de page Quand l'utilisateur clique sur "Charger plus" Alors 20 contenus supplémentaires sont chargés # 15.2.2 - Statistiques publiques Scénario: Informations publiques visibles par tous Étant donné que l'utilisateur consulte un profil créateur Alors les informations suivantes sont publiques: | information | visible | | Photo et pseudo | ✅ | | Badge vérifié | ✅ | | Bio | ✅ | | Nombre abonnés | ✅ | | Nombre contenus | ✅ | | Durée totale créée | ✅ | | Écoutes totales | ✅ | Scénario: Informations privées non visibles Étant donné que l'utilisateur consulte un profil créateur Alors les informations suivantes sont privées: | information | visible | | Liste des abonnés | ❌ | | Revenus | ❌ | | Localisation précise | ❌ | | Email | ❌ | Scénario: Dashboard créateur avec métriques privées Étant donné que le créateur "@paris_stories" consulte son propre dashboard Quand la page statistiques est affichée Alors les métriques suivantes sont accessibles: | métrique | type | | Taux complétion moyen | 78% | | Évolution abonnés | Graphique | | Écoutes par contenu | Tableau | | Revenus | Dashboard | | Taux conversion Premium | Pourcentage | | Démographie (âge/zone) | Agrégée | Scénario: Graphique d'évolution des abonnés Étant donné que le créateur consulte son dashboard Quand il sélectionne la période "30 jours" Alors un graphique d'évolution des abonnés est affiché Et les périodes disponibles sont: | période | | 30j | | 90j | | 1 an | Scénario: Tableau détaillé des écoutes par contenu Étant donné un créateur avec 10 contenus publiés Quand il consulte le tableau des performances Alors chaque contenu affiche: | métrique | exemple | | Titre | Balade | | Écoutes totales | 2300 | | Écoutes complètes >80% | 1840 | | Taux complétion | 80% | | Likes | 420 | | Partages | 56 | # 15.2.3 - Badge vérifié Scénario: Affichage du badge vérifié Étant donné un créateur vérifié "@paris_stories" Quand son profil est affiché Alors le badge bleu "✓" est accolé au pseudo Et un tooltip "Compte vérifié" s'affiche au survol Scénario: Badge vérifié visible partout Étant donné un créateur vérifié "@paris_stories" Alors le badge "✓" est affiché dans: | emplacement | | Page profil | | Player en lecture | | Résultats de recherche| | Notifications | Plan du Scénario: Attribution automatique du badge selon critères Étant donné un créateur avec Quand les conditions sont validées Alors le badge vérifié est attribué Exemples: | critère | automatique | | KYC Mangopay validé | Oui | | ≥10K abonnés + compte >6 mois | Oui | | Célébrité / Média officiel | Manuel | Scénario: Attribution automatique via KYC Étant donné un créateur qui complète son KYC Mangopay Quand les documents sont validés Alors le badge vérifié est attribué automatiquement Et une notification "Votre compte est maintenant vérifié ✓" est envoyée Scénario: Attribution automatique à 10K abonnés Étant donné un créateur avec 9999 abonnés et un compte de 7 mois Quand il atteint 10000 abonnés Alors le badge vérifié est attribué automatiquement Et une notification de félicitations est envoyée Scénario: Demande manuelle de vérification (célébrité) Étant donné un créateur reconnu publiquement Quand il soumet le formulaire de demande de vérification Alors une requête est créée pour l'équipe RoadWave Et l'équipe vérifie l'identité sous 48-72h Et le badge est attribué si validation réussie Scénario: Retrait du badge en cas de suspension Étant donné un créateur vérifié avec le badge "✓" Quand sa monétisation est suspendue Alors le badge vérifié est retiré temporairement Et le badge est restauré après levée de la suspension Scénario: Retrait définitif du badge pour strikes multiples Étant donné un créateur vérifié avec 3 strikes actifs Quand un 4ème strike est appliqué (ban) Alors le badge vérifié est retiré définitivement Et le compte est banni Scénario: Retrait du badge pour usurpation d'identité Étant donné un créateur vérifié qui usurpe l'identité d'une célébrité Quand la fraude est détectée Alors le badge est retiré immédiatement Et le compte est banni Et une enquête est ouverte # Cas d'erreur et limites Scénario: Profil créateur supprimé Étant donné qu'un utilisateur tente d'accéder à "@deleted_user" Quand la page est chargée Alors un message "Ce profil n'existe pas ou a été supprimé" s'affiche Scénario: Blocage d'un créateur Étant donné que l'utilisateur bloque le créateur "@spam_account" Quand l'utilisateur consulte son flux de recommandations Alors aucun contenu de "@spam_account" n'est affiché Et le créateur n'apparaît plus dans les recherches Scénario: Déblocage d'un créateur Étant donné que l'utilisateur a bloqué "@paris_stories" Quand il accède à ses paramètres "Comptes bloqués" Et qu'il débloque "@paris_stories" Alors les contenus du créateur réapparaissent dans les recommandations Scénario: Signalement d'un profil pour spam Étant donné que l'utilisateur signale le profil "@spam_account" Quand il sélectionne la raison "Spam" Alors le signalement est envoyé à la modération Et un message de confirmation s'affiche Et le profil reste visible jusqu'à décision de modération Scénario: Signalement pour usurpation d'identité Étant donné que l'utilisateur signale le profil "@fake_celebrity" Quand il sélectionne "Usurpation d'identité" Et qu'il fournit une preuve Alors le signalement est priorisé (priorité HAUTE) Et l'équipe modération traite sous 24h