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:
jpgiannetti
2026-02-01 11:31:41 +01:00
parent 841028d1b2
commit 37c62206ad
88 changed files with 625 additions and 67 deletions

View File

@@ -0,0 +1,162 @@
# language: fr
Fonctionnalité: Médias traditionnels sur RoadWave
En tant que média établi
Je veux publier du contenu géolocalisé sur RoadWave
Afin d'atteindre une audience locale et mobile
Contexte:
Étant donné que l'API RoadWave est disponible
Scénario: Création d'un compte média vérifié
Étant donné que je représente Le Monde
Quand je crée un compte média
Et que je fournis les justificatifs (SIRET, documents officiels)
Alors mon compte est créé en attente de vérification
Et l'équipe RoadWave examine ma demande sous 48-72h
Scénario: Validation compte média par l'équipe RoadWave
Étant donné qu'un compte média "Le Parisien" est en attente
Quand l'équipe RoadWave valide le compte
Alors le compte reçoit le badge vérifié
Et le média peut publier sans validation des 3 premiers contenus
Et je vois le message "Compte média vérifié avec succès"
Scénario: Badge vérifié visible sur profil média
Étant donné que "France Inter" a un compte vérifié
Quand un utilisateur consulte le profil
Alors il voit le badge à côté du nom
Et une mention "Média vérifié"
Scénario: Pas de validation des 3 premiers contenus pour médias
Étant donné que je suis un média vérifié
Quand je publie mon premier contenu
Alors le contenu est publié immédiatement sans validation
Et il est visible pour tous les utilisateurs
Et je ne passe pas par la modération initiale
Scénario: Modération a posteriori uniquement
Étant donné que "Libération" publie un contenu
Quand le contenu est publié
Alors il est immédiatement disponible
Mais peut être signalé et modéré a posteriori
Et suit les mêmes règles de modération que les créateurs
Scénario: Publication flash info géolocalisé
Étant donné que je suis "Ouest-France" (média régional)
Quand je publie un flash info sur un événement à Rennes
Et que je le géolocalise en Bretagne (géo-contextuel)
Alors le contenu est publié immédiatement
Et il est recommandé aux utilisateurs en Bretagne
Scénario: Publication chronique thématique
Étant donné que je suis "France Culture"
Quand je publie une chronique philosophie (géo-neutre)
Alors le contenu est disponible partout en France
Et suit l'algorithme de recommandation standard
Scénario: Publication édito politique
Étant donné que je suis "Le Figaro"
Quand je publie un édito politique
Et que je le tague "Politique"
Alors le contenu est publié immédiatement
Et la classification politique MVP s'applique (pas gauche/droite)
Et les utilisateurs ayant activé "Masquer politique" ne le voient pas
Scénario: Formats de contenu autorisés pour médias
Étant donné que je suis un média vérifié
Quand je publie du contenu
Alors je peux publier:
| format | exemple |
| Flash info géolocalisé | Actualité régionale 2-5 min |
| Chronique thématique | Culture, économie, sport 5-15min|
| Édito et débats | Opinion 10-30 min |
| Reportage | Investigation 15-45 min |
Scénario: Médias suivent les règles standard de classification âge
Étant donné que je suis "RTL"
Quand je publie un contenu sensible
Alors je dois obligatoirement classifier par âge:
| classification | type contenu |
| Tout public | Info générale |
| 13+ | Actualité avec sujets sensibles |
| 16+ | Débats avec violence verbale |
| 18+ | Sujets adultes |
Scénario: Monétisation médias - partage revenus pub standard
Étant donné que je suis un média vérifié
Et que mes contenus génèrent des écoutes
Quand le mois se termine
Alors je reçois 3 / 1000 écoutes complètes (même taux que créateurs)
Et le paiement suit les mêmes règles (seuil 50, mensuel)
Scénario: Sponsoring direct non géré par plateforme
Étant donné que je suis "Europe 1"
Et que je veux intégrer un sponsor dans mon contenu
Quand je mentionne le sponsor dans l'audio
Alors c'est autorisé (sponsoring éditorial)
Mais RoadWave ne gère pas la transaction
Et je gère la relation sponsor directement
Scénario: Médias peuvent avoir plusieurs comptes créateurs
Étant donné que je suis "Le Monde"
Quand je veux créer des sous-comptes par rubrique
Alors je peux créer:
| compte | description |
| @lemonde_politique | Actualité politique |
| @lemonde_economie | Économie et entreprises |
| @lemonde_culture | Culture et spectacles |
Et tous sont liés au compte média principal
Scénario: Médias régionaux privilégiés localement
Étant donné que "Sud-Ouest" publie du contenu géo-contextuel en Nouvelle-Aquitaine
Et qu'un utilisateur est à Bordeaux
Quand l'algorithme calcule les recommandations
Alors le contenu de "Sud-Ouest" a un score géo élevé
Et il est privilégié pour l'audience locale
Scénario: Médias nationaux accessibles partout
Étant donné que "France Inter" publie un podcast géo-neutre
Quand des utilisateurs à Paris, Lyon, Marseille demandent des recommandations
Alors le podcast est accessible partout sans distinction géographique
Et suit l'algorithme de recommandation standard
Scénario: Statistiques détaillées pour médias
Étant donné que je suis un média vérifié
Quand je consulte mes statistiques
Alors je vois:
| métrique | exemple |
| Écoutes par région | Île-de-France: 45% |
| Taux complétion | 72% |
| Démographie auditeurs | 25-34 ans: 35% |
| Top contenus | Flash info Paris|
| Revenus générés | 1,234 |
Scénario: Médias peuvent exporter analytics
Étant donné que je suis "Libération"
Quand je clique sur "Exporter analytics"
Alors je reçois un CSV avec données détaillées
Et je peux analyser les données avec mes outils internes
Scénario: Contact prioritaire équipe RoadWave
Étant donné que je suis un média vérifié
Quand j'ai un problème technique ou question
Alors je peux contacter le support média prioritaire
Et j'obtiens une réponse sous 24h (vs 48-72h standard)
Scénario: Médias peuvent programmer la publication
Étant donné que je suis "France Culture"
Quand je prépare un contenu à l'avance
Alors je peux programmer la publication pour une date/heure future
Et le contenu sera publié automatiquement au moment choisi
Scénario: API dédiée pour médias (post-MVP)
Étant donné que je suis un grand média avec beaucoup de contenus
Quand RoadWave développe l'API médias
Alors je peux automatiser la publication via API
Et intégrer RoadWave dans mon workflow de production
Scénario: Signalement d'un contenu média traité en priorité
Étant donné qu'un contenu de "Le Monde" est signalé
Quand le signalement arrive en modération
Alors il est traité avec la même priorité qu'un créateur standard
Et le badge vérifié ne donne pas d'immunité modération