Files
roadwave/docs/domains/content/features/ui-navigation/actions-mode-pieton.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

196 lines
8.0 KiB
Gherkin
Raw Permalink 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é: Actions complémentaires - Mode piéton
En tant qu'auditeur en mode piéton
Je veux accéder à des actions avancées depuis l'application mobile
Afin de liker explicitement, m'abonner ou signaler du contenu
Contexte:
Étant donné que l'API RoadWave est disponible
Et qu'un utilisateur est connecté
Et qu'il est en mode piéton (vitesse < 5 km/h)
Scénario: Like explicite avec bouton cœur
Étant donné que j'écoute un contenu tagué "Automobile"
Et que ma jauge "Automobile" est à 60%
Quand je clique sur le bouton cœur "Like"
Alors ma jauge "Automobile" augmente de 2%
Et une animation de cœur rouge s'affiche
Et une vibration courte est déclenchée
Et ma jauge "Automobile" est maintenant à 62%
Scénario: Like explicite cumulable avec like automatique
Étant donné que j'ai écouté un contenu "Voyage" à 85%
Et que j'ai reçu un like automatique renforcé (+2%)
Et que ma jauge "Voyage" est à 52%
Quand je clique sur le bouton cœur "Like"
Alors ma jauge "Voyage" augmente encore de 2%
Et ma jauge "Voyage" passe à 54%
Et les deux likes sont cumulés
Scénario: Unlike retire le like manuel uniquement
Étant donné que j'ai liké manuellement un contenu "Sport"
Et que ma jauge "Sport" est à 57%
Quand je clique à nouveau sur le bouton cœur (toggle)
Alors le cœur redevient vide (unlike)
Et ma jauge "Sport" diminue de 2%
Et ma jauge "Sport" revient à 55%
Scénario: Unlike ne retire pas le 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%
Et que je n'ai PAS liké manuellement
Quand je consulte l'interface
Alors le bouton "Unlike" n'est pas disponible
Et le cœur reste grisé (aucun like manuel)
Et ma jauge reste à 52%
Scénario: Abonnement à un créateur
É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 clique sur "S'abonner" sur le profil du créateur
Alors ma jauge "Automobile" augmente de 5%
Et ma jauge "Technologie" augmente de 5%
Et une animation d'étoile dorée s'affiche
Et un badge "Abonné ✓" apparaît sur le profil
Et mes nouvelles jauges sont:
| catégorie | niveau |
| Automobile | 55% |
| Technologie | 50% |
Scénario: Désabonnement d'un créateur
Étant donné que je suis abonné à un créateur
Et que mes jauges "Automobile" et "Technologie" sont à 55% et 50%
Quand je clique sur "Se désabonner"
Alors ma jauge "Automobile" diminue de 5%
Et ma jauge "Technologie" diminue de 5%
Et le badge "Abonné ✓" disparaît
Et mes nouvelles jauges sont:
| catégorie | niveau |
| Automobile | 50% |
| Technologie | 45% |
Scénario: Signalement d'un contenu inapproprié
Étant donné que j'écoute un contenu
Quand je clique sur le menu contextuel "⋮"
Et que je sélectionne "Signaler"
Alors un formulaire de signalement s'ouvre
Et je dois sélectionner une catégorie:
| Catégorie |
| Haine et violence |
| Contenu sexuel |
| Illégalité |
| Droits d'auteur |
| Spam |
| Désinformation (fake news) |
| Autre |
Et je peux ajouter un commentaire optionnel
Et le signalement est envoyé au flux de modération
Scénario: Feedback visuel pour like explicite
Étant donné que je clique sur le bouton cœur
Quand le like est enregistré
Alors une animation de cœur rouge se lance (0.5s)
Et le cœur reste rouge plein
Et une vibration haptique courte est déclenchée (iOS: .light, Android: 50ms)
Et un badge "♥ Ajouté à vos favoris" s'affiche 2 secondes
Scénario: Feedback visuel pour abonnement
Étant donné que je clique sur "S'abonner"
Quand l'abonnement est enregistré
Alors une animation d'étoile dorée se lance (0.8s)
Et le bouton devient "Abonné ✓" avec badge doré
Et une notification "Abonné à [Créateur]" s'affiche
Et les contenus du créateur seront boostés +30% dans l'algo
Scénario: Menu contextuel avec toutes les options
Étant donné que j'utilise l'app en mode piéton
Quand je clique sur le menu "⋮" (3 points verticaux)
Alors les options disponibles sont:
| Option |
| Like (cœur) |
| S'abonner au créateur |
| Signaler |
| Partager |
| Voir le profil du créateur |
| Télécharger (mode offline) |
Et toutes les options sont cliquables
Scénario: Persistance des likes manuels en base de données
Étant donné que je like manuellement 5 contenus
Quand je ferme l'application
Et que je me reconnecte plus tard
Alors tous mes likes manuels sont toujours présents
Et les cœurs rouges sont affichés sur les contenus likés
Et mes jauges reflètent toujours l'impact (+2% × 5 likes)
Scénario: Liste "Mes contenus likés" accessible dans profil
Étant donné que j'ai liké manuellement 10 contenus
Quand j'accède à mon profil utilisateur
Alors je vois une section "❤️ Mes favoris"
Et la liste affiche les 10 contenus likés
Et je peux cliquer pour réécouter
Et je peux retirer un like (unlike) depuis cette liste
Scénario: Liste "Mes abonnements" accessible dans profil
Étant donné que je suis abonné à 5 créateurs
Quand j'accède à mon profil utilisateur
Alors je vois une section "⭐ Mes abonnements"
Et la liste affiche les 5 créateurs avec leurs avatars
Et je peux accéder au profil de chaque créateur
Et je peux me désabonner depuis cette liste
Scénario: Impact abonnement sur tous les tags du créateur
Étant donné qu'un créateur a publié des contenus avec ces tags:
| Contenu | Tags |
| C1 | Automobile, Voyage |
| C2 | Automobile, Technologie |
| C3 | Voyage, Famille |
Et que mes jauges sont toutes à 50%
Quand je m'abonne à ce créateur
Alors les jauges impactées sont:
| Tag | Impact |
| Automobile | +5% |
| Voyage | +5% |
| Technologie | +5% |
| Famille | +5% |
Et toutes les autres jauges restent à 50%
Scénario: Limite d'abonnements (200 maximum)
Étant donné que je suis abonné à 200 créateurs
Quand j'essaie de m'abonner à un 201ème créateur
Alors un message "Limite de 200 abonnements atteinte" s'affiche
Et je dois me désabonner d'un créateur existant pour en ajouter un nouveau
Scénario: Confirmation avant désabonnement
Étant donné que je suis abonné à un créateur
Quand je clique sur "Se désabonner"
Alors une popup de confirmation s'affiche:
"""
Se désabonner de @CreateurNom ?
Vous ne recevrez plus de notifications pour ses contenus.
Vos jauges diminueront de 5%.
"""
Et je dois confirmer pour valider
Et je peux annuler pour conserver l'abonnement
Plan du Scénario: Cumul like automatique + like manuel
Étant donné qu'un contenu est tagué "Sport"
Et que ma jauge "Sport" est à 50%
Quand j'écoute à <pourcentage>% (like auto <auto>)
Et que je like manuellement (+2%)
Alors l'impact total est <total>
Et ma nouvelle jauge est <nouveau_niveau>
Exemples:
| pourcentage | auto | total | nouveau_niveau |
| 10 | 0 | +2% | 52% |
| 30 | +1% | +3% | 53% |
| 50 | +1% | +3% | 53% |
| 80 | +2% | +4% | 54% |
| 95 | +2% | +4% | 54% |