# Réservations standard --- ## Workflow de réservation (4 étapes max) ``` 1. Sélection de l'offre (vérification dispo temps réel) 2. Informations expéditeur / destinataire 3. Détails conteneur 4. Confirmation + CGU → Génération booking number ``` --- ## Numéro de réservation Format : `WCM-YYYY-XXXXXX` (XXXXXX = 6 caractères alphanumériques uniques) Exemple : `WCM-2026-A3F7K2` --- ## Statuts | Statut | Description | |--------|-------------| | draft | Brouillon (en cours de création) | | confirmed | Confirmé | | shipped | En transit | | delivered | Livré | | cancelled | Annulé | --- ## API | Méthode | Route | Description | |---------|-------|-------------| | GET | /api/v1/bookings | Liste (paginée, filtrable) | | POST | /api/v1/bookings | Créer une réservation | | GET | /api/v1/bookings/:id | Détail | | PATCH | /api/v1/bookings/:id | Mettre à jour | | DELETE | /api/v1/bookings/:id | Annuler | | GET | /api/v1/bookings/:id/pdf | Générer PDF | | POST | /api/v1/bookings/export | Export Excel/PDF | ### Exemple création ``` POST /api/v1/bookings Authorization: Bearer { "rateQuoteId": "uuid-de-la-cotation", "shipper": { "name": "Acme Corp", "address": "123 Main St", "country": "FR" }, "consignee": { "name": "Shanghai Trading", "address": "456 Nanjing Rd", "country": "CN" }, "containers": [ { "type": "40HC", "cargoDescription": "Electronic components", "isHazmat": false } ], "notes": "Fragile cargo" } ``` --- ## Post-booking automatique Après création d'une réservation : 1. **Audit log** — action `BOOKING_CREATED` 2. **Notification WebSocket** — push en temps réel 3. **Webhooks** — événement `BOOKING_CREATED` envoyé aux abonnés 4. **Email confirmation** — template MJML 5. **PDF** — généré via pdfkit, stocké sur MinIO --- ## Filtres disponibles ``` GET /api/v1/bookings?status=confirmed&carrierId=xxx&page=1&limit=20 &startDate=2026-01-01&endDate=2026-12-31 &search=WCM-2026 (recherche floue sur numéro, expéditeur, destinataire) ``` --- ## Dashboard Le dashboard agrège : - KPI cards : bookings/mois, TEUs, montant total - Graphiques 6 mois (recharts) - Alertes (retards, confirmations en attente) - Table interactive avec TanStack Table (tri, filtres, pagination, virtual scroll) Endpoint : `GET /api/v1/dashboard/stats`