feat(bdd): réorganiser features en catégories api/ui/e2e et créer ADR-024
Résolution des incohérences #10, #11, et #12 de l'analyse d'architecture. ## Phase 1 : Réorganisation Features BDD (Point #10 - RÉSOLU) - Créer structure features/{api,ui,e2e} - Déplacer 83 features en 3 catégories via git mv (historique préservé) - features/api/ : 53 features (tests API backend) - features/ui/ : 22 features (tests UI mobile) - features/e2e/ : 8 features (tests end-to-end) Domaines déplacés : - API : authentication, recommendation, rgpd-compliance, content-creation, moderation, monetisation, premium, radio-live, publicites - UI : audio-guides, navigation, interest-gauges, mode-offline, partage, profil, recherche - E2E : abonnements, error-handling ## Phase 2 : Mise à jour Documentation ### ADR-007 - Tests BDD - Ajouter section "Convention de Catégorisation des Features" - Documenter règles api/ui/e2e avec exemples concrets - Spécifier step definitions (backend Go, mobile Dart) ### ADR-024 - Stratégie CI/CD Monorepo (NOUVEAU) - Créer ADR dédié pour stratégie CI/CD avec path filters - Architecture workflows séparés (backend.yml, mobile.yml, shared.yml) - Configuration path filters détaillée avec exemples YAML - Matrice de déclenchement et optimisations (~70% gain temps CI) - Plan d'implémentation (~2h, reporté jusqu'au développement) ### ADR-016 - Organisation Monorepo - Simplifier en retirant section CI/CD détaillée - Ajouter référence vers ADR-024 pour stratégie CI/CD ### INCONSISTENCIES-ANALYSIS.md - Point #10 (Tests BDD synchronisés) : ✅ RÉSOLU - Catégorisation features implémentée - ADR-007 mis à jour avec convention complète - Point #11 (70/30 Split paiements) : ✅ ANNULÉ (faux problème) - ADR-009 et Règle 18 parfaitement cohérents - Documentation exhaustive existante (formule, SQL, comparaisons) - Point #12 (Monorepo path filters) : ⏸️ DOCUMENTÉ - Architecture CI/CD complète dans ADR-024 - Implémentation reportée (projet en phase documentation) - Métriques mises à jour : - MODERATE : 6/9 traités (4 résolus + 1 annulé + 1 documenté) - ADR à jour : 100% (19/19 avec ADR-024) ## Phase 3 : Validation - Structure features validée (api/ui/e2e, aucun répertoire restant) - Historique Git préservé (git mv, renommages détectés) - 83 features total (API: 53, UI: 22, E2E: 8) Closes: Point #10 (résolu), Point #11 (annulé), Point #12 (documenté) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
151
features/api/radio-live/demarrage-live.feature
Normal file
151
features/api/radio-live/demarrage-live.feature
Normal 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
|
||||
Reference in New Issue
Block a user