karbe/src/app/api
Claude Integration 9aa0771001 feat(admin): CRUD complet carbets + gestion médias (Sprint 2)
Server actions (src/app/admin/carbets/actions.ts) avec validation Zod :
- createCarbetAction → INSERT + audit + redirect /admin/carbets/[id]
- updateCarbetAction → UPDATE + revalidate page publique
- updateCarbetStatusAction → DRAFT/PUBLISHED/ARCHIVED
- deleteCarbetAction → soft archive (bookings/reviews FK Restrict)
- addMediaAction(carbetId, fd) → INSERT Media + sortOrder
- removeMediaAction, reorderMediaAction (transactionnel up/down)

Helpers (src/lib/admin/carbets.ts) :
- listCarbetsAdmin avec filtres (q/river/status/accessType)
- listDistinctRivers, listOwners, listPirogueProviders
- getCarbetForEdit (include owner, provider, media, _count bookings/reviews)
- Options enum pour les selects (ACCESS_TYPE, TRANSPORT_MODE, STATUS)

Pages :
- /admin/carbets : liste tableau dense avec recherche/filtres GET, status badge,
  liens vers édition, count médias/résas
- /admin/carbets/new : page création avec CarbetForm
- /admin/carbets/[id] : header titre+badge+actions, MediaManager, CarbetForm
  d'édition. Lien public si PUBLISHED.

Composants admin réutilisables :
- StatusBadge (DRAFT/PUBLISHED/ARCHIVED + statuts Booking)
- FormField + inputCls/selectCls/textareaCls
- CarbetForm (client, 5 sections : identité, localisation, accès, séjour,
  publication) avec useTransition + erreur + succès inline
- MediaManager (client, liste + reorder ↑↓ + suppression + ajout par URL)
- StatusActions (client, publier/dépublier/archiver/réactiver avec confirm)

API :
- GET /api/admin/carbets/[id]/media pour refresh client après mutation

Audit léger en log console (JSON structuré) — Sprint 5 ajoutera la table.
2026-05-31 19:51:33 +00:00
..
admin feat(admin): CRUD complet carbets + gestion médias (Sprint 2) 2026-05-31 19:51:33 +00:00
auth/[...nextauth] feat(auth): add multi-role NextAuth with role guards 2026-05-29 10:46:54 +00:00
bookings feat(reviews): avis & notes carbet (SYS-8) 2026-05-30 15:08:55 +00:00
carbets/[carbetId] feat(carbet): add lastBookedAt and endpoint 2026-05-30 17:52:41 +00:00
health SYS-18: add production deployment stack for karbe.cosmolan.fr (Stripe test) 2026-05-30 18:01:56 +00:00
reviews/[reviewId]/response feat(reviews): avis & notes carbet (SYS-8) 2026-05-30 15:08:55 +00:00
stripe SYS-18: add production deployment stack for karbe.cosmolan.fr (Stripe test) 2026-05-30 18:01:56 +00:00