7.1 KiB
Scope v0.402 — Phase 4 Commerce (checkout & codes promo)
Version cible : v0.402 (X=4, Y=2)
Prérequis : v0.401 taguée et mergée dans main
Objectif : Checkout Hyperswitch production-ready, codes promo/réductions
Dernière mise à jour : février 2026
Effort estimé : 4-6 semaines de développement
1. Principe directeur
v0.402 = finalisation paiement réel et codes promo.
Deux axes principaux :
- Checkout Hyperswitch production-ready (Lot P1) : UX success/error, webhook robustesse, flow complet
- Codes promo / réductions (Lot P2) : Backend promo codes, connecter PromoCodeModal, OrderSummary discount
2. Contexte — État post v0.401
2.1 Livré en v0.401
| Lot | Feature | Statut |
|---|---|---|
| M1 | Produits & Catalogue (BPM, key, previews, images, filtres, rich text) | ✅ |
| M2 | Licences & Droits (product_licenses, GET /licenses/mine, LicensesView) | ✅ |
| M3 | Seller dashboard enrichi (evolution chart, top products, real sales) | ✅ |
2.2 Fondation existante (à enrichir)
| Domaine | Existant | À ajouter v0.402 |
|---|---|---|
| Checkout | Hyperswitch intégré, CreateOrder, webhook ProcessPaymentWebhook | UX success/error, retry, annulation, robustesse webhook |
| Codes promo | PromoCodeModal (UI décorative), OrderSummary WithDiscount | Backend promo_codes, validation, application au panier |
2.3 Composants techniques
| Composant | État | Action v0.402 |
|---|---|---|
| veza-backend-api | ✅ | Routes promo, amélioration webhook, gestion erreurs checkout |
| apps/web | ✅ | CheckoutSuccessView, CheckoutErrorView, PromoCodeModal connecté |
| Hyperswitch | ✅ | Flow complet, gestion états payment |
3. Features IN SCOPE v0.402
3.1 Lot P1 — Checkout Hyperswitch production-ready
Objectif : Finaliser le flow paiement réel, UX claire, robustesse.
Effort : M (3-4 jours)
Référence : Module 7.3 (features 251-265)
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---|---|---|---|---|
| P1.1 | Success/Error pages | Pages dédiées après redirect Hyperswitch | Query params order_id, status dans return URL | CheckoutSuccessView, CheckoutErrorView | Utilisateur voit confirmation ou erreur claire |
| P1.2 | Webhook robustesse | Idempotence, retry, logs | ProcessPaymentWebhook idempotent, status déjà completed → skip | Logs structurés | Pas de double-création licences |
| P1.3 | Annulation paiement | Gérer cancelled/failed | Webhook status cancelled/failed → order status updated | Lien « Réessayer » ou retour panier | Order reflète l'état réel |
| P1.4 | Flow checkout UI | Intégration Stripe Elements (client_secret) | Inchangé (CreateOrder retourne client_secret) | CartView → checkout modal/page avec Stripe Elements | Paiement carte fonctionnel E2E |
Fichiers clés :
- Backend :
marketplace/service.go,marketplace/handlers.go, webhook handler - Frontend :
CartView,CheckoutSuccessView,CheckoutErrorView,commerceService.ts
3.2 Lot P2 — Codes promo / réductions
Objectif : Backend promo codes, connecter PromoCodeModal, application au panier.
Effort : M (3-4 jours)
Référence : Module 7.3 (feature 255), Module 7.4 (feature 274)
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---|---|---|---|---|
| P2.1 | Table promo_codes | Migration, modèle | code, discount_type (percent/fixed), discount_value, valid_from, valid_until, max_uses, used_count | — | Migration appliquée |
| P2.2 | Validation promo | POST /commerce/cart/validate-promo ou GET /commerce/promo/:code | Vérifier validité, dates, max_uses | PromoCodeModal appelle API | Code valide → discount retourné |
| P2.3 | Application au checkout | CreateOrder accepte promo_code | Réduire totalAmount si promo valide, enregistrer dans order | CartView passe code au checkout | Montant réduit dans order |
| P2.4 | PromoCodeModal connecté | Remplacer mock par API | — | commerceService.validatePromoCode, onApply avec discount | Réduction affichée dans OrderSummary |
Fichiers clés :
- Backend :
migrations/,marketplace/service.go,marketplace/handlers.go - Frontend :
PromoCodeModal.tsx,CartView,OrderSummary,commerceService.ts
4. Récapitulatif par lot
| Lot | Priorité | Effort | Dépendances |
|---|---|---|---|
| P1 | Haute | M (3-4 j) | Aucune |
| P2 | Haute | M (3-4 j) | P1 (checkout flow) — peut être en parallèle si équipes séparées |
Ordre recommandé : P1 → P2 (ou P1 et P2 en parallèle).
5. Features HORS SCOPE v0.402
| Feature | Raison | Version cible |
|---|---|---|
| Payout automatique (Stripe Connect) | Infra externe complexe | v0.403 |
| Seller dashboard complet (reviews, promotions) | Priorité moindre | v0.403 |
| Dispute / réclamation | Scope support | v0.403+ |
| Facture automatique PDF | Dépend checkout mature | v0.403 |
| Remboursement automatisé | Politique produit | v0.403+ |
| Stream Server (imports) | Stabilisation infra, hors commerce | v0.402 ou ticket séparé |
6. Migrations et schémas
| Migration | Description |
|---|---|
| 099 | promo_codes (code UNIQUE, discount_type, discount_value_cents, valid_from, valid_until, max_uses, used_count, created_at) |
| 100 | orders.promo_code_id (FK nullable), orders.discount_amount_cents |
À ajuster selon schéma DB existant et numérotation migrations.
7. Critères de livraison v0.402
- Lot P1 : Success/Error pages, webhook robustesse, annulation, flow checkout UI complet
- Lot P2 : Table promo_codes, validation API, application au checkout, PromoCodeModal connecté
- Tests :
go test ./...OK,npm run buildOK - Documentation : FEATURE_STATUS, PROJECT_STATE, CHANGELOG mis à jour
8. Checklist pré-merge
- Tous les lots IN SCOPE terminés ou reportés (avec ticket)
- Pas de régression sur v0.401
- SCOPE_CONTROL.md référence V0_402_RELEASE_SCOPE.md
- FEATURE_STATUS.md mis à jour
- CHANGELOG v0.402
- MSW handlers pour nouvelles routes (validate-promo, checkout success/error)
- Stories Storybook pour CheckoutSuccessView, CheckoutErrorView (Loading, Error selon STORYBOOK_CONTRACT)
9. Transition vers v0.403
À l'issue de v0.402 :
- Checkout production-ready avec Hyperswitch
- Codes promo fonctionnels
- Prochaine version : v0.403 — Payout, reviews, factures, remboursements
- Document de scope :
V0_403_RELEASE_SCOPE.md(à créer après tag v0.402)
Références
- V0_401_RELEASE_SCOPE.md — Version précédente
- SCOPE_CONTROL.md — Processus anti-scope-creep
- FEATURE_STATUS.md — Statut des features
- PROJECT_STATE.md — État actuel du projet
- veza_full_features_list.md — Module 7 Marketplace