|
All checks were successful
CI / test (pull_request) Successful in 2m18s
Nouveau modèle `RentalItemMedia` parallèle de `Media` (carbet) :
- s3Key / s3Url / sortOrder / type (PHOTO|VIDEO), cascade sur RentalItem
- Migration `20260603100000_rental_item_media` appliquée
Endpoints upload dédiés (mêmes conventions que carbet) :
- POST /api/uploads/rental-presign + POST /api/uploads/rental-finalize
→ auth par canManageRentalProvider (admin OR provider manager)
→ s3Key préfixé `rental-items/<itemId>/`
→ finalize hydrate `RentalItem.imageUrl` avec la première PHOTO
→ générateur de variantes (320/800/1600 via sharp) en best-effort
- DELETE /api/rental-media/[id] + POST /api/rental-media/reorder
→ reorder rafraîchit imageUrl (cover = sortOrder 0)
`MediaUploader` rendu générique :
- Nouveau prop `scope: {kind: "carbet" | "rental-item", id}` ; conserve
rétro-compat `carbetId` (deprecated)
- Endpoints + payload key (`carbetId` ↔ `itemId`) calculés via
`endpointsFor()`. Aucun changement de comportement côté carbet.
UI branchée :
- /admin/rental-items/[id] : section « Photos & vidéos » au-dessus du
form, alimentée par `item.media` chargé par `getRentalItemForAdmin`
- /espace-prestataire/items/[itemId] : idem, charge via `getHostItem`
- /materiel/[itemId] : nouveau `<ItemGallery />` (thumbs cliquables +
support vidéo). Fallback : ancien `item.imageUrl` si pas de média
dédié (compat seed).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| migrations | ||
| schema.prisma | ||