# 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](V0_601_RELEASE_SCOPE.md) --- ## 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 - [x] Payout : vendeur peut s'onboarder Stripe Connect, voir sa balance - [x] Transfert après vente documenté (PAYOUT_MANUAL.md pour v0.603) - [x] interceptors : auth.ts et error.ts extraits, chaque fichier < 400 LOC - [x] Dashboards Grafana alimentés par métriques réelles - [x] Tests E2E commerce : flow product → order → review → invoice - [x] Smoke test v0.602 documenté - [x] Tag v0.602 créé --- ## 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 |