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:
307
features/ui/audio-guides/premium-monetisation.feature
Normal file
307
features/ui/audio-guides/premium-monetisation.feature
Normal file
@@ -0,0 +1,307 @@
|
||||
# language: fr
|
||||
|
||||
Fonctionnalité: Audio-guides Premium et monétisation
|
||||
En tant que créateur
|
||||
Je veux pouvoir proposer des audio-guides Premium
|
||||
Afin de monétiser mon contenu de qualité
|
||||
|
||||
Contexte:
|
||||
Étant donné que l'application RoadWave est démarrée
|
||||
Et que le créateur "guide@example.com" est connecté et vérifié
|
||||
|
||||
# 16.9 - Audio-guides Premium
|
||||
|
||||
Scénario: Création d'un audio-guide Premium
|
||||
Étant donné que le créateur crée un audio-guide "Visite VIP Versailles"
|
||||
Quand il accède aux paramètres de monétisation (étape 4)
|
||||
Alors il peut choisir:
|
||||
| option | description |
|
||||
| Gratuit | Accessible à tous (avec pubs) |
|
||||
| Premium | Réservé abonnés Premium |
|
||||
|
||||
Scénario: Badge Premium visible sur l'audio-guide
|
||||
Étant donné un audio-guide configuré en Premium
|
||||
Quand il est affiché dans les résultats de recherche
|
||||
Alors un badge "👑 Premium" est visible
|
||||
Et la cover image a un cadre doré subtil
|
||||
|
||||
Scénario: Preview 3 premières séquences pour utilisateurs gratuits
|
||||
Étant donné un audio-guide Premium "Visite VIP Versailles" avec 15 séquences
|
||||
Et qu'un utilisateur gratuit ouvre l'audio-guide
|
||||
Quand il consulte la liste des séquences
|
||||
Alors les séquences affichent:
|
||||
| séquence | état |
|
||||
| 1 | ✅ Accessible (preview) |
|
||||
| 2 | ✅ Accessible (preview) |
|
||||
| 3 | ✅ Accessible (preview) |
|
||||
| 4 | 🔒 Réservé Premium |
|
||||
| 5-15 | 🔒 Réservé Premium |
|
||||
|
||||
Scénario: Écoute des 3 premières séquences sans blocage
|
||||
Étant donné un utilisateur gratuit
|
||||
Et un audio-guide Premium avec preview
|
||||
Quand il écoute les séquences 1, 2 et 3
|
||||
Alors aucune publicité n'est insérée (preview = teasing)
|
||||
Et l'écoute est fluide
|
||||
|
||||
Scénario: Paywall après la 3ème séquence
|
||||
Étant donné qu'un utilisateur gratuit termine la séquence 3
|
||||
Quand la séquence se termine
|
||||
Alors un overlay paywall s'affiche immédiatement:
|
||||
"""
|
||||
👑 Contenu réservé Premium
|
||||
|
||||
Continuez cette expérience exclusive
|
||||
et accédez à 12 séquences supplémentaires
|
||||
|
||||
✓ Sans publicité
|
||||
✓ Accès illimité à tous les contenus Premium
|
||||
✓ Téléchargement offline
|
||||
✓ Audio haute qualité
|
||||
|
||||
[Passer Premium - 4.99€/mois]
|
||||
[Découvrir d'autres audio-guides gratuits]
|
||||
"""
|
||||
|
||||
Scénario: Bouton "Passer Premium" vers tunnel d'abonnement
|
||||
Étant donné que l'overlay paywall Premium est affiché
|
||||
Quand l'utilisateur clique sur "Passer Premium"
|
||||
Alors il est redirigé vers la page d'abonnement Mangopay
|
||||
Et l'audio-guide actuel est marqué en "pending" (reprise après souscription)
|
||||
|
||||
Scénario: Reprise automatique après souscription Premium
|
||||
Étant donné qu'un utilisateur s'est abonné Premium depuis un paywall audio-guide
|
||||
Quand l'abonnement est activé
|
||||
Alors il est redirigé vers l'audio-guide automatiquement
|
||||
Et la séquence 4 démarre immédiatement
|
||||
Et un toast de bienvenue s'affiche: "✨ Bienvenue Premium ! Profitez de votre audio-guide"
|
||||
|
||||
Scénario: Utilisateur Premium - Accès complet immédiat
|
||||
Étant donné qu'un utilisateur Premium ouvre un audio-guide Premium
|
||||
Quand il consulte la liste des séquences
|
||||
Alors toutes les 15 séquences sont accessibles
|
||||
Et aucun paywall ne s'affiche
|
||||
Et aucune publicité n'est insérée
|
||||
|
||||
Scénario: Pas de preview si l'audio-guide a <3 séquences
|
||||
Étant donné un audio-guide Premium avec seulement 2 séquences
|
||||
Quand un utilisateur gratuit tente de l'ouvrir
|
||||
Alors un paywall s'affiche immédiatement (avant lecture)
|
||||
Et aucune preview n'est disponible
|
||||
|
||||
# 16.10 - Revenus créateur
|
||||
|
||||
Scénario: Rémunération créateur pour audio-guide Premium
|
||||
Étant donné un créateur avec un audio-guide Premium
|
||||
Et que 50 utilisateurs Premium ont écouté l'audio-guide ce mois
|
||||
Quand la répartition des revenus est calculée
|
||||
Alors le créateur reçoit 70% des revenus proportionnels
|
||||
Et la formule est: (Écoutes créateur / Total écoutes Premium) × 70% pool Premium
|
||||
|
||||
Scénario: Dashboard revenus par audio-guide
|
||||
Étant donné qu'un créateur a 3 audio-guides Premium publiés
|
||||
Quand il consulte son dashboard revenus
|
||||
Alors il voit pour chaque audio-guide:
|
||||
| audio_guide | ecoutes_mois | revenus_estime |
|
||||
| Visite VIP Versailles | 142 | 45.20 € |
|
||||
| Secrets du Louvre | 89 | 28.50 € |
|
||||
| Châteaux de la Loire | 203 | 64.80 € |
|
||||
|
||||
Scénario: Comparaison gratuit vs Premium
|
||||
Étant donné qu'un créateur a publié 2 audio-guides:
|
||||
| titre | type | ecoutes_mois | revenus |
|
||||
| Tour de Paris | Gratuit | 1200 | 12.50 € |
|
||||
| Visite VIP Versailles| Premium | 142 | 45.20 € |
|
||||
Quand il consulte son dashboard
|
||||
Alors il peut comparer les performances
|
||||
Et constater que Premium génère plus de revenus par écoute
|
||||
|
||||
Scénario: Seuil minimum de paiement (20€)
|
||||
Étant donné qu'un créateur a généré 18€ de revenus ce mois
|
||||
Quand le paiement mensuel est traité
|
||||
Alors le montant est reporté au mois suivant
|
||||
Et un message s'affiche: "Seuil minimum non atteint (20€). Montant reporté."
|
||||
|
||||
Scénario: Paiement automatique mensuel
|
||||
Étant donné qu'un créateur a généré 138.50€ de revenus en janvier
|
||||
Quand le 5 février arrive
|
||||
Alors le paiement est initié automatiquement via Mangopay
|
||||
Et le créateur reçoit une notification: "Paiement de 138.50€ en cours"
|
||||
Et les fonds arrivent sous 2-3 jours ouvrés
|
||||
|
||||
# 16.11 - Publicités dans audio-guides gratuits
|
||||
|
||||
Scénario: Insertion publicité toutes les 5 séquences (gratuit)
|
||||
Étant donné un audio-guide gratuit avec 12 séquences
|
||||
Et un utilisateur gratuit
|
||||
Quand il termine la séquence 5
|
||||
Alors une publicité démarre automatiquement
|
||||
Quand il termine la séquence 10
|
||||
Alors une deuxième publicité démarre
|
||||
|
||||
Scénario: Publicité après séquence en mode piéton (avec pause)
|
||||
Étant donné un audio-guide piéton gratuit
|
||||
Quand la séquence 5 se termine
|
||||
Alors la publicité démarre automatiquement (pas d'attente bouton)
|
||||
Et la pub est skippable après 5 secondes
|
||||
Quand la publicité se termine
|
||||
Alors le player se met en pause
|
||||
Et l'utilisateur doit cliquer sur [▶|] pour continuer
|
||||
|
||||
Scénario: Publicité en mode voiture/vélo/transport (automatique)
|
||||
Étant donné un audio-guide voiture gratuit
|
||||
Quand la séquence 5 se termine
|
||||
Alors la publicité démarre automatiquement
|
||||
Quand la publicité se termine
|
||||
Alors la séquence 6 démarre automatiquement (pas de pause)
|
||||
Parce que l'utilisateur est en conduite (mode hands-free)
|
||||
|
||||
Scénario: Publicités géolocalisées dans audio-guides
|
||||
Étant donné un audio-guide dans la région "Île-de-France"
|
||||
Quand une publicité doit être insérée
|
||||
Alors l'API publicitaire filtre par:
|
||||
| critère | valeur |
|
||||
| Géolocalisation | Île-de-France |
|
||||
| Catégorie | Tourisme, Culture |
|
||||
| Langue | Français |
|
||||
|
||||
Scénario: Comptabilisation des impressions pub pour créateur
|
||||
Étant donné qu'un audio-guide gratuit génère 200 écoutes complètes
|
||||
Et que chaque écoute complète = 2 publicités (séq. 5 et 10)
|
||||
Quand les revenus pub sont calculés
|
||||
Alors 400 impressions sont comptabilisées
|
||||
Et le créateur reçoit 0.80€ (400 × 0.002€)
|
||||
|
||||
# 16.12 - Stratégies de conversion
|
||||
|
||||
Scénario: CTA Premium après audio-guide gratuit complété
|
||||
Étant donné qu'un utilisateur gratuit complète un audio-guide gratuit
|
||||
Quand il termine la dernière séquence
|
||||
Alors un overlay s'affiche:
|
||||
"""
|
||||
🎉 Audio-guide complété !
|
||||
|
||||
Vous avez aimé cette expérience ?
|
||||
Découvrez nos audio-guides Premium pour aller plus loin
|
||||
|
||||
[Découvrir Premium] [Fermer]
|
||||
"""
|
||||
|
||||
Scénario: Recommandations d'audio-guides Premium après gratuit
|
||||
Étant donné qu'un utilisateur termine un audio-guide gratuit "Tour de Paris"
|
||||
Quand l'overlay de fin s'affiche
|
||||
Alors 3 audio-guides Premium similaires sont suggérés:
|
||||
| titre | type | créateur |
|
||||
| Secrets de Montmartre | Premium | @paris_stories |
|
||||
| Visite VIP Musée d'Orsay | Premium | @art_guide |
|
||||
| Paris hors des sentiers | Premium | @explore_paris |
|
||||
|
||||
Scénario: Badge "Premium recommandé" sur audio-guides populaires
|
||||
Étant donné un audio-guide Premium avec >500 écoutes et note >4.5/5
|
||||
Quand il est affiché dans les résultats de recherche
|
||||
Alors un badge "⭐ Premium recommandé" est visible
|
||||
Et il est mis en avant dans les résultats
|
||||
|
||||
Scénario: Conversion tracking pour attribution créateur
|
||||
Étant donné qu'un utilisateur découvre Premium via un audio-guide créateur
|
||||
Quand il s'abonne
|
||||
Alors la conversion est trackée:
|
||||
| donnée | valeur |
|
||||
| source_conversion | audio_guide_paywall |
|
||||
| audio_guide_id | visite_vip_versailles_123 |
|
||||
| creator_id | guide_versailles_456 |
|
||||
Et le créateur bénéficie d'un bonus de conversion
|
||||
|
||||
# 16.13 - Offres spéciales
|
||||
|
||||
Scénario: Essai gratuit 7 jours Premium via audio-guide
|
||||
Étant donné qu'un utilisateur gratuit atteint le paywall d'un audio-guide Premium
|
||||
Et qu'il n'a jamais essayé Premium
|
||||
Quand l'overlay s'affiche
|
||||
Alors une offre d'essai est proposée:
|
||||
"""
|
||||
👑 Essayez Premium gratuitement pendant 7 jours
|
||||
|
||||
✓ Accès complet à cet audio-guide
|
||||
✓ Tous les contenus Premium débloqués
|
||||
✓ Sans engagement, annulable à tout moment
|
||||
|
||||
[Démarrer l'essai gratuit] [Plus tard]
|
||||
"""
|
||||
|
||||
Scénario: Activation immédiate après essai gratuit
|
||||
Étant donné qu'un utilisateur démarre un essai gratuit 7 jours
|
||||
Quand l'essai est activé
|
||||
Alors l'audio-guide Premium démarre immédiatement
|
||||
Et toutes les séquences sont débloquées
|
||||
Et aucune publicité n'est insérée
|
||||
|
||||
Scénario: Rappel 2 jours avant fin d'essai
|
||||
Étant donné qu'un utilisateur a démarré un essai gratuit le 15/01
|
||||
Quand le 20/01 arrive (J-2)
|
||||
Alors une notification est envoyée:
|
||||
"""
|
||||
⏰ Votre essai Premium se termine dans 2 jours
|
||||
|
||||
Continuez à profiter de tous les audio-guides Premium
|
||||
pour seulement 4.99€/mois
|
||||
|
||||
[Rester Premium] [Gérer abonnement]
|
||||
"""
|
||||
|
||||
# Cas d'usage
|
||||
|
||||
Scénario: Créateur mix gratuit + Premium
|
||||
Étant donné qu'un créateur a publié 5 audio-guides:
|
||||
| titre | type |
|
||||
| Découverte de Paris | Gratuit |
|
||||
| Visite VIP Louvre | Premium |
|
||||
| Balade Montmartre | Gratuit |
|
||||
| Secrets Versailles | Premium |
|
||||
| Visite express Orsay | Gratuit |
|
||||
Quand un utilisateur découvre son profil
|
||||
Alors les audio-guides gratuits servent de teasing
|
||||
Et les audio-guides Premium sont mis en avant avec badge
|
||||
|
||||
Scénario: Utilisateur hésite à s'abonner
|
||||
Étant donné qu'un utilisateur atteint le paywall d'un audio-guide Premium
|
||||
Et qu'il clique sur "Découvrir d'autres audio-guides gratuits"
|
||||
Quand il revient 2 jours plus tard sur le même audio-guide
|
||||
Alors le paywall s'affiche à nouveau
|
||||
Et une réduction temporaire est proposée: "Offre spéciale : -20% premier mois"
|
||||
|
||||
# Cas d'erreur
|
||||
|
||||
Scénario: Échec du paiement Premium via paywall
|
||||
Étant donné qu'un utilisateur tente de s'abonner Premium
|
||||
Quand le paiement Mangopay échoue
|
||||
Alors un message d'erreur s'affiche:
|
||||
"""
|
||||
❌ Paiement refusé
|
||||
Vérifiez vos informations bancaires ou contactez votre banque.
|
||||
[Réessayer] [Annuler]
|
||||
"""
|
||||
|
||||
Scénario: Abonnement Premium expiré pendant écoute
|
||||
Étant donné qu'un utilisateur Premium écoute un audio-guide Premium
|
||||
Et que son abonnement expire pendant l'écoute (séquence 8/15)
|
||||
Quand l'expiration est détectée
|
||||
Alors l'écoute continue jusqu'à la fin de la séquence en cours
|
||||
Et un overlay s'affiche ensuite:
|
||||
"""
|
||||
⚠️ Votre abonnement Premium a expiré
|
||||
|
||||
Renouvelez pour continuer à profiter des contenus exclusifs
|
||||
[Renouveler - 4.99€/mois] [Plus tard]
|
||||
"""
|
||||
|
||||
Scénario: Créateur change audio-guide de gratuit à Premium
|
||||
Étant donné qu'un audio-guide gratuit a 50 utilisateurs avec progression
|
||||
Quand le créateur le passe en Premium
|
||||
Alors les utilisateurs ayant déjà commencé gardent l'accès complet
|
||||
Et seuls les nouveaux utilisateurs sont soumis au paywall
|
||||
Et un message de transparence s'affiche:
|
||||
"""
|
||||
ℹ️ Cet audio-guide est maintenant Premium
|
||||
Vous conservez votre accès car vous l'aviez démarré avant le changement.
|
||||
"""
|
||||
Reference in New Issue
Block a user