Initial commit

This commit is contained in:
jpgiannetti
2026-01-31 11:45:11 +01:00
commit f99fb3c614
166 changed files with 115155 additions and 0 deletions

View 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

View 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% |

View 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