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,239 @@
# language: fr
Fonctionnalité: Notifications contextuelles selon le mode de déplacement
En tant qu'auditeur
Je veux recevoir des notifications adaptées à mon contexte
Afin d'être informé sans être distrait en conduisant
Contexte:
Étant donné que l'API RoadWave est disponible
Et que je suis connecté en tant qu'auditeur
Et que j'ai activé les notifications
Scénario: Détection automatique du contexte en voiture
Étant donné que ma vitesse GPS est de 50 km/h
Quand le système détecte mon contexte
Alors je suis identifié comme "En voiture"
Et les notifications push sont désactivées
Et seules les notifications in-app sont actives
Scénario: Détection automatique du contexte à pied
Étant donné que ma vitesse GPS est de 3 km/h
Quand le système détecte mon contexte
Alors je suis identifié comme "À pied"
Et les notifications push sont activées
Et l'interface tactile et vocale sont disponibles
Scénario: Zone de transition 5-10 km/h
Étant donné que ma vitesse GPS varie entre 5 et 10 km/h
Quand le système détecte mon contexte
Alors un algorithme de lissage est appliqué sur 30 secondes
Et le mode est déterminé selon la vitesse moyenne
Et les changements de mode ne sont pas trop fréquents
Scénario: Nouveau contenu créateur suivi - Mode voiture
Étant donné que je suis en voiture (vitesse >10 km/h)
Et que je suis abonné au créateur "JeanDupont"
Quand "JeanDupont" publie un nouveau contenu dans ma zone
Alors je ne reçois pas de notification push
Mais je vois un badge compteur in-app
Et le contenu apparaît dans ma file avec boost +30%
Scénario: Nouveau contenu créateur suivi - Mode piéton
Étant donné que je suis à pied (vitesse <5 km/h)
Et que je suis abonné au créateur "JeanDupont"
Et que je suis situé en Île-de-France
Quand "JeanDupont" publie un contenu géolocalisé en Île-de-France
Alors je reçois une notification push:
"""
🎧 JeanDupont a publié : "Titre du contenu"
Tap pour écouter
"""
Scénario: Live créateur suivi - Mode voiture
Étant donné que je suis en voiture
Et que je suis abonné au créateur "RadioLive"
Quand "RadioLive" démarre un live dans ma zone
Alors je ne reçois pas de notification push
Mais je vois un badge compteur in-app
Et le live peut apparaître dans ma recommandation automatiquement
Scénario: Live créateur suivi - Mode piéton
Étant donné que je suis à pied
Et que je suis abonné au créateur "RadioLive"
Et que je suis situé dans la zone du live
Quand "RadioLive" démarre un live
Alors je reçois une notification push:
"""
🔴 RadioLive est en direct : "Titre du live"
Tap pour rejoindre
"""
Scénario: Audio-guide disponible à proximité - Mode piéton
Étant donné que je suis à pied
Quand je passe à moins de 100m d'un lieu avec audio-guides
Alors je reçois une notification push:
"""
📍 Audio-guide disponible : Musée du Louvre
Choisissez parmi 3 guides pour Musée du Louvre
Tap pour explorer
"""
Scénario: Audio-guide disponible à proximité - Mode voiture
Étant donné que je suis en voiture
Quand je passe à moins de 100m d'un lieu avec audio-guides
Alors je reçois une notification audio (bip)
Et une annonce vocale: "Audio-guide disponible"
Mais pas de notification push (sécurité)
Scénario: Filtrage géographique des notifications
Étant donné que je suis abonné au créateur "CreateurMarseille"
Et que je suis situé à Paris
Quand "CreateurMarseille" publie un contenu ancré à Marseille
Alors je ne reçois pas de notification
Car le contenu est hors de ma zone géographique
Et cela évite la frustration de contenus non écoutables
Scénario: Contenu national notifie tous les abonnés
Étant donné que je suis abonné au créateur "MediaNational"
Et que je suis situé n'importe où en France
Quand "MediaNational" publie un contenu de type "National"
Alors je reçois une notification (si mode piéton)
Car les contenus nationaux ne sont pas filtrés géographiquement
Scénario: Limite de 10 notifications push par jour
Étant donné que je suis abonné à 50 créateurs actifs
Et que j'ai déjà reçu 10 notifications push aujourd'hui
Quand un 11ème contenu est publié
Alors je ne reçois pas de notification push individuelle
Mais une notification groupée: "🎧 3 nouveaux contenus de créateurs suivis"
Scénario: Paramétrage de la limite quotidienne
Étant donné que la limite par défaut est de 10 notifications/jour
Quand j'accède aux paramètres de notifications
Alors je peux modifier la limite entre 5 et 20
Et si je choisis 15, je recevrai jusqu'à 15 notifications/jour
Scénario: Mode silencieux nocturne par défaut
Étant donné que le mode silencieux est activé de 22h à 8h par défaut
Et qu'il est 23h30
Quand un créateur suivi publie un contenu
Alors je ne reçois pas de notification push
Mais les notifications sont empilées
Et je les vois le lendemain matin à 8h01
Scénario: Exception du mode silencieux pour les lives
Étant donné que le mode silencieux est activé (22h-8h)
Et qu'il est 23h00
Et que j'ai activé "Notifications importantes uniquement" (lives uniquement)
Quand un créateur suivi démarre un live
Alors je reçois quand même la notification push du live
Car les lives sont des événements temps réel prioritaires
Scénario: Désactivation complète des notifications
Étant donné que j'accède aux paramètres de notifications
Quand je désactive toutes les notifications
Alors je ne reçois plus aucune notification push
Et les badges in-app sont également désactivés
Et seule la recommandation algorithmique reste active
Scénario: Notification "Nouveaux contenus" activée par défaut
Étant donné que je crée un nouveau compte
Et que je m'abonne à mon premier créateur
Quand je consulte les préférences de notifications
Alors "Nouveaux contenus" est activé par défaut
Et "Lives" est activé par défaut
Et "Audio-guides proximité" est activé par défaut
Scénario: Désactivation sélective par type de notification
Étant donné que j'ai activé toutes les notifications
Quand je désactive uniquement "Nouveaux contenus"
Alors je ne reçois plus de notifications pour nouveaux contenus
Mais je reçois toujours les notifications de lives
Et les notifications d'audio-guides restent actives
Scénario: Notification groupée après limite dépassée
Étant donné que j'ai reçu 10 notifications push aujourd'hui
Et que 5 nouveaux contenus sont publiés dans l'heure suivante
Quand la 11ème notification devrait être envoyée
Alors les 5 contenus sont regroupés en une seule notification:
"""
🎧 5 nouveaux contenus de créateurs suivis
Tap pour voir la liste
"""
Scénario: Détail de la notification groupée
Étant donné que j'ai reçu une notification groupée "3 nouveaux contenus"
Quand je tape sur la notification
Alors l'app s'ouvre sur une liste des 3 contenus:
| créateur | titre |
| JeanDupont | "Actualité du jour" |
| MarieDurand | "Podcast économie" |
| PaulMartin | "Anecdote historique" |
Et je peux choisir lequel écouter en premier
Scénario: Personnalisation des plages horaires du mode silencieux
Étant donné que le mode silencieux est 22h-8h par défaut
Quand j'accède aux paramètres
Alors je peux modifier les heures: par exemple 23h-7h
Et le mode silencieux s'applique dans la nouvelle plage horaire
Scénario: Format notification nouveau contenu complet
Étant donné que je suis à pied
Et qu'un créateur suivi publie un contenu
Quand je reçois la notification push
Alors elle contient:
| élément | exemple |
| Emoji | 🎧 |
| Créateur | JeanDupont |
| Action | a publié |
| Titre | "Les secrets du Louvre" |
| CTA | Tap pour écouter |
Scénario: Format notification live complet
Étant donné que je suis à pied
Et qu'un créateur suivi démarre un live
Quand je reçois la notification push
Alors elle contient:
| élément | exemple |
| Emoji | 🔴 |
| Créateur | RadioLive |
| Action | est en direct |
| Titre | "Débat politique ce soir" |
| CTA | Tap pour rejoindre |
Scénario: Notification disparaît si contenu supprimé
Étant donné que j'ai reçu une notification pour un contenu
Et que je n'ai pas encore tapé dessus
Quand le créateur supprime le contenu
Alors la notification est automatiquement retirée de mon centre de notifications
Et si je tape dessus par erreur, je vois "Contenu non disponible"
Scénario: Badge compteur in-app en mode voiture
Étant donné que je suis en voiture
Et que 5 créateurs suivis publient des contenus
Quand j'ouvre l'application
Alors je vois un badge "5" sur l'onglet "Nouveautés"
Et en consultant l'onglet, je vois les 5 nouveaux contenus
Et le badge disparaît après consultation
Scénario: Coût des notifications push Firebase
Étant donné que je reçois 10 notifications push par jour
Et que je suis actif 365 jours par an
Quand le système calcule le coût
Alors 3650 notifications/an sont envoyées
Et Firebase Cloud Messaging est gratuit jusqu'à plusieurs millions de notifications
Et le coût reste 0 pour le volume MVP/Growth
Scénario: Deep link depuis notification push
Étant donné que je reçois une notification push pour un contenu
Quand je tape sur la notification
Alors l'app s'ouvre directement sur le contenu
Et la lecture démarre automatiquement (si j'étais à pied)
Ou le contenu est ajouté en première position dans la file (si je suis en voiture)
Scénario: Notification refusée si permissions désactivées au niveau OS
Étant donné que j'ai désactivé les notifications dans les paramètres iOS/Android
Quand un créateur suivi publie un contenu
Alors aucune notification push n'est envoyée
Et l'app propose de réactiver les permissions dans les paramètres
Mais les badges in-app continuent de fonctionner