docs: ajout documentation de référence

This commit is contained in:
Hermann_Kitio 2026-04-16 05:50:55 +03:00
parent 1cb432401d
commit b06970c9ae
8 changed files with 2954 additions and 46 deletions

314
docs/PLANS_TARIFAIRES.md Normal file
View file

@ -0,0 +1,314 @@
# 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"