feat: Stripe checkout + webhook + upgrade prorata — 117/117 tests

This commit is contained in:
Hermann_Kitio 2026-04-16 20:39:18 +03:00
parent f4f8c55ce7
commit 5b82c6bd46
10 changed files with 1063 additions and 3 deletions

View file

@ -23,7 +23,7 @@
### TD-02 — src/lib/planController.ts (backend)
**Priorité :** 🟡 Important
**Statut :** Ouvert
**Statut :** Résolu — session Stripe
**Description :** Stub créé pour permettre les tests de `updateUserPlan`. La vraie implémentation (mise à jour Supabase + gestion Stripe) n'est pas encore codée.
**À faire :** Implémenter lors de la session Stripe (POST /stripe/webhook).
**Session concernée :** Tests automatisés
@ -32,7 +32,7 @@
### TD-03 — src/lib/stripe.ts (backend)
**Priorité :** 🟡 Important
**Statut :** Ouvert
**Statut :** Résolu — session Stripe
**Description :** Stub créé pour permettre les tests de `verifyStripeWebhook` et `calculateProrata`. La vraie implémentation Stripe n'est pas encore codée.
**À faire :** Implémenter lors de la session Stripe.
**Session concernée :** Tests automatisés
@ -85,6 +85,29 @@
---
### TD-13 — Webhook Stripe non idempotent
**Priorité :** 🔴 Critique
**Statut :** Ouvert — à faire avant mise en production
**Description :** Stripe peut livrer un même event webhook deux fois (retries réseau, rejeu manuel depuis le dashboard). La route `POST /stripe/webhook` traite chaque réception sans dédoublonnage. En pratique, les opérations `updateUserPlan` et `updateUserStripeInfo` sont idempotentes par nature (même résultat en cas de double appel), mais si de la logique non idempotente est ajoutée plus tard (ex: compteur, envoi d'email, crédit utilisateur), un double traitement causerait un bug.
**À faire :**
- Créer une table `stripe_webhook_events(id TEXT PRIMARY KEY, processed_at TIMESTAMPTZ)`
- Avant traitement, vérifier si `event.id` est déjà en base → si oui, retourner 200 sans rien faire
- Après traitement, insérer l'`event.id` dans la table
**Session concernée :** Stripe (POST /stripe/webhook)
**Condition de résolution :** Avant la mise en production publique.
---
### TD-14 — Erreurs TypeScript TS2835 pré-existantes
**Priorité :** 🟡 Important
**Statut :** Ouvert
**Description :** Erreurs TS2835 sur plusieurs fichiers de routes.
Non bloquant (tests verts) mais à corriger.
Gate de qualité actuel : npm run test.
**À faire :** Ajouter les extensions `.js` aux imports relatifs ou ajuster `moduleResolution` dans `tsconfig.json` pour permettre `npm run build` de passer.
---
## 3. Fonctionnalités reportées
### TD-08 — Phonologie T2 EO à 0
@ -136,4 +159,5 @@
| ID | Description | Résolu le | Comment |
|---|---|---|---|
| — | — | — | — |
| TD-02 | planController.ts complété | 2026-04-16 | Session Stripe |
| TD-03 | stripe.ts complété | 2026-04-16 | Session Stripe |