expria-frontend/docs/PLANS_TARIFAIRES.md

314 lines
10 KiB
Markdown
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.

# PLANS_TARIFAIRES.md — Expria / Coach TCF Canada
> **Document de référence — Version 1.1**
> Toute modification des plans tarifaires doit être reflétée dans ce fichier en premier.
> Tout le code, tout prompt à Claude, tout débat sur une feature part d'ici.
---
## 1. Vue d'ensemble
| Feature | Découverte (Free) | Standard | Premium |
|---|---|---|---|
| Mode entraînement | ✅ | ✅ | ✅ |
| Simulations | 5 à vie | Illimitées | Illimitées |
| EE — Tâches 1, 2, 3 | ✅ | ✅ | ✅ |
| EO — Tâche 1 et 3 | ✅ | ✅ | ✅ |
| EO — Tâche 2 live | ❌ | ❌ | ✅ |
| Rapport basique (score + NCLC) | ✅ | ✅ | ✅ |
| Rapport détaillé (critères + erreurs) | 🔒 flouté | ✅ | ✅ |
| Tips (idées, modèle, exercices/production) | 🔒 tronqués | ✅ | ✅ |
| Historique + dashboard | ❌ | ✅ | ✅ |
| Mode examen | ❌ | ❌ | ✅ |
| Analyse patterns (5 dernières prod.) | ❌ | ❌ | ✅ |
| Exercices long terme | ❌ | ❌ | ✅ |
| Indice de préparation | ❌ | ❌ | ✅ |
---
## 2. Détail par plan
---
### 🟢 PLAN DÉCOUVERTE — Gratuit
**Rôle :** Acquisition / frustration contrôlée.
Laisser l'utilisateur goûter le produit et voir que la correction existe, sans lui permettre de construire un entraînement sérieux sur le plan gratuit.
#### Accès
- Mode entraînement uniquement
- **5 simulations à vie** (toutes tâches confondues, compteur global, ne se remet jamais à zéro)
#### Expression Écrite
- Tâches 1, 2, 3 disponibles ✅
#### Expression Orale
- Tâche 1 et Tâche 3 disponibles ✅
- Tâche 2 (interaction live) ❌ — cadenas + mention "Exclusivité Premium"
#### Correction
- Score global /20 ✅
- Niveau NCLC estimé ✅
- Feedback court (2-3 lignes) ✅
- Détail par critère → **flouté** + "Disponible en Standard" 🔒
- Explication des erreurs → **floutée** 🔒
#### Tips (entraînement)
- Suggestions d'idées/arguments → 1 phrase visible + "Voir plus en Standard" 🔒
- Production modèle → 1 phrase visible + "Voir plus en Standard" 🔒
- Exercices personnalisés → titre visible + "Disponible en Standard" 🔒
#### Données utilisateur
- Pas d'historique ❌
- Pas de dashboard ❌
- Aperçu flouté du dashboard complet avec mention "Disponible en Standard"
#### Mode examen
- Non disponible ❌
#### Logique backend
```typescript
free: {
simulations_lifetime: 5,
oral_t2_live: false,
detailed_report: false, // visible mais flouté côté frontend
tips: false, // visible mais tronqué côté frontend
dashboard: false,
exam_mode: false,
pattern_analysis: false,
preparation_index: false,
}
```
---
### 🔵 PLAN STANDARD — 19,90€ / 4 semaines
**Rôle :** Progression sérieuse.
Débloquer l'entraînement complet avec correction détaillée et suivi des productions.
#### Accès
- Mode entraînement illimité ✅
- Simulations illimitées ✅
#### Expression Écrite
- Tâches 1, 2, 3 disponibles ✅
#### Expression Orale
- Tâche 1 et Tâche 3 disponibles ✅
- Tâche 2 (interaction live) ❌ — cadenas + mention "Exclusivité Premium"
#### Correction
- Score global /20 ✅
- Niveau NCLC estimé ✅
- Détail par critère ✅
- Explication des erreurs détectées ✅
#### Tips (entraînement)
- Suggestions d'idées/arguments ✅ (activables via toggle avant la simulation)
- Production modèle basée sur la copie ✅
- Exercices personnalisés liés à CETTE production ✅
- Mode focus disponible (masquer les tips pour simuler les conditions réelles) ✅
#### Données utilisateur
- Historique complet des productions ✅
- Dashboard (consultation des copies et rapports passés) ✅
- Indice de préparation ✅ (activé après 5 productions)
#### Mode examen
- Non disponible ❌ — cadenas + mention "Exclusivité Premium"
#### Analyse avancée
- Analyse des patterns multi-productions ❌
- Exercices long terme ❌
#### Logique backend
```typescript
standard: {
simulations_lifetime: null, // illimité
oral_t2_live: false,
detailed_report: true,
tips: true,
dashboard: true,
exam_mode: false,
pattern_analysis: false,
preparation_index: false,
}
```
---
### 🟣 PLAN PREMIUM — 39,90€ / 4 semaines
**Rôle :** Réussite — viser NCLC 9+.
Tout Standard, plus les outils de simulation réelle et d'intelligence long terme.
#### Accès
- Tout le plan Standard ✅
- Mode examen ✅
- EO Tâche 2 live ✅
- Analyse avancée multi-productions ✅
#### 🔥 Mode Examen (feature majeure)
**Expression Écrite :**
- 3 tâches affichées simultanément
- Timer 60 minutes — inarrêtable ⛔
- Zone de saisie figée (readOnly) à T=0 ⛔
- Envoi automatique déclenché à T=0 ✅
**Expression Orale :**
- 3 tâches enchaînées
- Timer global 12 minutes — inarrêtable ⛔
- Enregistrement stoppé et envoi automatique à T=0 ✅
Productions enregistrées dans le dashboard avec tag **"Mode Examen"**.
#### 🔥 EO Tâche 2 — Simulation live (différenciateur clé)
- Interaction dynamique en temps réel avec l'examinateur IA
- Le candidat répond en audio
- L'IA adapte ses relances selon les réponses du candidat
- Rapport complet généré à la fin du dialogue
- Productions enregistrées avec tag **"T2 Live"**
> ❗ Exclusivité Premium — aucun concurrent ne propose cette feature.
#### 🔥 Analyse des patterns (intelligence long terme)
- Analyse automatique des 5 dernières productions
- Détection des erreurs récurrentes classées par type :
- Structurelles (organisation, cohérence)
- Lexicales (répétitions, registre, richesse)
- Morphosyntaxiques (accords, conjugaison, syntaxe)
- Distinction : erreur ponctuelle vs pattern répété (3+ occurrences sur 5 productions)
- Exercices long terme générés sur la base des patterns détectés
- **Distinction clé :** ces exercices sont différents des exercices du rapport individuel (qui sont spécifiques à une seule production)
#### 🔥 Indice de préparation
- Score dynamique 0 → 100
- Basé sur : moyenne des scores récents + régularité des sessions + courbe de progression
- Messages interprétatifs :
- < 40 : "Continuez à vous entraîner régulièrement"
- 4070 : "Bonne progression visez NCLC 7-8"
- \> 70 : "Vous êtes en bonne voie pour NCLC 9+"
#### Logique backend
```typescript
premium: {
simulations_lifetime: null,
oral_t2_live: true,
detailed_report: true,
tips: true,
dashboard: true,
exam_mode: true,
pattern_analysis: true,
preparation_index: true,
}
```
---
## 3. Source de vérité unique (lib/access.ts)
```typescript
export const PLANS = {
free: {
simulations_lifetime: 5,
oral_t2_live: false,
detailed_report: false,
tips: false,
dashboard: false,
exam_mode: false,
pattern_analysis: false,
preparation_index: false,
},
standard: {
simulations_lifetime: null,
oral_t2_live: false,
detailed_report: true,
tips: true,
dashboard: true,
exam_mode: false,
pattern_analysis: false,
preparation_index: false,
},
premium: {
simulations_lifetime: null,
oral_t2_live: true,
detailed_report: true,
tips: true,
dashboard: true,
exam_mode: true,
pattern_analysis: true,
preparation_index: true,
},
}
```
> Tout le code lit depuis cet objet. Aucune condition de plan n'est écrite en dur ailleurs dans le code.
---
## 4. Règles transversales
### Upgrades possibles
- Découverte Standard
- Découverte Premium (accès direct, sans passer par Standard)
- Standard Premium
Dans tous les cas : immédiat après confirmation du webhook Stripe, sans délai, sans reconnexion requise.
### Upgrade en cours d'abonnement — Prorata automatique (Stripe)
Quand un utilisateur Standard souhaite passer en Premium avant la fin de sa période, il ne paie **pas le plein tarif Premium**. Stripe calcule automatiquement le prorata :
- Les jours restants du plan Standard sont **crédités**
- Les jours restants sont **refacturés au tarif Premium**
- L'utilisateur paie uniquement la **différence de valeur pour le temps restant**
**Exemple :**
Un utilisateur a payé 19,90 pour 4 semaines. Il upgrade après 2 semaines.
Stripe crédite ~10 (2 semaines non consommées de Standard) et facture ~20 (2 semaines au tarif Premium).
Il paie ~10€, pas 39,90€.
**Ce que cela implique côté implémentation :**
- Utiliser `subscription.update()` dans l'API Stripe avec `proration_behavior: 'always_invoice'`
- Stripe génère automatiquement une facture de prorata et débite le montant exact
- Le webhook `invoice.paid` confirme le paiement mettre à jour le plan à `"premium"` dans Supabase
**Ce que l'utilisateur voit dans l'interface :**
Avant de confirmer l'upgrade, afficher le montant exact calculé par Stripe :
> "Vous paierez [montant calculé]€ aujourd'hui pour accéder au plan Premium jusqu'au [date de fin]."
> [Confirmer] [Annuler]
Pas de surprise, pas de frustration.
### Downgrades / Résiliations
- Premium Standard
- Premium Découverte (résiliation sans remplacement)
- Standard Découverte (résiliation sans remplacement)
### Conservation des données
Les productions sont toujours conservées en base, quel que soit le changement de plan. Seul l'accès aux features change. L'utilisateur ne perd jamais ses données.
### Compteur de simulations Free
- Global (EE + EO confondus)
- Ne se remet jamais à zéro
- Une simulation = un envoi pour correction
- Si l'utilisateur a consommé 3/5 simulations avant de s'abonner, puis résilie, il lui reste 2 simulations gratuites
### Expiration d'abonnement
- Déclenchée par le webhook Stripe : `customer.subscription.deleted`
- Rôle remis à `"free"` dans Supabase
- Productions conservées, accès features coupé immédiatement
- Message affiché à la prochaine connexion : "Votre abonnement a expiré. Vos productions sont conservées. Renouvelez pour retrouver l'accès complet."
### Stripe — Produits à créer (mode Test d'abord)
| Plan | Produit Stripe | Prix |
|---|---|---|
| Standard | "Expria Standard" | 19,90 / 4 semaines |
| Premium | "Expria Premium" | 39,90 / 4 semaines |
Webhooks à écouter :
- `checkout.session.completed` mettre à jour le plan dans Supabase (nouveau abonnement)
- `invoice.paid` mettre à jour le plan dans Supabase (upgrade avec prorata)
- `customer.subscription.deleted` remettre le plan à "free"