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:
147
features/ui/interest-gauges/jauge-initiale.feature
Normal file
147
features/ui/interest-gauges/jauge-initiale.feature
Normal file
@@ -0,0 +1,147 @@
|
||||
# language: fr
|
||||
Fonctionnalité: Jauge initiale et cold start
|
||||
En tant que nouvel utilisateur
|
||||
Je veux que mes jauges d'intérêt démarrent de manière neutre
|
||||
Afin de découvrir du contenu sans biais initial
|
||||
|
||||
Contexte:
|
||||
Étant donné que l'API RoadWave est disponible
|
||||
|
||||
Scénario: Inscription - toutes les jauges à 50%
|
||||
Quand je m'inscris sur RoadWave
|
||||
Alors toutes mes jauges d'intérêt sont initialisées à 50%
|
||||
Et je ne dois pas remplir de questionnaire
|
||||
Et l'inscription est ultra-rapide
|
||||
|
||||
Scénario: Liste des catégories disponibles
|
||||
Étant donné que je suis un nouvel utilisateur
|
||||
Quand je consulte mes centres d'intérêt
|
||||
Alors je vois les catégories suivantes à 50%:
|
||||
| catégorie |
|
||||
| Automobile |
|
||||
| Voyage |
|
||||
| Famille |
|
||||
| Amour |
|
||||
| Musique |
|
||||
| Économie |
|
||||
| Cryptomonnaie |
|
||||
| Politique |
|
||||
| Culture générale |
|
||||
| Sport |
|
||||
| Technologie |
|
||||
| Santé |
|
||||
|
||||
Scénario: Cold start - premier contenu écouté
|
||||
Étant donné que je viens de m'inscrire
|
||||
Et que toutes mes jauges sont à 50%
|
||||
Quand j'écoute mon premier podcast "Automobile" à 90%
|
||||
Alors ma jauge "Automobile" monte à 52% (+2%)
|
||||
Et toutes les autres jauges restent à 50%
|
||||
|
||||
Scénario: Cold start - premier skip
|
||||
Étant donné que je viens de m'inscrire
|
||||
Et que toutes mes jauges sont à 50%
|
||||
Quand je skip rapidement un contenu "Économie"
|
||||
Alors ma jauge "Économie" descend à 49.5% (-0.5%)
|
||||
Et toutes les autres jauges restent à 50%
|
||||
|
||||
Scénario: Après 10 écoutes, profil commence à se dessiner
|
||||
Étant donné que je suis un nouvel utilisateur
|
||||
Et que j'ai écouté:
|
||||
| contenu | tags | completion |
|
||||
| Contenu 1 | Automobile | 90% |
|
||||
| Contenu 2 | Automobile, Sport | 85% |
|
||||
| Contenu 3 | Voyage | 75% |
|
||||
| Contenu 4 | Économie | skip 5s |
|
||||
| Contenu 5 | Automobile | 95% |
|
||||
| Contenu 6 | Sport | 80% |
|
||||
| Contenu 7 | Politique | skip 8s |
|
||||
| Contenu 8 | Voyage | 88% |
|
||||
| Contenu 9 | Automobile | 92% |
|
||||
| Contenu 10 | Technologie | 40% |
|
||||
Alors mes jauges reflètent mes préférences:
|
||||
| catégorie | tendance |
|
||||
| Automobile | Forte hausse (>55%) |
|
||||
| Voyage | Hausse modérée (~53%) |
|
||||
| Sport | Hausse modérée (~53%) |
|
||||
| Économie | Baisse légère (~49.5%) |
|
||||
| Politique | Baisse légère (~49.5%) |
|
||||
| Technologie | Neutre (~51%) |
|
||||
|
||||
Scénario: Pas de questionnaire onboarding par défaut
|
||||
Quand je termine l'inscription
|
||||
Alors aucun questionnaire de centres d'intérêt n'est affiché
|
||||
Et je peux commencer à écouter immédiatement
|
||||
Et l'algorithme apprend naturellement
|
||||
|
||||
Scénario: Algorithme avec jauges à 50% - chances égales
|
||||
Étant donné que toutes mes jauges sont à 50%
|
||||
Quand l'algorithme calcule les recommandations
|
||||
Alors tous les types de contenus ont une chance égale
|
||||
Et aucun biais initial n'est appliqué
|
||||
Et la géolocalisation prime sur les intérêts
|
||||
|
||||
Scénario: Questionnaire optionnel après 3 écoutes (post-MVP)
|
||||
Étant donné que j'ai écouté 3 contenus
|
||||
Quand je termine ma 3ème écoute
|
||||
Alors je vois une notification in-app optionnelle:
|
||||
| titre | Améliorez vos recommandations |
|
||||
| message | Sélectionnez vos centres d'intérêt |
|
||||
| actions | Configurer maintenant / Plus tard |
|
||||
|
||||
Scénario: Remplir le questionnaire optionnel (post-MVP)
|
||||
Étant donné que le questionnaire optionnel est affiché
|
||||
Quand je sélectionne les centres d'intérêt suivants:
|
||||
| catégorie |
|
||||
| Automobile |
|
||||
| Voyage |
|
||||
| Sport |
|
||||
Alors les jauges sélectionnées passent à 70%
|
||||
Et les jauges non sélectionnées passent à 30%
|
||||
Et je vois le message "Vos préférences ont été enregistrées"
|
||||
|
||||
Scénario: Skipper le questionnaire optionnel (post-MVP)
|
||||
Étant donné que le questionnaire optionnel est affiché
|
||||
Quand je clique sur "Plus tard"
|
||||
Alors toutes mes jauges conservent 50%
|
||||
Et l'algorithme continue d'apprendre naturellement
|
||||
Et je ne suis plus sollicité
|
||||
|
||||
Scénario: Comportement déterministe et testable
|
||||
Étant donné deux nouveaux utilisateurs A et B
|
||||
Quand les deux s'inscrivent au même moment
|
||||
Alors leurs jauges sont identiques (toutes à 50%)
|
||||
Et leurs recommandations initiales sont identiques (basées sur géo uniquement)
|
||||
|
||||
Scénario: Équité entre créateurs au cold start
|
||||
Étant donné qu'un nouvel utilisateur s'inscrit
|
||||
Et qu'il existe 1000 contenus de catégories variées dans sa zone
|
||||
Quand l'algorithme génère les premières recommandations
|
||||
Alors tous les contenus ont une pondération intérêts identique (50%)
|
||||
Et seuls la géolocalisation et l'engagement différencient les contenus
|
||||
Et aucun créateur n'a d'avantage initial
|
||||
|
||||
Scénario: Catégories extensibles
|
||||
Étant donné que RoadWave ajoute une nouvelle catégorie "Gastronomie"
|
||||
Quand je consulte mes centres d'intérêt
|
||||
Alors je vois la nouvelle catégorie "Gastronomie" à 50%
|
||||
Et je peux commencer à l'explorer normalement
|
||||
|
||||
Scénario: Voir l'évolution de mes jauges
|
||||
Étant donné que je suis un utilisateur avec historique
|
||||
Quand je consulte mes centres d'intérêt dans les paramètres
|
||||
Alors je vois mes jauges actuelles:
|
||||
| catégorie | niveau | evolution |
|
||||
| Automobile | 67% | +17% |
|
||||
| Voyage | 82% | +32% |
|
||||
| Économie | 34% | -16% |
|
||||
| Sport | 50% | 0% |
|
||||
Et je comprends mes préférences actuelles
|
||||
|
||||
Scénario: Friction zéro à l'inscription
|
||||
Étant donné que je veux m'inscrire rapidement
|
||||
Quand je remplis les 4 champs obligatoires
|
||||
Et que je clique sur "S'inscrire"
|
||||
Alors mon compte est créé immédiatement
|
||||
Et je peux commencer à écouter dans les 30 secondes
|
||||
Et aucune configuration supplémentaire n'est requise
|
||||
Reference in New Issue
Block a user