karbe/src
Ubuntu 91b4d918ea
Some checks failed
CI / test (pull_request) Failing after 1m8s
feat(rental): Sprint D — panier + checkout + intégration carbet
Cart lib + cookie persistence (karbe-rental-cart, 30j) avec context React
useCart(). Provider wrappé dans layout pour hydratation server→client.

Page /panier :
- Récap regroupé par prestataire (sous-totaux, caution)
- Édition lignes (dates, qté), suppression, vider panier
- Bouton « Valider et payer » → POST /api/rentals/checkout
- Badge 🛒 dans SiteHeader avec total items

Composant <AddToCart /> sur /materiel/[itemId] avec date picker + qté.

API POST /api/rentals/checkout :
- Validation auth + items actifs + provider approved + qté/dates
- Transaction Prisma : recheck stock par fenêtre + crée 1 RentalBooking
  par prestataire + RentalLines (snapshot prix) + RentalItemAvailability
  (blocage des dispos)
- Calcul commissionAmount selon provider.commissionPct
- Si Stripe activé : Checkout Session unique avec 1 line_item par
  RentalBooking, metadata {type:"rental-bundle", rentalBookingIds:[]}
- Sinon : crée en PENDING, retourne rentalBookingIds
- Vide le cookie panier après création
- Audit log rental.checkout.created

Webhook Stripe étendu :
- checkout.session.completed type=rental-bundle → CONFIRMED+SUCCEEDED
  sur toutes les RentalBookings du bundle
- payment_intent.payment_failed metadata.rentalBookingIds → CANCELLED
  + supprime les RentalItemAvailability (libère le stock)

Intégration carbet :
- /carbets/[slug] : panneau « Compléter votre séjour » avec items des
  prestataires de la même rivière + System D (recommandation contextuelle)
- /reservations/[id] : section « Matériel associé » listant les
  RentalBookings liées
- /mes-locations : page récap toutes les locations (System D + tiers,
  liées carbet ou standalone)
- Lien « Mes locations » dans SiteHeader

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-02 08:41:53 +00:00
..
app feat(rental): Sprint D — panier + checkout + intégration carbet 2026-06-02 08:41:53 +00:00
components feat(rental): Sprint D — panier + checkout + intégration carbet 2026-06-02 08:41:53 +00:00
lib feat(rental): Sprint D — panier + checkout + intégration carbet 2026-06-02 08:41:53 +00:00
messages feat(plugin): i18n FR + EN (Phase 4.2) 2026-05-31 11:38:39 +00:00
types feat(auth): add multi-role NextAuth with role guards 2026-05-29 10:46:54 +00:00
auth.ts feat(auth): add multi-role NextAuth with role guards 2026-05-29 10:46:54 +00:00
middleware.ts feat: global SiteHeader avec user menu (login/inscription, Mes réservations, Espace hôte, Admin) 2026-06-01 04:29:52 +00:00