veza/docs/archive/PLAN_V0_402_IMPLEMENTATION.md

4.4 KiB

Plan d'implémentation v0.402 — Phase 4 Commerce (checkout & codes promo)

Version cible : v0.402
Objectif : Checkout Hyperswitch production-ready, codes promo/réductions
Référence : V0_402_RELEASE_SCOPE.md
Dernière mise à jour : février 2026


Diagramme de dépendances v0.402

flowchart TD
    subgraph Backend [veza-backend-api]
        P1_B[P1 Webhook robustesse + return URL]
        P2_B[P2 Migrations promo_codes + routes]
    end
    subgraph Frontend [apps/web]
        P1_F[CheckoutSuccessView CheckoutErrorView]
        P2_F[PromoCodeModal connecté OrderSummary]
    end
    P1_B --> P1_F
    P2_B --> P2_F

Phase 0 — Vérification préalable

# Tâche Fichiers Commit suggéré
0.1 Vérifier flow Hyperswitch actuel (CreateOrder, webhook) marketplace/service.go, handlers
0.2 Vérifier routes checkout, return URL config routes_marketplace.go, config
0.3 Vérifier PromoCodeModal, OrderSummary, CartView apps/web/src/components/

Phase 1 — Lot P1 (Checkout Hyperswitch production-ready)

# Tâche Fichiers Commit suggéré
1.1 Return URL avec query params (order_id, status) Config backend, Hyperswitch CreatePayment feat(checkout): add order_id to return URL
1.2 CheckoutSuccessView (page confirmation) CheckoutSuccessView.tsx, route feat(checkout): add CheckoutSuccessView
1.3 CheckoutErrorView (page erreur) CheckoutErrorView.tsx, route feat(checkout): add CheckoutErrorView
1.4 Webhook idempotence (status completed → skip) marketplace/service.go ProcessPaymentWebhook fix(checkout): idempotent webhook processing
1.5 Webhook status cancelled/failed Order status update feat(checkout): handle cancelled/failed in webhook
1.6 Flow checkout UI (Stripe Elements si client_secret) CartView, checkout modal/page feat(checkout): integrate Stripe Elements in checkout

Validation : go test ./..., npm run build, test manuel checkout E2E (ou simulateur Hyperswitch).


Phase 2 — Lot P2 (Codes promo / réductions)

# Tâche Fichiers Commit suggéré
2.1 Migration promo_codes migrations/099_*.sql feat(marketplace): add promo_codes migration
2.2 Migration orders.discount_amount_cents, promo_code_id migrations/100_*.sql feat(marketplace): add discount to orders
2.3 Route GET /commerce/promo/:code Handler + service feat(marketplace): add validate promo endpoint
2.4 CreateOrder accepte promo_code Réduction total, enregistrement feat(marketplace): apply promo discount in CreateOrder
2.5 commerceService.validatePromoCode commerceService.ts feat(commerce): add validatePromoCode API
2.6 PromoCodeModal connecté à API PromoCodeModal.tsx feat(commerce): connect PromoCodeModal to API
2.7 CartView passe promo au checkout CartView, OrderSummary feat(commerce): apply promo in checkout flow

Validation : Code promo valide → réduction affichée → order avec discount.


Phase 3 — Finalisation

# Tâche Fichiers Commit suggéré
3.1 MSW handlers (validate-promo, checkout success/error) apps/web/src/mocks/handlers*.ts test(commerce): add MSW handlers for v0.402
3.2 Stories Storybook (CheckoutSuccessView, CheckoutErrorView) Composants feat(checkout): add stories for success/error views
3.3 Mise à jour CHANGELOG v0.402 CHANGELOG.md docs: update CHANGELOG for v0.402
3.4 Vérification SCOPE_CONTROL, FEATURE_STATUS

Ordre d'exécution recommandé

  1. Phase 0 — Vérification (30 min)
  2. Phase 1 — P1 Checkout (3-4 j)
  3. Phase 2 — P2 Codes promo (3-4 j)
  4. Phase 3 — Finalisation (0.5-1 j)

Références