# Smoke Test v0.603 — Transfer automatique, Commission & Stabilisation ## Prérequis - Docker Compose lancé, tous services up - Backend API (8080), frontend (5173), Redis, PostgreSQL démarrés - Migration 115 appliquée (`seller_transfers` table exists) - Variables : `STRIPE_CONNECT_ENABLED=true`, `PLATFORM_FEE_RATE=0.10` --- ## Checklist ### Transfer automatique (T1) - [ ] Config : `PLATFORM_FEE_RATE` chargée (log au boot ou `GET /health` extended) - [ ] Migration 115 : table `seller_transfers` existe dans PostgreSQL - [ ] Webhook succeeded : paiement réussi → licences créées + SellerTransfer enregistré - [ ] Multi-vendeur : commande 2 items / 2 vendeurs → 2 SellerTransfer distincts - [ ] Commission correcte : `amount_cents = prix * 100 * (1 - fee_rate)`, `platform_fee_cents = prix * 100 * fee_rate` - [ ] Vendeur sans Connect : transfer status = `failed`, commande quand même `completed` - [ ] GET /sell/transfers : vendeur authentifié voit ses transferts (200 OK, data array) - [ ] GET /sell/transfers : vendeur sans transferts → `{ data: [] }` - [ ] SellerDashboard : carte transferts affichée avec montant, date, statut - [ ] SellerDashboard : état Loading (skeleton), Empty (message), Error (fallback) ### Flux commerce existant (régression) - [ ] POST /sell/connect/onboard : retourne onboarding_url (Stripe Connect) - [ ] GET /sell/balance : retourne available/pending - [ ] SellerDashboard : carte balance visible - [ ] Marketplace : achat produit → checkout → order created - [ ] Webhook succeeded : order status `completed`, licences créées - [ ] Webhook failed : order status `failed` - [ ] Webhook cancelled : order status `cancelled` - [ ] GET /commerce/orders : acheteur voit ses commandes - [ ] GET /licenses/mine : acheteur voit ses licences - [ ] POST /commerce/products/:id/reviews : review créée (si acheteur) - [ ] GET /commerce/orders/:id/invoice : facture générée ### Dette technique (DT1) - [ ] TODOs backend : < 100 restants (`rg "TODO|FIXME" --type go | wc -l`) - [ ] Docs archivées : pre-v0.501 docs dans `docs/archive/` - [ ] PAYOUT_MANUAL.md : mis à jour pour transfert automatique - [ ] `go vet ./...` : 0 erreur ### Backend - [ ] `go build ./...` OK - [ ] `go test ./... -v` OK — 0 test failure - [ ] `go test ./internal/core/marketplace/... -v` OK — tests transfer passent ### Frontend - [ ] `npm run build` OK (depuis apps/web) - [ ] `npm test -- --run` OK (depuis apps/web) - [ ] `npm run test:storybook` OK (build + serve sur 6007) ### Documentation - [ ] `V0_603_RELEASE_SCOPE.md` statut = « Livré » - [ ] `PROJECT_STATE.md` : section v0.603 ajoutée - [ ] `FEATURE_STATUS.md` : Marketplace → transfert auto (v0.603) - [ ] `CHANGELOG.md` : section v0.603 - [ ] `SMOKE_TEST_V0603.md` : ce document complété - [ ] `RETROSPECTIVE_V0603.md` : créée - [ ] Tag `v0.603` créé