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,188 @@
# language: fr
Fonctionnalité: Paramétrabilité utilisateur et profils
En tant qu'utilisateur
Je veux personnaliser mon expérience de recommandation
Afin d'adapter l'application à mes différents contextes d'usage
Contexte:
Étant donné que l'API RoadWave est disponible
Et que je suis connecté
Scénario: Accès aux paramètres de personnalisation
Quand j'ouvre les paramètres de personnalisation
Alors je vois trois curseurs disponibles:
| curseur | description |
| Géolocalisation | Local slider National |
| Découverte | 0% slider 50% |
| Politique | Masquer / Équilibré / Mes préférences |
Scénario: Modifier le curseur Géolocalisation vers Local
Étant donné que le curseur Géolocalisation est au centre (défaut)
Quand je déplace le curseur vers "Local" (gauche)
Alors l'algorithme privilégie fortement les contenus proches
Et la pondération géographique augmente
Et je vois le message "Recommandations locales privilégiées"
Scénario: Modifier le curseur Géolocalisation vers National
Étant donné que le curseur Géolocalisation est au centre
Quand je déplace le curseur vers "National" (droite)
Alors l'algorithme privilégie la découverte nationale
Et la pondération géographique diminue
Et je reçois des contenus de toute la France
Scénario: Curseur Découverte à 0% - aucun aléatoire
Quand je règle le curseur Découverte à 0%
Alors 0% de contenus aléatoires dans mes recommandations
Et 100% de contenus calculés selon score combiné
Et je vois le message "Personnalisation maximale"
Scénario: Curseur Découverte à 10% - défaut équilibré
Quand je règle le curseur Découverte à 10%
Alors 10% de contenus aléatoires
Et 90% de contenus calculés
Et je vois le message "Équilibre découverte/personnalisation"
Scénario: Curseur Découverte à 30% - découverte élevée
Quand je règle le curseur Découverte à 30%
Alors 30% de contenus aléatoires
Et 70% de contenus calculés
Et je vois le message "Découverte élevée activée"
Scénario: Curseur Découverte à 50% - découverte maximale
Quand je règle le curseur Découverte à 50%
Alors 50% de contenus aléatoires
Et 50% de contenus calculés
Et je vois le message "Découverte maximale (équivaut à national)"
Scénario: Créer un profil personnalisé "Trajet quotidien"
Quand je crée un nouveau profil nommé "🚗 Trajet quotidien"
Et que je configure:
| parametre | valeur |
| Géolocalisation | Local |
| Découverte | 5% |
| Politique | Masquer |
Et que je sauvegarde
Alors le profil "🚗 Trajet quotidien" est créé
Et je peux l'activer en un clic
Scénario: Créer un profil "Road trip"
Quand je crée un profil "🛣 Road trip"
Et que je configure:
| parametre | valeur |
| Géolocalisation | Régional |
| Découverte | 30% |
| Politique | Équilibré |
Alors le profil est sauvegardé
Et je peux switcher entre profils facilement
Scénario: Créer un profil "Enfants"
Quand je crée un profil "👶 Enfants"
Et que j'active le Mode Kids
Alors tous les paramètres sont adaptés pour enfants:
| parametre | valeur |
| Mode Kids | Activé |
| Politique | Masquer (forcé) |
| Publicité | Aucune |
Scénario: Activer un profil existant
Étant donné que j'ai créé un profil "🚗 Trajet quotidien"
Quand je clique sur "Activer" pour ce profil
Alors tous les paramètres du profil sont appliqués
Et je vois le message "Profil 'Trajet quotidien' activé"
Et l'algorithme utilise ces paramètres immédiatement
Scénario: Synchronisation profils entre devices
Étant donné que j'ai créé 3 profils sur mon iPhone
Quand je me connecte sur mon iPad
Alors mes 3 profils sont automatiquement synchronisés
Et je peux les utiliser sur l'iPad
Scénario: Modification d'un profil synchronisée
Étant donné que j'ai un profil "Road trip" sur iPhone
Quand je modifie ce profil sur iPhone
Alors la modification est synchronisée sur tous mes devices
Et le profil est mis à jour partout en temps réel
Scénario: Pas de partage de profils entre utilisateurs
Étant donné que j'ai créé des profils personnalisés
Et que ma conjointe a un compte RoadWave
Quand elle se connecte sur son compte
Alors elle ne voit pas mes profils
Et chaque utilisateur a ses propres profils
Scénario: Auto-switch selon contexte (détection trajet récurrent)
Étant donné que j'utilise toujours le profil "Trajet quotidien"
Et que je pars de chez moi vers mon travail tous les matins à 8h
Quand le système détecte ce trajet récurrent
Alors le profil "Trajet quotidien" est activé automatiquement
Et je reçois une notification "Profil 'Trajet quotidien' activé"
Scénario: Désactiver l'auto-switch
Étant donné que l'auto-switch de profil est actif
Quand je désactive cette option dans les paramètres
Alors les profils ne changent plus automatiquement
Et je dois les activer manuellement
Scénario: Blocage modification si vitesse GPS >10 km/h
Étant donné que je conduis à 50 km/h
Quand j'essaie de modifier un curseur
Alors la modification est bloquée
Et je vois le message "Modification impossible pendant la conduite"
Et je dois m'arrêter ou être passager pour modifier
Scénario: Modification possible si vitesse <10 km/h
Étant donné que je suis arrêté à un feu rouge (5 km/h)
Quand j'essaie de modifier un curseur
Alors la modification est autorisée
Et je peux ajuster les paramètres
Scénario: Warning au lancement app
Quand je lance l'application pour la première fois
Alors je vois un warning "Configurez vos préférences avant de prendre la route"
Et un bouton "Configurer maintenant"
Et je peux accéder rapidement aux paramètres
Scénario: Modification uniquement app arrêtée ou mode passager
Étant donné que je suis passager dans une voiture
Et que le mode passager est activé
Quand j'essaie de modifier les paramètres
Alors la modification est autorisée
Et le blocage vitesse GPS ne s'applique pas
Scénario: Statistiques d'utilisation des profils
Étant donné que j'utilise plusieurs profils
Quand je consulte mes statistiques
Alors je vois:
| metrique | exemple |
| Profil le plus utilisé | Trajet quotidien |
| Heures par profil | 25h / 10h / 5h |
| Dernier profil actif | Road trip |
Scénario: Supprimer un profil
Étant donné que j'ai créé un profil "Test"
Quand je supprime ce profil
Alors le profil est définitivement supprimé
Et je vois le message "Profil 'Test' supprimé"
Et il disparaît de tous mes devices
Scénario: Limite de profils par utilisateur
Étant donné que j'ai créé 10 profils
Quand j'essaie de créer un 11ème profil
Alors la création échoue
Et je vois le message "Maximum 10 profils par utilisateur"
Scénario: Dupliquer un profil existant
Étant donné que j'ai un profil "Trajet quotidien"
Quand je clique sur "Dupliquer"
Alors un nouveau profil "Trajet quotidien (copie)" est créé
Et il a les mêmes paramètres que l'original
Et je peux le modifier indépendamment
Scénario: Réinitialiser un profil aux valeurs par défaut
Étant donné que j'ai modifié un profil
Quand je clique sur "Réinitialiser"
Alors tous les paramètres reviennent aux valeurs par défaut:
| parametre | valeur défaut |
| Géolocalisation | Équilibré |
| Découverte | 10% |
| Politique | Équilibré |