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:
142
features/ui/interest-gauges/degradation-temporelle.feature
Normal file
142
features/ui/interest-gauges/degradation-temporelle.feature
Normal file
@@ -0,0 +1,142 @@
|
||||
# language: fr
|
||||
Fonctionnalité: Pas de dégradation temporelle des jauges
|
||||
En tant que système de recommandation
|
||||
Je veux que les jauges n'évoluent que par les actions utilisateur
|
||||
Afin d'avoir un comportement prévisible et fiable
|
||||
|
||||
Contexte:
|
||||
Étant donné que l'API RoadWave est disponible
|
||||
Et qu'un utilisateur est connecté
|
||||
|
||||
Scénario: Aucune dégradation automatique avec le temps
|
||||
Étant donné que ma jauge "Économie" est à 80%
|
||||
Et que je n'écoute aucun contenu pendant 30 jours
|
||||
Quand je me reconnecte après 30 jours
|
||||
Alors ma jauge "Économie" est toujours à 80%
|
||||
Et aucune dégradation temporelle n'a été appliquée
|
||||
|
||||
Scénario: Jauges conservées après 6 mois d'inactivité
|
||||
Étant donné que mes jauges sont:
|
||||
| catégorie | niveau |
|
||||
| Automobile | 75% |
|
||||
| Voyage | 60% |
|
||||
| Musique | 45% |
|
||||
Et que je pars en vacances pendant 6 mois sans utiliser l'app
|
||||
Quand je me reconnecte après 6 mois
|
||||
Alors mes jauges sont exactement les mêmes:
|
||||
| catégorie | niveau |
|
||||
| Automobile | 75% |
|
||||
| Voyage | 60% |
|
||||
| Musique | 45% |
|
||||
|
||||
Scénario: Évolution naturelle par les actions
|
||||
Étant donné que j'aimais "Économie" il y a 1 an (jauge 80%)
|
||||
Et que depuis, je skip tous les contenus "Économie"
|
||||
Et que j'ai skippé 50 contenus "Économie" en 1 an
|
||||
Alors ma jauge "Économie" descend naturellement via les skips
|
||||
Et atteint environ 55% (80% - 50 × 0.5% = 55%)
|
||||
Et la dégradation vient des actions, pas du temps
|
||||
|
||||
Scénario: Pas de cron job de dégradation
|
||||
Étant donné que le système vérifie les jauges quotidiennement
|
||||
Quand un utilisateur n'a pas d'activité depuis 90 jours
|
||||
Alors aucun job de dégradation n'est exécuté
|
||||
Et les jauges restent inchangées
|
||||
Et aucune ressource CPU n'est consommée pour la dégradation
|
||||
|
||||
Scénario: Comportement prévisible après absence
|
||||
Étant donné que ma jauge "Sport" était à 70%
|
||||
Et que je n'utilise pas l'app pendant 1 an
|
||||
Quand je reviens et demande des recommandations
|
||||
Alors mes recommandations reflètent toujours mes goûts d'avant
|
||||
Et je reçois du contenu "Sport" prioritaire
|
||||
Et le comportement est cohérent et prévisible
|
||||
|
||||
Scénario: Réinitialiser manuellement mes centres d'intérêt
|
||||
Étant donné que je veux repartir de zéro
|
||||
Quand je vais dans les paramètres
|
||||
Et que je clique sur "Réinitialiser mes centres d'intérêt"
|
||||
Et que je confirme l'action
|
||||
Alors toutes mes jauges reviennent à 50%
|
||||
Et je vois le message "Vos centres d'intérêt ont été réinitialisés"
|
||||
|
||||
Scénario: Confirmation avant réinitialisation
|
||||
Étant donné que je suis dans les paramètres
|
||||
Quand je clique sur "Réinitialiser mes centres d'intérêt"
|
||||
Alors je vois un message de confirmation:
|
||||
| titre | Êtes-vous sûr ? |
|
||||
| message | Cette action remettra toutes vos jauges à 50% |
|
||||
| actions | Confirmer / Annuler |
|
||||
|
||||
Scénario: Annuler la réinitialisation
|
||||
Étant donné que j'ai cliqué sur "Réinitialiser mes centres d'intérêt"
|
||||
Et que la confirmation est affichée
|
||||
Quand je clique sur "Annuler"
|
||||
Alors mes jauges ne sont pas modifiées
|
||||
Et je reviens aux paramètres
|
||||
|
||||
Scénario: Raison de réinitialisation - changement de vie
|
||||
Étant donné que j'utilisais RoadWave pour mes trajets professionnels
|
||||
Et que mes jauges reflétaient "Économie" (85%) et "Technologie" (75%)
|
||||
Et que je change de vie et deviens musicien
|
||||
Quand je réinitialise mes centres d'intérêt
|
||||
Alors je peux repartir avec toutes les jauges à 50%
|
||||
Et découvrir du contenu "Musique" et "Culture" sans biais
|
||||
|
||||
Scénario: Pas de suggestion automatique de réinitialisation
|
||||
Étant donné que je n'ai pas utilisé l'app depuis 1 an
|
||||
Quand je me reconnecte
|
||||
Alors aucune suggestion de réinitialisation n'est affichée
|
||||
Et mes jauges sont conservées telles quelles
|
||||
Et je garde le contrôle total
|
||||
|
||||
Scénario: Historique conservé après réinitialisation
|
||||
Étant donné que j'ai écouté 500 contenus
|
||||
Quand je réinitialise mes centres d'intérêt
|
||||
Alors mes jauges reviennent à 50%
|
||||
Mais mon historique d'écoute est conservé
|
||||
Et je peux toujours consulter mes anciens contenus écoutés
|
||||
|
||||
Scénario: Évolution future basée sur nouvelles actions
|
||||
Étant donné que j'ai réinitialisé mes jauges à 50%
|
||||
Quand j'écoute 5 contenus "Voyage" à >80%
|
||||
Alors ma jauge "Voyage" monte à 60% (50% + 5 × 2%)
|
||||
Et l'algorithme recommence à apprendre mes nouvelles préférences
|
||||
|
||||
Scénario: Respect de l'historique utilisateur
|
||||
Étant donné qu'un utilisateur aime "Cryptomonnaie" depuis 2 ans
|
||||
Et que sa jauge est à 90%
|
||||
Quand 2 ans s'écoulent sans dégradation temporelle
|
||||
Alors sa jauge reste à 90%
|
||||
Car l'historique de ses goûts est respecté
|
||||
Et le système ne fait pas d'"oubli" artificiel
|
||||
|
||||
Scénario: Coût infrastructure zéro
|
||||
Étant donné qu'aucune dégradation temporelle n'existe
|
||||
Quand le système calcule les jauges
|
||||
Alors aucun calcul de date n'est nécessaire
|
||||
Et aucun batch nocturne ne tourne
|
||||
Et aucun bug de fuseau horaire ne peut survenir
|
||||
Et le coût CPU est minimal
|
||||
|
||||
Scénario: UX prévisible - jauge = actions
|
||||
Étant donné qu'un utilisateur consulte sa jauge "Sport" à 65%
|
||||
Quand il se demande pourquoi elle est à 65%
|
||||
Alors il peut retracer ses actions:
|
||||
| action | impact |
|
||||
| 10 likes automatiques | +10% |
|
||||
| 3 abonnements Sport | +15% |
|
||||
| 5 skips de contenu non-Sport| 0% |
|
||||
Et il comprend que c'est le reflet exact de ses actions
|
||||
Et il n'y a pas de mystère ou automatisme caché
|
||||
|
||||
Scénario: Statistiques affichées sans date
|
||||
Étant donné que je consulte mes centres d'intérêt
|
||||
Quand je vois mes jauges
|
||||
Alors je vois:
|
||||
| information | affiché |
|
||||
| Niveau actuel | ✅ 75% |
|
||||
| Évolution depuis début | ✅ +25% |
|
||||
| Dernière mise à jour | ❌ |
|
||||
Et aucune date n'est affichée car non pertinente
|
||||
Et seules les actions comptent
|
||||
193
features/ui/interest-gauges/evolution-jauges.feature
Normal file
193
features/ui/interest-gauges/evolution-jauges.feature
Normal file
@@ -0,0 +1,193 @@
|
||||
# language: fr
|
||||
Fonctionnalité: Évolution des jauges d'intérêt
|
||||
En tant que système de recommandation
|
||||
Je veux faire évoluer les jauges d'intérêt selon les actions utilisateur
|
||||
Afin d'affiner les recommandations personnalisées
|
||||
|
||||
Contexte:
|
||||
Étant donné que l'API RoadWave est disponible
|
||||
Et qu'un utilisateur est connecté
|
||||
|
||||
Scénario: Like automatique renforcé après écoute ≥80%
|
||||
Étant donné qu'un contenu de 5 minutes est tagué "Automobile"
|
||||
Et que ma jauge "Automobile" est à 45%
|
||||
Quand j'écoute le contenu pendant 4 minutes 30 secondes (90%)
|
||||
Alors je reçois un like automatique renforcé
|
||||
Et ma jauge "Automobile" augmente de 2%
|
||||
Et ma jauge "Automobile" est maintenant à 47%
|
||||
|
||||
Scénario: Like automatique renforcé exactement à 80%
|
||||
Étant donné qu'un contenu de 10 minutes est tagué "Voyage"
|
||||
Et que ma jauge "Voyage" est à 60%
|
||||
Quand j'écoute le contenu pendant exactement 8 minutes (80%)
|
||||
Alors je reçois un like automatique renforcé
|
||||
Et ma jauge "Voyage" augmente de 2%
|
||||
Et ma jauge "Voyage" est maintenant à 62%
|
||||
|
||||
Scénario: Like automatique standard après écoute 30-79%
|
||||
Étant donné qu'un contenu de 5 minutes est tagué "Automobile"
|
||||
Et que ma jauge "Automobile" est à 45%
|
||||
Quand j'écoute le contenu pendant 2 minutes 30 secondes (50%)
|
||||
Alors je reçois un like automatique standard
|
||||
Et ma jauge "Automobile" augmente de 1%
|
||||
Et ma jauge "Automobile" est maintenant à 46%
|
||||
|
||||
Scénario: Like automatique standard à 30% exactement
|
||||
Étant donné qu'un contenu de 10 minutes est tagué "Musique"
|
||||
Et que ma jauge "Musique" est à 40%
|
||||
Quand j'écoute le contenu pendant exactement 3 minutes (30%)
|
||||
Alors je reçois un like automatique standard
|
||||
Et ma jauge "Musique" augmente de 1%
|
||||
|
||||
Scénario: Like automatique standard à 79%
|
||||
Étant donné qu'un contenu de 10 minutes est tagué "Sport"
|
||||
Et que ma jauge "Sport" est à 55%
|
||||
Quand j'écoute le contenu pendant 7 minutes 54 secondes (79%)
|
||||
Alors je reçois un like automatique standard
|
||||
Et ma jauge "Sport" augmente de 1%
|
||||
Et ma jauge "Sport" est maintenant à 56%
|
||||
|
||||
Scénario: Like explicite (manuel) +2%
|
||||
Étant donné qu'un contenu est tagué "Économie"
|
||||
Et que ma jauge "Économie" est à 70%
|
||||
Quand j'écoute le contenu partiellement
|
||||
Et que je clique manuellement sur le bouton "Like"
|
||||
Alors ma jauge "Économie" augmente de 2%
|
||||
Et ma jauge "Économie" est maintenant à 72%
|
||||
|
||||
Scénario: Like manuel cumulable avec like automatique
|
||||
Étant donné qu'un contenu de 5 minutes est tagué "Automobile"
|
||||
Et que ma jauge "Automobile" est à 45%
|
||||
Quand j'écoute le contenu pendant 2 minutes 30 secondes (50%)
|
||||
Alors je reçois un like automatique standard (+1%)
|
||||
Quand je clique ensuite sur le bouton "Like"
|
||||
Alors ma jauge augmente encore de 2% (like manuel)
|
||||
Et ma jauge "Automobile" a augmenté de 3% au total
|
||||
Et ma jauge "Automobile" est maintenant à 48%
|
||||
|
||||
Scénario: Abonnement créateur impacte tous ses tags
|
||||
Étant donné qu'un créateur publie des contenus tagués "Automobile" et "Technologie"
|
||||
Et que mes jauges sont:
|
||||
| catégorie | niveau |
|
||||
| Automobile | 50% |
|
||||
| Technologie | 45% |
|
||||
Quand je m'abonne à ce créateur
|
||||
Alors ma jauge "Automobile" augmente de 5%
|
||||
Et ma jauge "Technologie" augmente de 5%
|
||||
Et mes nouvelles jauges sont:
|
||||
| catégorie | niveau |
|
||||
| Automobile | 55% |
|
||||
| Technologie | 50% |
|
||||
|
||||
Scénario: Skip rapide (<10s) diminue la jauge
|
||||
Étant donné qu'un contenu est tagué "Économie"
|
||||
Et que ma jauge "Économie" est à 45%
|
||||
Quand je skip le contenu après 5 secondes
|
||||
Alors ma jauge "Économie" diminue de 0.5%
|
||||
Et ma jauge "Économie" est maintenant à 44.5%
|
||||
|
||||
Scénario: Skip à exactement 10s ne diminue pas la jauge
|
||||
Étant donné qu'un contenu est tagué "Politique"
|
||||
Et que ma jauge "Politique" est à 50%
|
||||
Quand je skip le contenu après exactement 10 secondes
|
||||
Alors ma jauge "Politique" ne change pas
|
||||
Et reste à 50%
|
||||
|
||||
Scénario: Skip tardif (≥30%) est neutre
|
||||
Étant donné qu'un contenu de 10 minutes est tagué "Musique"
|
||||
Et que ma jauge "Musique" est à 60%
|
||||
Quand j'écoute pendant 3 minutes (30%)
|
||||
Et que je skip ensuite
|
||||
Alors ma jauge "Musique" ne diminue pas (signal neutre)
|
||||
Et ma jauge reste à 60% (plus le +1% de like auto si applicable)
|
||||
|
||||
Scénario: Contenu avec plusieurs tags impacte toutes les jauges
|
||||
Étant donné qu'un contenu est tagué "Automobile" et "Voyage"
|
||||
Et que mes jauges sont:
|
||||
| catégorie | niveau |
|
||||
| Automobile | 45% |
|
||||
| Voyage | 60% |
|
||||
Quand j'écoute le contenu à 90%
|
||||
Alors les deux jauges augmentent de 2%
|
||||
Et mes nouvelles jauges sont:
|
||||
| catégorie | niveau |
|
||||
| Automobile | 47% |
|
||||
| Voyage | 62% |
|
||||
|
||||
Scénario: Contenu avec 3 tags impacte les 3 jauges
|
||||
Étant donné qu'un contenu est tagué "Sport", "Santé" et "Technologie"
|
||||
Et que mes jauges sont à 50% pour chaque catégorie
|
||||
Quand je skip rapidement après 5 secondes
|
||||
Alors les 3 jauges diminuent de 0.5%
|
||||
Et toutes passent à 49.5%
|
||||
|
||||
Scénario: Jauges bornées - ne peut pas dépasser 100%
|
||||
Étant donné que ma jauge "Cryptomonnaie" est à 99%
|
||||
Et qu'un contenu tagué "Cryptomonnaie" est disponible
|
||||
Quand j'écoute le contenu à 95% (like auto renforcé +2%)
|
||||
Alors ma jauge "Cryptomonnaie" passe à 100% (maximum)
|
||||
Et ne dépasse pas 100%
|
||||
|
||||
Scénario: Jauges bornées - ne peut pas descendre sous 0%
|
||||
Étant donné que ma jauge "Politique" est à 0.3%
|
||||
Et qu'un contenu tagué "Politique" est disponible
|
||||
Quand je skip rapidement après 3 secondes (-0.5%)
|
||||
Alors ma jauge "Politique" passe à 0% (minimum)
|
||||
Et ne devient pas négative
|
||||
|
||||
Scénario: Calcul immédiat à chaque action
|
||||
Étant donné que ma jauge "Voyage" est à 50%
|
||||
Quand j'écoute un contenu "Voyage" à 85%
|
||||
Alors la jauge est mise à jour immédiatement (pas de batch)
|
||||
Et passe à 52%
|
||||
Quand je demande mes recommandations dans la seconde suivante
|
||||
Alors l'algorithme utilise déjà la valeur 52%
|
||||
|
||||
Scénario: Like manuel après écoute <30% (pas de like auto)
|
||||
Étant donné qu'un contenu de 10 minutes est tagué "Culture"
|
||||
Et que ma jauge "Culture" est à 60%
|
||||
Quand j'écoute pendant 2 minutes (20%)
|
||||
Alors je ne reçois pas de like automatique
|
||||
Quand je clique sur le bouton "Like"
|
||||
Alors ma jauge "Culture" augmente de 2% uniquement
|
||||
Et ma jauge "Culture" est maintenant à 62%
|
||||
|
||||
Scénario: Unlike retire le like manuel
|
||||
Étant donné que j'ai liké manuellement un contenu "Sport"
|
||||
Et que ma jauge "Sport" est passée de 55% à 57% (+2%)
|
||||
Quand je clique sur "Unlike"
|
||||
Alors ma jauge "Sport" diminue de 2%
|
||||
Et ma jauge "Sport" revient à 55%
|
||||
|
||||
Scénario: Unlike ne peut pas retirer un like automatique
|
||||
Étant donné que j'ai écouté un contenu "Musique" à 90%
|
||||
Et que j'ai reçu un like automatique renforcé (+2%)
|
||||
Et que ma jauge "Musique" est à 52%
|
||||
Quand j'essaie de faire "Unlike"
|
||||
Alors l'action n'est pas disponible
|
||||
Et ma jauge reste à 52%
|
||||
Car les likes automatiques ne peuvent pas être retirés
|
||||
|
||||
Scénario: Tags définis par créateur à la publication
|
||||
Étant donné que je suis un créateur
|
||||
Quand je publie un contenu
|
||||
Alors je dois sélectionner 1 à 3 tags
|
||||
Et ces tags sont fixés après publication
|
||||
Et impacteront les jauges de tous les auditeurs
|
||||
|
||||
Plan du Scénario: Calculs avec différentes durées d'écoute
|
||||
Étant donné qu'un contenu de 10 minutes est tagué "Voyage"
|
||||
Et que ma jauge "Voyage" est à 50%
|
||||
Quand j'écoute pendant <duree> (<pourcentage>)
|
||||
Alors ma jauge évolue de <impact>
|
||||
Et ma nouvelle jauge est à <nouveau_niveau>
|
||||
|
||||
Exemples:
|
||||
| duree | pourcentage | impact | nouveau_niveau |
|
||||
| 1 min | 10% | 0% | 50% |
|
||||
| 3 min | 30% | +1% | 51% |
|
||||
| 5 min | 50% | +1% | 51% |
|
||||
| 7.9 min | 79% | +1% | 51% |
|
||||
| 8 min | 80% | +2% | 52% |
|
||||
| 9.5 min | 95% | +2% | 52% |
|
||||
| 5 sec | <1% | -0.5% | 49.5% |
|
||||
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