Files
roadwave/docs/domains/premium/features/abonnements/impact-algorithme.feature
jpgiannetti 5e5fcf4714 refactor(docs): réorganiser la documentation selon principes DDD
Réorganise la documentation du projet selon les principes du Domain-Driven Design (DDD) pour améliorer la cohésion, la maintenabilité et l'alignement avec l'architecture modulaire du backend.

**Structure cible:**
```
docs/domains/
├── README.md (Context Map)
├── _shared/ (Core Domain)
├── recommendation/ (Supporting Subdomain)
├── content/ (Supporting Subdomain)
├── moderation/ (Supporting Subdomain)
├── advertising/ (Generic Subdomain)
├── premium/ (Generic Subdomain)
└── monetization/ (Generic Subdomain)
```

**Changements effectués:**

Phase 1: Création de l'arborescence des 7 bounded contexts
Phase 2: Déplacement des règles métier (01-19) vers domains/*/rules/
Phase 3: Déplacement des diagrammes d'entités vers domains/*/entities/
Phase 4: Déplacement des diagrammes flux/états/séquences vers domains/*/
Phase 5: Création des README.md pour chaque domaine
Phase 6: Déplacement des features Gherkin vers domains/*/features/
Phase 7: Création du Context Map (domains/README.md)
Phase 8: Mise à jour de mkdocs.yml pour la nouvelle navigation
Phase 9: Correction automatique des liens internes (script fix-markdown-links.sh)
Phase 10: Nettoyage de l'ancienne structure (regles-metier/, diagrammes/, features/)

**Configuration des tests:**
- Makefile: godog run docs/domains/*/features/
- scripts/generate-bdd-docs.py: features_dir → docs/domains

**Avantages:**
 Cohésion forte: toute la doc d'un domaine au même endroit
 Couplage faible: domaines indépendants, dépendances explicites
 Navigabilité améliorée: README par domaine = entrée claire
 Alignement code/docs: miroir de backend/internal/
 Onboarding facilité: exploration domaine par domaine
 Tests BDD intégrés: features au plus près des règles métier

Voir docs/REFACTOR-DDD.md pour le plan complet.
2026-02-07 17:15:02 +01:00

147 lines
7.2 KiB
Gherkin
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# language: fr
Fonctionnalité: Impact des abonnements sur l'algorithme
En tant qu'auditeur
Je veux que les contenus de mes créateurs suivis soient favorisés
Afin de ne pas rater leurs publications tout en découvrant de nouveaux contenus
Contexte:
Étant donné que l'API RoadWave est disponible
Et que je suis connecté en tant qu'auditeur
Et que je suis abonné au créateur "JeanDupont"
Scénario: Boost de +30% appliqué au score final
Étant donné un contenu du créateur "JeanDupont" avec:
| score_geo | 0.5 |
| score_interet | 0.6 |
| score_engage | 0.5 |
Quand le score final est calculé
Alors le score de base est 0.53
Et le boost abonnement de +30% est appliqué
Et le score final avec boost est 0.69
Scénario: Contenu non-suivi peut battre contenu suivi
Étant donné que je suis à Paris
Et que 2 contenus sont disponibles:
| contenu | createur_suivi | score_geo | score_interet | score_engage | score_final_base | score_avec_boost |
| Contenu A | Non | 0.9 | 0.8 | 0.7 | 0.80 | 0.80 |
| Contenu B | Oui | 0.5 | 0.6 | 0.5 | 0.53 | 0.69 |
Quand l'algorithme sélectionne le prochain contenu
Alors le Contenu A est proposé en premier
Car son score (0.80) est supérieur au Contenu B avec boost (0.69)
Scénario: Contenu suivi remporte grâce au boost
Étant donné que je suis à Paris
Et que 2 contenus sont disponibles:
| contenu | createur_suivi | score_final_base | score_avec_boost |
| Contenu A | Non | 0.70 | 0.70 |
| Contenu B | Oui | 0.60 | 0.78 |
Quand l'algorithme sélectionne le prochain contenu
Alors le Contenu B est proposé en premier
Car le boost fait pencher la balance (0.78 > 0.70)
Scénario: Contenu suivi avec faible engagement ne domine pas
Étant donné que je suis abonné au créateur "CreateurMoyen"
Et qu'il publie un contenu avec très faible engagement (score 0.30)
Et qu'un contenu viral d'un créateur non-suivi a un score de 0.85
Quand l'algorithme sélectionne le prochain contenu
Alors le contenu viral est proposé en premier (0.85)
Car même avec boost, le contenu suivi obtient seulement 0.39 (0.30 × 1.3)
Scénario: Pas de file dédiée aux abonnements
Étant donné que je suis abonné à 50 créateurs
Quand l'algorithme génère ma file d'attente de 5 contenus
Alors les contenus suivis et non-suivis sont mélangés
Et tous entrent en compétition selon leurs scores (avec boost si abonnement)
Et il n'y a pas de section séparée "Contenus de vos abonnements"
Scénario: Vérification du calcul du boost
Étant donné un contenu d'un créateur suivi
Et que le score final de base est calculé à 0.65
Quand le boost abonnement est appliqué
Alors le multiplicateur utilisé est exactement 1.3
Et le score final avec boost est 0.845 (0.65 × 1.3)
Et le résultat est arrondi à 2 décimales: 0.85
Scénario: Boost appliqué à tous les contenus du créateur suivi
Étant donné que je suis abonné au créateur "JeanDupont"
Et qu'il a publié 10 contenus différents
Quand l'algorithme évalue chacun de ces contenus
Alors le boost de +30% est appliqué à tous les 10 contenus
Et chaque contenu bénéficie du même multiplicateur 1.3
Scénario: Plusieurs créateurs suivis en compétition
Étant donné que je suis abonné à "Créateur A" et "Créateur B"
Et que les 2 ont des contenus disponibles dans ma zone:
| createur | score_base | score_avec_boost |
| Créateur A | 0.70 | 0.91 |
| Créateur B | 0.65 | 0.85 |
Quand l'algorithme sélectionne le prochain contenu
Alors le contenu du Créateur A est proposé en premier (0.91 > 0.85)
Et les 2 bénéficient du boost, mais le meilleur score gagne
Scénario: Contenu national d'un créateur suivi
Étant donné que je suis abonné à "MediaNational"
Et qu'il publie un contenu de type "National" (score_geo 0.2)
Quand le score est calculé avec:
| score_geo | score_interet | score_engage |
| 0.2 | 0.7 | 0.6 |
Alors le score de base est environ 0.50
Et avec le boost abonnement, le score devient 0.65
Et le contenu peut être proposé malgré son score géo faible
Scénario: Transparence du boost dans les paramètres
Quand j'accède aux paramètres de l'algorithme de recommandation
Alors je vois l'information: "Les contenus de vos créateurs suivis bénéficient d'un boost de +30%"
Et je comprends que ce n'est pas une priorité absolue
Et que la découverte de nouveaux contenus reste possible
Scénario: Boost désactivé si désabonnement
Étant donné que je suis abonné au créateur "JeanDupont"
Et qu'un de ses contenus bénéficiait du boost +30%
Quand je me désabonne de "JeanDupont"
Alors ses contenus n'ont plus le boost
Et leur score revient au score de base sans multiplicateur
Scénario: Contenu d'un créateur nouvellement suivi
Étant donné que je viens de m'abonner à "NouveauCreateur"
Et qu'il a publié un contenu il y a 2 jours
Quand l'algorithme recalcule les scores
Alors le boost de +30% est immédiatement appliqué à ce contenu
Et il peut apparaître dans ma prochaine file d'attente
Scénario: Impact sur le taux de contenu suivi dans le feed
Étant donné que je suis abonné à 30 créateurs
Et que j'écoute 100 contenus sur une semaine
Quand j'analyse la répartition
Alors environ 40-50% des contenus proviennent de créateurs suivis
Et 50-60% proviennent de créateurs non-suivis (découverte)
Car le boost favorise sans dominer
Scénario: Contenu suivi hors zone géographique
Étant donné que je suis à Paris
Et que je suis abonné à un créateur de Marseille
Et qu'il publie un contenu ancré à Marseille (hors de portée)
Quand l'algorithme évalue ce contenu
Alors le score géo est quasi nul (0.05)
Et même avec boost +30%, le score reste très faible
Et le contenu n'est probablement pas proposé
Scénario: Performance de calcul du boost
Étant donné que je suis abonné à 100 créateurs
Et que l'algorithme évalue 1000 contenus potentiels
Quand le calcul des scores avec boost est effectué
Alors le temps de calcul reste inférieur à 50ms
Car le boost est une simple multiplication (opération O(1))
Et la requête SQL utilise un JOIN sur la table abonnements
Scénario: Boost combiné avec d'autres facteurs
Étant donné un contenu d'un créateur suivi
Et que le contenu bénéficie aussi de:
| facteur | impact |
| Score d'engagement élevé | +20% |
| Contenu récent (<24h) | +10% |
| Boost abonnement | +30% |
Quand le score final est calculé
Alors le boost abonnement s'applique au score final (après tous les autres calculs)
Et les boosts ne s'additionnent pas, le boost abonnement est un multiplicateur final