Files
roadwave/features/api/premium/offre-tarification.feature
jpgiannetti 37c62206ad 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>
2026-02-01 11:31:41 +01:00

255 lines
12 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é: Offre et tarification Premium
En tant qu'utilisateur
Je veux pouvoir souscrire à un abonnement Premium
Afin de profiter d'une expérience sans publicité avec des avantages exclusifs
Contexte:
Étant donné que l'API RoadWave est disponible
Et que je suis connecté en tant qu'utilisateur
# ===== FORMULES DISPONIBLES =====
Scénario: Formule mensuelle à 4.99€/mois
Étant donné que je consulte les offres Premium
Quand je vois la formule mensuelle
Alors le prix affiché est 4.99/mois
Et il n'y a aucune réduction
Et le prix effectif par mois est 4.99
Scénario: Formule annuelle à 49.99€/an (2 mois offerts)
Étant donné que je consulte les offres Premium
Quand je vois la formule annuelle
Alors le prix affiché est 49.99/an
Et l'économie affichée est "2 mois offerts"
Et le prix effectif par mois est 4.16
Et je vois le badge "Meilleure offre"
Scénario: Calcul économie formule annuelle
Étant donné que la formule mensuelle coûte 4.99/mois
Quand je calcule le coût annuel en mensuel
Alors 12 mois × 4.99 = 59.88/an
Et la formule annuelle coûte 49.99
Et l'économie est de 9.89 ( 2 mois gratuits)
Et la réduction est de 16.5%
Scénario: Pas d'essai gratuit disponible
Étant donné que je consulte les offres Premium
Quand je recherche une option "Essai gratuit"
Alors aucune option d'essai gratuit n'est proposée
Et je dois payer dès le premier jour pour accéder au Premium
Scénario: Justification absence essai gratuit - Anti-abus vacances
Étant donné que RoadWave ne propose pas d'essai gratuit
Quand un utilisateur envisage un road trip de 14 jours
Alors il ne peut pas s'abonner pour l'essai gratuit puis annuler
Et cela évite les inscriptions opportunistes
Et protège les revenus des créateurs
Scénario: Justification absence essai gratuit - Protection revenus créateurs
Étant donné qu'un utilisateur Premium écoute des contenus
Quand il génère des écoutes dès le jour 1
Alors les créateurs sont rémunérés immédiatement (70% de 4.99)
Et il n'y a pas de "période gratuite" sans rémunération créateurs
Scénario: Justification absence essai gratuit - Simplicité
Étant donné que RoadWave gère les abonnements
Quand il n'y a pas d'essai gratuit
Alors pas de gestion complexe de période trial
Et pas de workflow de conversion trial payant
Et cela réduit la complexité technique
Scénario: Justification absence essai gratuit - Engagement
Étant donné qu'un utilisateur paie dès le début
Quand il souscrit à Premium
Alors il est plus engagé qu'un utilisateur en essai gratuit
Et le taux de churn est généralement plus faible
Et la lifetime value (LTV) est plus élevée
Scénario: Pas de partage familial au MVP
Étant donné que je consulte les offres Premium
Quand je recherche une option "Famille" ou "Partage"
Alors aucune option de partage familial n'est disponible
Et seuls les abonnements individuels sont proposés
Scénario: Justification absence partage familial - Complexité technique
Étant donné que le partage familial nécessite:
| fonctionnalité | complexité |
| Gestion invitations | Moyenne |
| Validation liens famille | Moyenne |
| Limite devices par membre | Élevée |
| Dashboard admin famille | Élevée |
Quand RoadWave évalue le ROI
Alors le coût dev/support est trop élevé pour le MVP
Et la fonctionnalité est reportée post-MVP
Scénario: Justification absence partage familial - Risque abus
Étant donné qu'une offre famille permet 5-6 membres
Quand il n'y a pas de vérification stricte de lien familial
Alors des "familles" de 6 inconnus pourraient se former
Et cela réduirait fortement les revenus (6 personnes pour 1 abonnement)
Scénario: Justification absence partage familial - Cible individuelle
Étant donné que RoadWave cible principalement les conducteurs
Quand chaque conducteur utilise l'app individuellement en voiture
Alors le besoin de partage familial est limité
Et la plupart des utilisateurs sont des individus (pas des familles)
Scénario: Post-MVP - Offre Famille à 9.99€/mois pour 5 comptes
Étant donné que RoadWave envisage une offre Famille post-MVP
Quand la fonctionnalité est spécifiée
Alors le prix serait 9.99/mois pour 5 comptes
Et cela représente 2/mois/personne
Mais cette offre n'est pas disponible au MVP
Scénario: Comparaison tarif - Spotify à 10.99€/mois
Étant donné que Spotify Premium coûte 10.99/mois
Quand RoadWave fixe son prix à 4.99/mois
Alors RoadWave est 54.5% moins cher que Spotify
Et cela positionne RoadWave comme très accessible
Scénario: Comparaison tarif - YouTube Premium à 11.99€/mois
Étant donné que YouTube Premium coûte 11.99/mois
Quand RoadWave fixe son prix à 4.99/mois
Alors RoadWave est 58.4% moins cher que YouTube Premium
Et cela est un argument commercial fort
Scénario: Comparaison tarif - Apple Music à 10.99€/mois
Étant donné qu'Apple Music coûte 10.99/mois
Quand RoadWave fixe son prix à 4.99/mois
Alors RoadWave est 54.5% moins cher qu'Apple Music
Et cela attire les utilisateurs sensibles au prix
Scénario: Justification tarif bas - Cible conducteurs quotidiens
Étant donné que RoadWave cible les trajets quotidiens domicile-travail
Quand le prix est fixé à 4.99/mois
Alors c'est un budget raisonnable pour un conducteur
Et équivalent à ~1-2 cafés/mois
Et psychologiquement acceptable pour un usage quotidien
Scénario: Justification formule annuelle - Engagement long terme
Étant donné que la formule annuelle offre 2 mois gratuits
Quand un utilisateur souscrit pour 1 an
Alors il s'engage sur le long terme
Et RoadWave sécurise 49.99 de revenus immédiatement
Et le cash flow est amélioré
Scénario: Justification formule annuelle - Réduction churn
Étant donné qu'un utilisateur paie 49.99 pour l'année
Quand il envisage d'arrêter après 3 mois
Alors il a déjà payé pour 12 mois
Et il continuera probablement à utiliser l'app
Et le taux de churn est réduit significativement
Scénario: Affichage comparatif des deux formules
Étant donné que je consulte la page Premium
Quand je vois les deux formules côte à côte
Alors je vois:
```
MENSUEL ANNUEL Meilleure offre
4.99/mois 49.99/an
soit 4.16/mois
Engagement 1 mois
💰 2 mois offerts !
Économie: 9.89/an
[S'abonner] [S'abonner]
```
Scénario: Mise en avant formule annuelle
Étant donné que je consulte la page Premium
Quand je vois les deux formules
Alors la formule annuelle a un badge "Meilleure offre"
Et elle est visuellement mise en avant (bordure colorée, taille plus grande)
Et l'économie de 2 mois est affichée en gros
Et cela incite à choisir la formule annuelle
Scénario: Lien "Pourquoi pas d'essai gratuit ?" en FAQ
Étant donné que je consulte la page Premium
Quand je clique sur "FAQ"
Alors je vois une question "Pourquoi pas d'essai gratuit ?"
Et la réponse explique:
"""
RoadWave ne propose pas d'essai gratuit pour 3 raisons:
1. Protection des créateurs: Vos écoutes rémunèrent les créateurs dès le premier jour.
2. Engagement: Un abonnement payant dès le début garantit une meilleure expérience.
3. Anti-abus: Éviter les inscriptions opportunistes (essai avant vacances puis annulation).
Le prix de 4.99/mois reste très accessible (moitié prix de Spotify/YouTube Premium).
"""
Scénario: A/B test formule annuelle (post-MVP)
Étant donné que RoadWave veut optimiser la conversion annuelle
Quand un A/B test est lancé
Alors groupe A voit "2 mois offerts" (économie en durée)
Et groupe B voit "Économisez 9.89" (économie en argent)
Et les taux de souscription sont mesurés
Et le message le plus performant est déployé
Scénario: Promo temporaire exceptionnelle (Black Friday, etc.)
Étant donné que c'est le Black Friday
Quand une promo temporaire est activée
Alors la formule annuelle peut passer à 39.99/an (au lieu de 49.99)
Et l'économie affichée est "4 mois offerts !"
Et la promo dure 3 jours uniquement
Et cela génère un pic de souscriptions
Scénario: Code promo partenariat influenceur
Étant donné qu'un influenceur promeut RoadWave
Quand il partage un code promo "INFLUENCEUR20"
Alors les utilisateurs obtiennent -20% sur le premier mois (3.99 au lieu de 4.99)
Et le code est valable 1 mois
Et les conversions sont trackées par code promo
Scénario: Statistiques admin - Répartition formules
Étant donné qu'un admin consulte les métriques d'abonnements
Quand il accède au dashboard
Alors il voit:
| métrique | valeur |
| Abonnés Premium total | 12,547 |
| Abonnés mensuels | 7,234 (58%)|
| Abonnés annuels | 5,313 (42%)|
| Revenus mensuels récurrents | 58,890 |
Et ces données aident à piloter la stratégie tarifaire
Scénario: Calcul revenus mensuels récurrents (MRR)
Étant donné que RoadWave a:
| formule | nombre abonnés | prix |
| Mensuel | 7,234 | 4.99/mois|
| Annuel | 5,313 | 49.99/an |
Quand le MRR est calculé
Alors MRR mensuel = 7,234 × 4.99 = 36,098
Et MRR annuel ramené au mois = 5,313 × 49.99 / 12 = 22,139
Et MRR total = 58,237/mois
Scénario: Projection revenus annuels (ARR)
Étant donné que le MRR est de 58,237
Quand l'ARR est calculé
Alors ARR = 58,237 × 12 = 698,844/an
Et cela aide à évaluer la valorisation de l'entreprise
Scénario: Affichage prix TTC (TVA incluse)
Étant donné que RoadWave est une plateforme française
Quand les prix sont affichés
Alors tous les prix sont TTC (TVA 20% incluse)
Et le prix 4.99 inclut déjà la TVA
Et cela respecte la réglementation française
Scénario: Performance page Premium avec cache
Étant donné que la page Premium est consultée fréquemment
Quand un utilisateur charge la page
Alors les prix et avantages sont servis depuis un cache CDN
Et le temps de chargement est <200ms
Et cela garantit une expérience fluide
Scénario: Localisation prix selon pays (post-MVP)
Étant donné que RoadWave se lance à l'international post-MVP
Quand un utilisateur se connecte depuis l'Allemagne
Alors les prix peuvent être ajustés (ex: 4.99 en France, 4.49 en Pologne)
Et cela respecte le pouvoir d'achat local
Mais cette fonctionnalité n'est pas au MVP (France uniquement)