Initial commit

This commit is contained in:
jpgiannetti
2026-01-31 11:45:11 +01:00
commit f99fb3c614
166 changed files with 115155 additions and 0 deletions

View File

@@ -0,0 +1,197 @@
# language: fr
Fonctionnalité: Architecture technique radio live
En tant que système
Je veux gérer efficacement les flux audio en temps réel
Afin d'assurer une diffusion stable et scalable des lives
Contexte:
Étant donné que l'infrastructure RoadWave est opérationnelle
Et que les serveurs Go avec Pion WebRTC sont actifs
Scénario: Ingestion WebRTC du flux créateur
Étant donné qu'un créateur démarre un live depuis son application mobile
Quand le flux audio WebRTC (Opus 48 kbps) arrive sur le serveur
Alors le serveur Go avec Pion WebRTC accepte la connexion
Et le flux est traité en temps réel
Scénario: Conversion temps réel Opus vers segments HLS
Étant donné qu'un flux WebRTC Opus est reçu par le serveur
Quand le serveur traite le flux
Alors FFmpeg convertit en segments HLS (.ts)
Et un fichier manifest .m3u8 est généré et mis à jour régulièrement
Et les segments ont une durée de 2 secondes chacun
Scénario: Distribution via NGINX Cache
Étant donné que les segments HLS sont générés
Quand un auditeur demande à rejoindre le live
Alors le manifest .m3u8 est servi via NGINX Cache (OVH)
Et les segments .ts sont cachés sur le cache NGINX
Et la distribution est globale avec latence minimale
Scénario: Lecture HLS native sur mobile iOS
Étant donné qu'un auditeur iOS rejoint un live
Quand l'application charge le flux HLS
Alors le player natif AVPlayer gère la lecture
Et le buffer de 15 secondes est appliqué automatiquement
Et la qualité s'adapte selon la connexion
Scénario: Lecture HLS native sur mobile Android
Étant donné qu'un auditeur Android rejoint un live
Quand l'application charge le flux HLS
Alors le player natif ExoPlayer gère la lecture
Et le buffer de 15 secondes est configuré
Et la qualité s'adapte selon la connexion
Scénario: Enregistrement parallèle du flux pour replay
Étant donné qu'un live est en cours
Alors un processus parallèle enregistre le flux Opus raw
Et l'enregistrement est stocké temporairement sur le serveur
Et l'enregistrement est indépendant de la diffusion HLS
Scénario: Traitement post-live asynchrone
Étant donné qu'un live vient de se terminer
Quand le processus post-live démarre
Alors un job asynchrone est créé dans la queue Redis
Et un worker Go récupère le job
Et le worker exécute FFmpeg pour les conversions
Scénario: Conversion Opus raw vers MP3 256 kbps
Étant donné qu'un worker traite un job post-live
Quand la conversion démarre
Alors FFmpeg convertit Opus raw en MP3 256 kbps
Et la normalisation audio à -14 LUFS est appliquée
Et les silences prolongés (>3 secondes) sont détectés et nettoyés
Scénario: Génération segments HLS pour le replay
Étant donné que le MP3 256 kbps est généré
Quand le worker crée les segments HLS
Alors des segments .ts de 10 secondes sont créés
Et un manifest .m3u8 est généré
Et les segments sont uploadés vers OVH Object Storage
Scénario: Publication automatique du replay
Étant donné que tous les segments HLS sont uploadés
Quand le worker finalise le job
Alors une entrée de contenu "replay" est créée en base PostgreSQL
Et le titre est "[REPLAY] [Titre live original]"
Et le type géographique est "Géo-neutre"
Et le replay est immédiatement disponible pour les auditeurs
Scénario: Suppression automatique fichier Opus raw après 7 jours
Étant donné qu'un replay est publié depuis 7 jours
Quand le job de nettoyage quotidien s'exécute
Alors le fichier Opus raw est supprimé du stockage
Et seul le MP3 256 kbps et les segments HLS sont conservés
Et l'espace de stockage est libéré
Scénario: Scalabilité horizontale des workers de conversion
Étant donné que 50 lives se terminent simultanément
Quand les jobs post-live sont créés
Alors les workers Go disponibles traitent les jobs en parallèle
Et si tous les workers sont occupés, les jobs attendent en queue Redis
Et de nouveaux workers peuvent être lancés automatiquement (Kubernetes)
Scénario: Limitation du nombre de lives simultanés (MVP)
Étant donné que l'infrastructure MVP est configurée pour 100 lives simultanés
Et que 100 lives sont actuellement en cours
Quand un nouveau créateur essaie de démarrer un live
Alors la demande est refusée avec le code erreur 503
Et le message "Capacité maximale atteinte. Veuillez réessayer dans quelques minutes" est retourné
Et la demande peut être mise en queue prioritaire si créateur Premium
Scénario: Monitoring des ressources serveur en temps réel
Étant donné que plusieurs lives sont en cours
Alors le système monitore en temps réel:
| métrique | seuil alerte |
| CPU utilisation | >80% |
| Mémoire utilisation | >85% |
| Bande passante upload | >80% capacité|
| Nombre connexions WebRTC | >90 |
| Latence moyenne CDN | >200ms |
Et si un seuil est dépassé, une alerte est envoyée à l'équipe technique
Scénario: Calcul du coût de bande passante CDN
Étant donné qu'un live a 100 auditeurs simultanés
Et que la qualité est 48 kbps Opus
Quand le live dure 1 heure
Alors la bande passante totale est d'environ 2.16 GB
Et le coût estimé infrastructure est d'environ 0.02
Et ces métriques sont enregistrées pour facturation créateur si nécessaire
Scénario: Cache NGINX des segments HLS
Étant donné qu'un live est diffusé via NGINX Cache
Quand un segment .ts est généré
Alors le segment est uploadé vers OVH Object Storage origin
Et NGINX Cache met en cache le segment
Et les auditeurs suivants récupèrent le segment depuis le cache
Et la charge sur le serveur origin est réduite de ~90%
Scénario: Gestion de la latence WebRTC créateur
Étant donné qu'un créateur diffuse avec une connexion 4G
Quand la latence réseau augmente ponctuellement
Alors le buffer côté serveur absorbe les fluctuations
Et la qualité peut être réduite temporairement (48 kbps 32 kbps)
Et un warning est affiché au créateur si la connexion est trop instable
Scénario: Détection automatique de la musique protégée (post-MVP)
Étant donné qu'un live contient de la musique en arrière-plan
Quand le système d'audio fingerprint analyse le flux
Alors une empreinte audio est calculée toutes les 30 secondes
Et l'empreinte est comparée à une base de données de contenus protégés
Et si une correspondance est trouvée, un warning est envoyé au créateur
Et si le créateur ne corrige pas sous 30 secondes, le live peut être arrêté
Scénario: Stockage des métadonnées de live en PostgreSQL
Étant donné qu'un créateur démarre un live
Alors les métadonnées suivantes sont enregistrées:
| champ | exemple valeur |
| live_id | uuid v4 |
| creator_id | uuid créateur |
| title | "Mon super live" |
| started_at | timestamp UTC |
| zone_geo | "Île-de-France" |
| tags | ["Actualité", "Tech"] |
| classification_age | "Tout public" |
Et ces données sont indexées pour recherche et analytics
Scénario: Cache Redis pour compteurs temps réel
Étant donné qu'un live est en cours
Alors Redis stocke les compteurs temps réel:
| clé Redis | valeur exemple |
| live:[live_id]:listeners | 247 |
| live:[live_id]:likes | 89 |
| live:[live_id]:reports | 0 |
Et ces compteurs sont mis à jour toutes les 2 secondes
Et les compteurs sont persistés en PostgreSQL toutes les 60 secondes
Scénario: Heartbeat auditeurs pour compteur précis
Étant donné qu'un auditeur écoute un live
Alors l'application envoie un heartbeat toutes les 10 secondes
Et le heartbeat met à jour le timestamp dans Redis
Et si aucun heartbeat n'est reçu pendant 30 secondes, l'auditeur est retiré du compteur
Scénario: Gestion des pannes serveur pendant un live
Étant donné qu'un live est en cours sur serveur A
Quand le serveur A tombe en panne
Alors Kubernetes redémarre automatiquement un pod
Mais le live en cours est perdu (pas de failover temps réel en MVP)
Et le créateur voit le message "Connexion perdue. Veuillez redémarrer le live"
Et les auditeurs voient "Le live est terminé suite à un problème technique"
Scénario: Backup automatique des enregistrements live
Étant donné qu'un live est enregistré en Opus raw
Quand l'enregistrement dépasse 10 minutes
Alors un backup incrémental est créé toutes les 10 minutes
Et le backup est stocké sur un stockage secondaire (S3-compatible)
Et en cas de crash serveur, le live peut être récupéré jusqu'au dernier backup
Scénario: Logs et audit trail des lives
Étant donné qu'un live démarre, se déroule et se termine
Alors tous les événements sont loggés:
| événement | détails enregistrés |
| Démarrage live | timestamp, creator_id, zone_geo |
| Auditeur rejoint | timestamp, user_id, position GPS |
| Auditeur quitte | timestamp, user_id, durée écoute |
| Signalement | timestamp, user_id, catégorie |
| Fin live | timestamp, durée totale, stats finales |
Et ces logs sont conservés 90 jours pour analytics et conformité RGPD

View File

@@ -0,0 +1,159 @@
# language: fr
Fonctionnalité: Arrêt du live
En tant que créateur
Je veux arrêter ma diffusion en direct de manière contrôlée
Afin de terminer proprement mon live et générer un replay automatiquement
Contexte:
Étant donné que l'API RoadWave est disponible
Et que je suis connecté en tant que créateur
Et que je diffuse actuellement un live
Scénario: Arrêt manuel avec compte à rebours 5 secondes
Quand j'appuie sur le bouton "Arrêter live"
Alors un compte à rebours de 5 secondes démarre
Et je vois le message "Ce live se termine dans 5... 4... 3... 2... 1"
Et un bouton "Annuler" est affiché pendant le décompte
Et l'audio du compte à rebours est diffusé aux auditeurs
Scénario: Annulation du compte à rebours
Étant donné que j'ai appuyé sur "Arrêter live"
Et que le compte à rebours affiche "3 secondes"
Quand j'appuie sur "Annuler"
Alors le compte à rebours s'arrête
Et le live continue normalement
Et aucune notification n'est envoyée aux auditeurs
Scénario: Arrêt effectif après compte à rebours
Étant donné que le compte à rebours est à 0
Alors le live s'arrête
Et la diffusion aux auditeurs se termine
Et le message "Live terminé" s'affiche
Et le processus de traitement post-live démarre automatiquement
Scénario: Déconnexion créateur courte (moins de 60 secondes)
Étant donné que je diffuse un live
Quand ma connexion est perdue pendant 30 secondes
Alors les auditeurs voient le message "Connexion créateur perdue, reconnexion en cours..."
Et le live continue de bufferer
Et quand ma connexion revient, le live reprend normalement
Scénario: Déconnexion créateur longue (60 secondes ou plus)
Étant donné que je diffuse un live
Quand ma connexion est perdue pendant 60 secondes
Alors le live s'arrête automatiquement
Et les auditeurs voient le message "Le live est terminé suite à une coupure de connexion"
Et le processus de traitement post-live démarre
Scénario: Enregistrement automatique pendant le live
Étant donné que je diffuse un live
Alors mon flux audio est enregistré en continu
Et le format d'enregistrement est Opus raw
Et l'enregistrement est stocké temporairement sur le serveur
Scénario: Génération automatique du replay après arrêt
Étant donné que mon live vient de se terminer
Et que l'option "Publier replay automatiquement" est activée (par défaut)
Quand le traitement post-live démarre
Alors un job asynchrone est créé
Et le job effectue les opérations suivantes:
| opération | détail |
| Conversion format | Opus raw MP3 256 kbps |
| Génération segments HLS | Segments .ts pour streaming |
| Normalisation volume | -14 LUFS |
| Détection silences prolongés | Nettoyage automatique |
Scénario: Publication du replay
Étant donné que le traitement post-live est terminé
Alors le replay est publié automatiquement sous 5 à 10 minutes
Et le titre est "[REPLAY] [Titre live original]"
Et la zone de diffusion est la même que le live
Et les tags sont identiques au live
Et la classification d'âge est identique
Et le type géographique est "Géo-neutre" (contenu pérenne)
Scénario: Notification de disponibilité du replay aux auditeurs
Étant donné que le replay de mon live est publié
Quand un auditeur qui a écouté le live se reconnecte
Alors il voit une notification in-app "Le replay de [Titre] est disponible"
Scénario: Option désactivation publication automatique replay
Étant donné que je configure un nouveau live
Quand je désactive l'option "Publier replay automatiquement"
Et que je démarre puis arrête le live
Alors le live est enregistré
Mais le replay n'est pas publié automatiquement
Et je peux décider manuellement de le publier plus tard
Scénario: Suppression manuelle du replay après publication
Étant donné que mon live a généré un replay publié
Quand j'accède à mes contenus
Alors je vois le replay dans ma liste
Et je peux le supprimer comme n'importe quel contenu
Quand je supprime le replay
Alors le fichier source Opus raw est supprimé immédiatement
Scénario: Conservation fichier source Opus raw
Étant donné que mon live est terminé
Et que le replay est publié
Alors le fichier Opus raw est conservé pendant 7 jours
Et après 7 jours, le fichier raw est supprimé automatiquement
Et seul le MP3 256 kbps est conservé
Scénario: Modification du replay interdite
Étant donné que mon live a généré un replay publié
Quand j'essaie de modifier l'audio du replay
Alors l'action est refusée
Et je vois le message "Les replays ne peuvent pas être modifiés pour garantir l'intégrité de l'enregistrement"
Et je peux uniquement modifier les métadonnées (titre, description)
Scénario: Statistiques du live disponibles après arrêt
Étant donné que mon live est terminé
Quand j'accède aux statistiques
Alors je vois:
| métrique | exemple valeur |
| Durée totale | 1h 23min |
| Nombre d'auditeurs max | 247 |
| Nombre d'auditeurs moyen | 183 |
| Nombre de likes | 89 |
| Nombre d'abonnements | 12 |
| Signalements reçus | 0 |
Scénario: Live terminé avec signalements en cours
Étant donné que mon live a reçu 3 signalements pendant la diffusion
Quand le live se termine
Alors le replay n'est pas publié automatiquement
Et le contenu est en attente de modération
Et je vois le message "Votre replay sera publié après vérification suite aux signalements reçus"
Et un modérateur doit valider ou refuser le replay sous 24h
Scénario: Arrêt forcé par un modérateur
Étant donné que je diffuse un live
Et qu'un modérateur détecte du contenu interdit
Quand le modérateur clique sur "Arrêter le live immédiatement"
Alors le live s'arrête sans compte à rebours
Et je vois le message "Votre live a été interrompu par la modération"
Et je reçois une notification détaillant la raison
Et le replay n'est pas publié
Et le fichier source est conservé 30 jours pour appel
Scénario: Métriques de bande passante pendant le live
Étant donné que je diffuse un live
Et que 100 auditeurs écoutent simultanément
Alors la bande passante consommée est d'environ 4.8 Mbps via NGINX Cache
Et le coût estimé infrastructure est d'environ 0.02 par heure de diffusion
Et je peux voir ces métriques en temps réel dans l'interface créateur
Scénario: Live sans auditeurs pendant 5 minutes
Étant donné que je diffuse un live
Et qu'aucun auditeur n'écoute depuis 5 minutes
Alors je vois un message d'information "Aucun auditeur actuellement connecté"
Mais le live continue normalement
Et je peux choisir de continuer ou d'arrêter
Scénario: Qualité audio du replay supérieure au live
Étant donné que mon live était diffusé en Opus 48 kbps
Quand le replay est généré
Alors le replay est encodé en MP3 256 kbps
Et la qualité audio du replay est supérieure au live
Et la taille du fichier est optimisée pour le stockage long terme

View File

@@ -0,0 +1,209 @@
# language: fr
Fonctionnalité: Comportement auditeur pendant un live
En tant qu'auditeur
Je veux écouter des lives de manière stable
Afin de profiter du contenu en temps réel sans coupures
Contexte:
Étant donné que l'API RoadWave est disponible
Et que je suis connecté en tant qu'auditeur
Et qu'un créateur diffuse actuellement un live
Scénario: Rejoindre un live avec buffer de synchronisation 15 secondes
Quand je clique sur "Rejoindre le live"
Alors la connexion au flux HLS s'établit
Et je commence à écouter avec un décalage de 15 secondes par rapport au créateur
Et le buffer de 15 secondes garantit une lecture stable
Scénario: Justification du buffer 15 secondes
Étant donné les alternatives de buffer possibles:
| buffer | stabilité 3G | stabilité 4G | décalage perceptible | décision |
| 5s | Faible | Moyenne | Non | |
| 10s | Moyenne | Bonne | Non | |
| 15s | Bonne | Excellente | Léger acceptable | |
| 20s+ | Excellente | Excellente | Oui | |
Alors le buffer optimal est 15 secondes
Scénario: Lecture stable sur réseau 3G
Étant donné que je suis sur réseau 3G
Et que j'écoute un live
Quand des micro-coupures réseau surviennent
Alors le buffer de 15 secondes absorbe les coupures
Et la lecture continue sans interruption perceptible
Scénario: Lecture stable sur réseau 4G
Étant donné que je suis sur réseau 4G
Et que j'écoute un live
Alors la lecture est fluide
Et le buffer de 15 secondes prévient les coupures lors de changement de cellule
Scénario: Continuation du live en sortant de la zone géographique
Étant donné que j'écoute un live régional "Île-de-France"
Et que je suis situé en Île-de-France
Quand je me déplace et sors du département
Alors le live continue de jouer normalement
Et je peux écouter jusqu'à la fin naturelle du live
Et après la fin du live, l'algorithme propose du contenu correspondant à ma nouvelle position
Scénario: Abonné dans la zone reçoit notification push
Étant donné que je suis abonné au créateur "JeanDupont"
Et que je suis situé en Île-de-France
Quand "JeanDupont" démarre un live en Île-de-France
Alors je reçois une notification push "🔴 JeanDupont est en direct : [Titre du live]"
Et quand je tape sur la notification, l'app s'ouvre et le live démarre immédiatement
Scénario: Abonné hors zone ne reçoit pas de notification
Étant donné que je suis abonné au créateur "JeanDupont"
Et que je suis situé à Lyon
Quand "JeanDupont" démarre un live en Île-de-France
Alors je ne reçois pas de notification push
Et cela évite la frustration de ne pas pouvoir écouter un live hors zone
Scénario: Découverte d'un live via l'algorithme de recommandation
Étant donné que je suis dans la zone géographique du live
Et que je navigue dans l'app avec "Suivant"
Quand l'algorithme propose un live en cours
Alors je vois l'indicateur "🔴 EN DIRECT"
Et je peux choisir de le rejoindre ou de passer au suivant
Scénario: Reconnexion rapide après coupure réseau (moins de 90 secondes)
Étant donné que j'écoute un live
Quand je perds ma connexion réseau pendant 45 secondes
Et que je retrouve ma connexion
Alors je reprends le live au moment actuel (pas au buffer ancien)
Et le saut temporel est transparent (pas de message d'erreur)
Et je ne rate que quelques secondes de contenu
Scénario: Reconnexion longue après coupure réseau (90 secondes ou plus)
Étant donné que j'écoute un live
Quand je perds ma connexion réseau pendant 90 secondes
Et que je retrouve ma connexion
Alors je vois le message "Live en cours perdu, passage au contenu suivant"
Et l'algorithme propose automatiquement le contenu suivant
Et je peux manuellement revenir au live s'il est toujours en cours
Scénario: Interactions disponibles pendant le live - Like
Étant donné que j'écoute un live
Et que mon véhicule est à l'arrêt
Quand je clique sur le bouton " Like"
Alors le like est enregistré immédiatement
Et le compteur de likes visible par le créateur s'incrémente
Et ma jauge d'intérêt pour les tags du live augmente de +2%
Scénario: Interactions disponibles pendant le live - Abonnement
Étant donné que j'écoute un live
Et que je ne suis pas encore abonné au créateur
Quand je clique sur le bouton "S'abonner"
Alors je m'abonne au créateur
Et ma jauge d'intérêt pour tous les tags du créateur augmente de +5%
Et je recevrai des notifications pour ses prochains lives
Scénario: Interactions disponibles pendant le live - Skip
Étant donné que j'écoute un live
Quand j'appuie sur "Suivant" (ou commande au volant)
Alors je quitte le live immédiatement
Et l'algorithme propose le contenu suivant
Et si j'ai écouté moins de 10 secondes, ma jauge d'intérêt diminue de -0.5%
Scénario: Commande Précédent désactivée pendant un live
Étant donné que j'écoute un live
Quand j'appuie sur "Précédent" (ou commande au volant)
Alors rien ne se passe
Et un message d'information s'affiche brièvement "Précédent non disponible sur les lives"
Scénario: Chat en direct désactivé (décision définitive)
Étant donné que j'écoute un live
Alors aucune interface de chat n'est disponible
Et je ne peux pas envoyer de messages au créateur
Et je ne peux pas voir de messages d'autres auditeurs
Et cette fonctionnalité ne sera jamais implémentée
Scénario: Réactions emoji désactivées (décision définitive)
Étant donné que j'écoute un live
Alors aucune réaction emoji n'est disponible
Et je ne peux pas envoyer d'emoji en temps réel
Et cette fonctionnalité ne sera jamais implémentée
Scénario: Message d'information sur l'absence de chat
Étant donné que j'écoute mon premier live
Quand j'accède à l'interface du live
Alors je vois un bandeau informatif "💬 Les discussions ne sont pas disponibles sur RoadWave pour garantir votre sécurité en voiture et éviter le harcèlement."
Et ce bandeau n'apparaît qu'une seule fois (première expérience)
Scénario: Signalement d'un live en cours
Étant donné que j'écoute un live
Et que le contenu me semble inapproprié
Quand je clique sur le bouton "Signaler"
Alors je vois les catégories de signalement:
| catégorie |
| Haine et violence |
| Contenu sexuel |
| Illégalité |
| Droits d'auteur |
| Désinformation dangereuse |
| Harcèlement |
| Autre |
Et quand je sélectionne une catégorie
Alors le signalement est envoyé en priorité selon la catégorie
Et un modérateur peut écouter le live en temps réel si besoin
Scénario: Statistiques visibles par les auditeurs pendant le live
Étant donné que j'écoute un live
Quand je consulte les informations du live
Alors je vois:
| information | exemple valeur |
| Nombre d'auditeurs | 247 personnes |
| Durée du live | 1h 23min |
| Nom du créateur | @JeanDupont |
| Zone de diffusion | Île-de-France |
| Tags | Actualité, Société |
Mais je ne vois pas les likes ou autres métriques détaillées
Scénario: Compteur d'auditeurs arrondi pour préserver la vie privée
Étant donné que j'écoute un live avec exactement 247 auditeurs
Quand je consulte le nombre d'auditeurs
Alors je vois "~250 auditeurs" (arrondi à la dizaine supérieure)
Scénario: Qualité audio adaptative pendant le live
Étant donné que j'écoute un live
Quand ma connexion passe de 4G à 3G
Alors la qualité audio s'adapte automatiquement
Et je passe de 48 kbps à 24 kbps Opus
Et la transition est transparente sans coupure
Scénario: Consommation de données pendant un live
Étant donné que j'écoute un live en qualité standard 48 kbps
Et que j'écoute pendant 1 heure
Alors j'ai consommé environ 21.6 MB de données mobiles
Et cette consommation est affichée dans les paramètres de l'app
Scénario: Lecture du replay après la fin du live
Étant donné que j'écoute un live depuis 30 minutes
Quand le créateur arrête le live
Alors je vois le message "Le live est terminé. Le replay sera disponible dans quelques minutes"
Et le contenu suivant est automatiquement proposé après 2 secondes
Scénario: Notification de disponibilité du replay
Étant donné que j'ai écouté un live jusqu'à la fin
Et que le replay est publié 8 minutes plus tard
Quand je rouvre l'application
Alors je vois une notification in-app "Le replay de [Titre] est maintenant disponible"
Et je peux cliquer pour l'écouter immédiatement
Scénario: Aucune publicité pendant un live pour utilisateurs gratuits
Étant donné que je suis un utilisateur gratuit
Et que j'écoute un live
Alors aucune publicité n'est insérée pendant le live
Et la publicité apparaît seulement entre le live et le contenu suivant
Scénario: Détection de contexte voiture pendant un live
Étant donné que j'écoute un live
Et que ma vitesse est supérieure à 10 km/h
Alors l'interface tactile est désactivée pour la sécurité
Et seules les commandes au volant sont actives (Play/Pause/Suivant)
Scénario: Détection de contexte piéton pendant un live
Étant donné que j'écoute un live
Et que ma vitesse est inférieure à 5 km/h
Alors l'interface tactile complète est disponible
Et je peux liker, m'abonner, signaler via l'écran tactile

View File

@@ -0,0 +1,151 @@
# language: fr
Fonctionnalité: Démarrage d'un live
En tant que créateur
Je veux démarrer une diffusion en direct
Afin de partager du contenu audio en temps réel avec mes auditeurs
Contexte:
Étant donné que l'API RoadWave est disponible
Et que je suis connecté en tant que créateur vérifié
Et que j'ai les permissions de diffusion live
Scénario: Vérifications pré-live réussies
Étant donné que ma connexion upload est supérieure à 1 Mbps
Et que j'ai autorisé l'accès au microphone
Et que j'ai défini une zone de diffusion "Île-de-France"
Quand je lance les vérifications pré-live
Alors toutes les vérifications sont validées
Et je peux démarrer le live
Scénario: Échec pré-live avec connexion insuffisante
Étant donné que ma connexion upload est de 0.5 Mbps
Quand je lance les vérifications pré-live
Alors je vois un warning "Connexion insuffisante pour garantir une diffusion stable (minimum 1 Mbps)"
Et je peux choisir de continuer quand même ou d'annuler
Scénario: Échec pré-live sans autorisation microphone
Étant donné que je n'ai pas autorisé l'accès au microphone
Quand j'essaie de démarrer un live
Alors je vois le message "Accès au microphone requis pour démarrer un live"
Et je suis redirigé vers les paramètres système
Scénario: Échec pré-live sans zone de diffusion définie
Étant donné que je n'ai pas défini de zone de diffusion
Quand j'essaie de démarrer un live
Alors je vois le message "Veuillez définir une zone de diffusion avant de démarrer"
Et je suis redirigé vers le formulaire de configuration du live
Scénario: Démarrage live avec buffer 15 secondes
Étant donné que toutes les vérifications pré-live sont validées
Quand j'appuie sur "Démarrer live"
Alors je vois le message "Live démarre dans 15s... Testez votre micro"
Et un compte à rebours de 15 secondes s'affiche
Et mon flux audio est enregistré pendant ces 15 secondes
Et le live n'est pas encore visible publiquement
Scénario: Live devient public après buffer initial
Étant donné que j'ai démarré un live
Et que le buffer de 15 secondes s'est écoulé
Alors le live devient public
Et les auditeurs peuvent le rejoindre
Et les abonnés dans la zone reçoivent une notification push
Scénario: Notification push aux abonnés dans la zone géographique
Étant donné que j'ai 1000 abonnés au total
Et que 300 abonnés sont situés en Île-de-France
Et que 700 abonnés sont situés hors Île-de-France
Quand mon live en Île-de-France devient public
Alors 300 abonnés reçoivent une notification push "🔴 [Mon pseudo] est en direct : [Titre live]"
Et 700 abonnés ne reçoivent pas de notification
Scénario: Configuration métadonnées obligatoires pour un live
Quand je configure un nouveau live
Alors je dois renseigner:
| champ | format | validation |
| Titre | 5-100 caractères | Obligatoire |
| Tags | 1-3 centres intérêt| Sélection liste prédéfinie |
| Classification âge | Enum | Tout public / 13+ / 16+ / 18+ |
| Zone diffusion | Geo | Ville / Département / Région / National |
Scénario: Validation échouée avec titre trop court
Quand j'essaie de créer un live avec le titre "Live"
Alors la validation échoue
Et je vois le message "Le titre doit contenir entre 5 et 100 caractères"
Scénario: Validation échouée sans tags
Étant donné que j'ai rempli tous les champs sauf les tags
Quand j'essaie de démarrer le live
Alors la validation échoue
Et je vois le message "Veuillez sélectionner entre 1 et 3 centres d'intérêt"
Scénario: Limite de durée 8 heures
Étant donné que mon live dure depuis 7 heures et 30 minutes
Alors je vois un warning "Votre live se terminera dans 30 min"
Et le message est affiché de manière non intrusive
Scénario: Arrêt automatique à 8 heures
Étant donné que mon live dure depuis 8 heures
Alors le live s'arrête automatiquement
Et je vois le message "Durée maximale atteinte (8 heures). Vous pouvez redémarrer un nouveau live si nécessaire"
Et le processus de traitement post-live démarre
Scénario: Diffusion contenu interdit - Concert en direct
Étant donné que je diffuse un concert en direct depuis une salle
Et qu'un auditeur signale le contenu pour "Violation droits d'auteur"
Quand un modérateur écoute le live
Et qu'il confirme la violation
Alors le live est arrêté immédiatement
Et je reçois un Strike 2 (suspension 7 jours)
Et je vois le message "Votre live a été interrompu pour violation des droits d'auteur"
Et le replay n'est pas publié
Scénario: Diffusion contenu interdit - Événement sportif payant
Étant donné que je diffuse un match de football avec droits TV
Et que le contenu est détecté par l'IA audio fingerprint
Quand la détection est confirmée
Alors le live est arrêté immédiatement
Et je reçois un Strike 2 (suspension 7 jours)
Scénario: Diffusion contenu violent
Étant donné que je diffuse du contenu violent (agression physique)
Et que 5 auditeurs signalent le contenu
Quand un modérateur vérifie en temps réel
Et confirme la violence
Alors le live est coupé immédiatement
Et mon compte est banni définitivement
Et les autorités sont notifiées
Scénario: Détection musique protégée en arrière-plan
Étant donné que mon live contient de la musique protégée en fond
Quand l'IA audio fingerprint détecte la violation après 2 minutes
Alors je reçois un avertissement en direct "Musique protégée détectée. Veuillez couper le son ou risquez un arrêt du live"
Et j'ai 30 secondes pour corriger
Et si je ne corrige pas, le live est arrêté avec Strike 1
Scénario: Signalement pendant un live
Étant donné que je diffuse un live
Et qu'un auditeur clique sur "Signaler"
Quand l'auditeur sélectionne la catégorie "Harcèlement"
Alors le signalement est envoyé en priorité HAUTE
Et un modérateur peut écouter le live en temps réel
Et le live continue pendant l'écoute de vérification
Scénario: Dépassement nombre de lives simultanés autorisés (limite plateforme)
Étant donné que la plateforme héberge actuellement 2000 lives simultanés
Et que c'est la limite de l'infrastructure actuelle
Quand j'essaie de démarrer un nouveau live
Alors je vois le message "Capacité maximale atteinte. Veuillez réessayer dans quelques minutes"
Et ma demande est mise en file d'attente prioritaire si je suis créateur Premium
Scénario: Premier live d'un nouveau créateur
Étant donné que je n'ai jamais diffusé de live auparavant
Et que j'ai moins de 3 contenus validés
Quand j'essaie de démarrer mon premier live
Alors je vois le message "Les lives sont disponibles après validation de vos 3 premiers contenus"
Et le bouton "Démarrer live" est désactivé
Scénario: Créateur avec score de confiance faible
Étant donné que j'ai 2 strikes actifs
Quand j'essaie de démarrer un live
Alors je vois le message "Fonctionnalité live temporairement indisponible suite à vos sanctions"
Et je dois attendre la fin de ma suspension