veza/docs/archive/V0_402_RELEASE_SCOPE.md

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 :

  1. Checkout Hyperswitch production-ready (Lot P1) : UX success/error, webhook robustesse, flow complet
  2. 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 build OK
  • 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