V0.602 Release Scope — Payout, Dette Technique & Tests E2E
Statut : Livré (taguée v0.602)
Phase : 6+
Prérequis : v0.601 (taguée)
Date cible : TBD
Estimation : ~5 sprints (25 jours ouvrés)
Précédente : v0.601
1. Objectif
Finaliser la boucle commerce avec le payout vendeurs (Stripe Connect), réduire la dette technique restante (split interceptors auth/error), consolider les dashboards Grafana avec métriques réelles, et valider le flux commerce par des tests E2E. Optionnel : migration React 19 si faisable sans risque.
2. État actuel (post-v0.601)
| Composant |
État |
Détail |
| Payout |
❌ Non implémenté |
Stripe Connect reporté depuis v0.601 |
| Interceptors |
⚠️ Partiel |
auth.ts et error.ts non extraits ; error handler ~600 LOC dans interceptors.ts |
| Grafana |
⚠️ Placeholders |
Dashboards créés mais métriques réelles à connecter |
| Tests E2E commerce |
❌ Absent |
Pas de flow upload → achat → review → facture → remboursement |
| React |
18.x |
Migration React 19 optionnelle |
3. Lots
Lot P3 — Payout vendeurs (Stripe Connect)
Objectif : Permettre aux vendeurs de recevoir les revenus des ventes.
| # |
Tâche |
Fichiers impactés |
Effort |
| P3-01 |
Config Stripe Connect — client_id, secret, webhook secret |
internal/config/config.go, .env.example |
S |
| P3-02 |
Migration seller_stripe_accounts — lien user ↔ Stripe account |
migrations/114_seller_stripe_accounts.sql |
S |
| P3-03 |
POST /sell/connect/onboard — redirect Stripe Express onboarding |
internal/handlers/sell_handler.go, routes |
M |
| P3-04 |
GET /sell/balance — balance disponible, en attente (depuis Stripe ou table) |
internal/services/sell_service.go, handlers |
M |
| P3-05 |
Transfert après vente — webhook ou post-order : transfer vers compte Connect |
internal/services/hyperswitch/, webhooks |
M |
| P3-06 |
SellerDashboardView — carte balance, bouton « Configurer les paiements » |
apps/web/src/features/seller/, marketplaceService.ts |
M |
| P3-07 |
MSW + Stories — handlers balance, onboarding |
apps/web/src/mocks/, stories |
S |
Lot CLN2 — Dette technique (split interceptors)
Objectif : Finaliser le découpage des interceptors (auth, error) identifié en rétro v0.601.
| # |
Tâche |
Fichiers impactés |
Effort |
| CLN2-01 |
Extraire auth interceptor — token refresh, queue, processQueue |
interceptors/auth.ts, interceptors.ts |
M |
| CLN2-02 |
Extraire error interceptor — gestion erreurs, retry, toast, parseApiError |
interceptors/error.ts, interceptors.ts |
M |
| CLN2-03 |
Réduire interceptors.ts à facade — composition des 5 modules |
interceptors.ts, interceptors/index.ts |
S |
| CLN2-04 |
Validation — chaque fichier < 400 LOC, tests passent |
— |
S |
Lot INF2 — Dashboards Grafana (métriques réelles)
Objectif : Connecter les dashboards aux métriques Prometheus réelles du backend.
| # |
Tâche |
Fichiers impactés |
Effort |
| INF2-01 |
API dashboard — panels request_rate, latency p50/p95, error_rate, top endpoints |
config/grafana/dashboards/api-overview.json |
M |
| INF2-02 |
Chat dashboard — connexions WS actives, messages/s, présence |
config/grafana/dashboards/chat-overview.json |
S |
| INF2-03 |
Commerce dashboard — orders/min, checkout success, refunds, promo usage |
config/grafana/dashboards/commerce-overview.json |
S |
| INF2-04 |
Vérifier exposition métriques backend — middleware Prometheus, labels |
veza-backend-api/internal/middleware/ |
S |
Lot QA2 — Tests E2E commerce
Objectif : Valider le flux commerce complet de bout en bout.
| # |
Tâche |
Fichiers impactés |
Effort |
| QA2-01 |
E2E commerce — upload produit → achat → review → facture → remboursement (optionnel) |
veza-backend-api/internal/integration/ ou Playwright |
M |
| QA2-02 |
Smoke test v0.602 — checklist 30+ features E2E incluant payout |
docs/SMOKE_TEST_V0602.md |
S |
| QA2-03 |
Mise à jour PROJECT_STATE, FEATURE_STATUS, CHANGELOG |
docs/ |
S |
| QA2-04 |
Archiver V0_602_RELEASE_SCOPE, placeholder V0_603, rétrospective, tag |
docs/archive/, Git |
S |
Lot OPT — Optionnel (si temps disponible)
| # |
Tâche |
Fichiers impactés |
Effort |
| OPT-01 |
Migration React 19 — upgrade, vérifier compatibilité |
apps/web/package.json, tests |
M |
4. Hors scope v0.602
| Élément |
Version cible |
| Go Live (streaming vidéo) |
v0.703 |
| 2FA SMS / Passkeys |
v0.104 |
| IaC (Terraform/Pulumi) |
v0.801 |
| Payout manuel (sans Stripe Connect) |
v0.603 si P3 trop complexe |
5. Fichiers impactés (récapitulatif)
Backend Go (nouveau)
| Fichier |
Action |
migrations/114_seller_stripe_accounts.sql |
Nouveau — lien vendeur ↔ Stripe |
internal/services/stripe_connect_service.go |
Nouveau — onboarding, balance, transferts |
Backend Go (modifier)
| Fichier |
Action |
internal/config/config.go |
Stripe Connect config |
internal/handlers/sell_handler.go |
Onboard, balance |
internal/services/hyperswitch/ |
Transfer après vente |
internal/middleware/ |
Métriques Prometheus (si manquantes) |
Frontend (nouveau/modifier)
| Fichier |
Action |
apps/web/src/services/api/interceptors/auth.ts |
Nouveau — extrait |
apps/web/src/services/api/interceptors/error.ts |
Nouveau — extrait |
apps/web/src/services/api/interceptors.ts |
Réduire à facade |
apps/web/src/features/seller/SellerDashboardView.tsx |
Balance, bouton onboarding |
apps/web/src/mocks/ |
Handlers payout |
Infra
| Fichier |
Action |
config/grafana/dashboards/*.json |
Panels métriques réelles |
6. Critères d'acceptation globaux
7. Risques
| Risque |
Mitigation |
| Stripe Connect complexité / quotas |
MVP = balance affichée sans transfert auto ; documenter limites |
| Hyperswitch vs Stripe Connect |
Vérifier compatibilité ; Hyperswitch peut avoir Connect-like |
| Métriques backend non exposées |
Audit middleware Prometheus, ajouter si manquant |
| React 19 breaking changes |
Lot optionnel ; reporter si régression |