ujusum:1-implantation:5-reservation-calendrier
Table des matières
Sprint 4 — Réservation & Calendrier
Objectif du Sprint
Mettre en œuvre le moteur de réservation de la plateforme.
À l'issue du Sprint 4 :
- Un client peut vérifier la disponibilité d'un bien
- Un client peut calculer le coût de son séjour
- Un client peut créer une réservation
- Les voyageurs sont enregistrés
- Le calendrier est automatiquement bloqué
- L'agence peut gérer les réservations
- Les conflits de réservation sont empêchés
Ce sprint constitue le premier parcours métier complet générateur de chiffre d'affaires.
Périmètre
Modules concernés
ReservationsModule ReservationCalendarModule ReservationGuestModule PricingModule AvailabilityEngineModule
Workflow métier
Recherche Bien ↓ Consultation Disponibilité ↓ Sélection Dates ↓ Calcul Tarif ↓ Saisie Voyageurs ↓ Création Réservation ↓ Blocage Calendrier ↓ Confirmation
User Stories
US-401 : Vérifier la disponibilité
En tant que client
Je souhaite connaître les dates disponibles
Afin de réserver un séjour.
Endpoint
GET /properties/{id}/availability
Paramètres
startDate endDate
Réponse
{
"available": true,
"conflicts": []
}
Critères
- Vérification temps réel
- Exclusion des périodes bloquées
- Exclusion des réservations confirmées
US-402 : Calculer un tarif
Endpoint
POST /pricing/calculate
Données
{
"propertyId": "uuid",
"startDate": "2027-07-01",
"endDate": "2027-07-15",
"guestCount": 4
}
Calcul
Nombre de nuits + Tarif saisonnier + Taxes + Options = Montant total
Réponse
{
"nights": 14,
"subtotal": 2100,
"taxes": 150,
"fees": 50,
"total": 2300
}
US-403 : Créer une réservation
Endpoint
POST /reservations
Données
{
"propertyId": "uuid",
"startDate": "2027-07-01",
"endDate": "2027-07-15",
"guestCount": 4
}
Critères
- Disponibilité vérifiée
- Tarif recalculé
- Réservation créée
- Numéro généré
Numérotation
RES-2027-000001
US-404 : Ajouter les voyageurs
Endpoint
POST /reservations/{id}/guests
Données
Nom Prénom Date naissance Nationalité
Contraintes
Nombre voyageurs ≤ capacité bien
US-405 : Consulter une réservation
Endpoint
GET /reservations/{id}
Informations
Référence Bien Voyageurs Montant Statut Historique
US-406 : Modifier une réservation
Endpoint
PUT /reservations/{id}
Modifications autorisées
Dates Nombre voyageurs Commentaires
Conditions
Statut = PENDING
US-407 : Annuler une réservation
Endpoint
POST /reservations/{id}/cancel
Conséquences
Statut = CANCELLED ↓ Libération calendrier ↓ Historisation
Gestion du calendrier
US-408 : Blocage automatique
Lorsqu'une réservation est créée :
Création réservation ↓ Création événement calendrier ↓ Blocage période
Statuts calendrier
AVAILABLE PENDING BOOKED MAINTENANCE BLOCKED
US-409 : Visualiser le calendrier
Endpoint
GET /properties/{id}/calendar
Vues
Mensuelle Trimestrielle Annuelle
Gestion tarifaire
US-410 : Calcul saisonnier
Exemple
Basse saison 100 € Haute saison 180 € Très haute saison 250 €
Moteur
Le calcul doit :
- Découper le séjour par période
- Appliquer le tarif adéquat
- Additionner les montants
US-411 : Gestion des frais
Types
Frais ménage Frais dossier Taxe séjour Caution
Workflow réservation
États
PENDING ↓ CONFIRMED ↓ SIGNED ↓ COMPLETED └── CANCELLED
Modèle Prisma
Reservation
model Reservation {
id String @id @default(uuid())
reservationNumber String @unique
propertyId String
tenantId String
startDate DateTime
endDate DateTime
guestCount Int
totalAmount Decimal
status ReservationStatus
createdAt DateTime @default(now())
}
ReservationGuest
model ReservationGuest {
id String @id @default(uuid())
reservationId String
firstName String
lastName String
birthDate DateTime?
nationality String?
}
ReservationEvent
model ReservationEvent {
id String @id @default(uuid())
reservationId String
eventType String
payload Json
createdAt DateTime
}
CalendarEvent
model CalendarEvent {
id String @id @default(uuid())
propertyId String
reservationId String?
startDate DateTime
endDate DateTime
status String
}
Architecture Backend
src/modules/reservations ├── reservations │ ├── guests │ ├── pricing │ ├── calendar │ ├── availability │ └── events
Domain Services
AvailabilityService ReservationService PricingService CalendarService ReservationNumberGenerator
Événements métier
ReservationCreated
ReservationCreated
ReservationCancelled
ReservationCancelled
ReservationConfirmed
ReservationConfirmed
Swagger
Tags
Reservations ReservationGuests ReservationPricing ReservationCalendar
Volume API
Environ :
25 endpoints
Frontend
Pages publiques
/property/[slug] /booking /booking/confirmation
Espace client
/reservations /reservations/[id]
Composants
AvailabilityCalendar BookingForm BookingSummary GuestForm ReservationTimeline
Tests
Unitaires
PricingService AvailabilityService ReservationService CalendarService
Intégration
Check Availability ↓ Calculate Price ↓ Create Reservation ↓ Block Calendar
E2E
Recherche ↓ Choix dates ↓ Calcul prix ↓ Création réservation ↓ Consultation réservation
Définition de terminé
Le Sprint 4 est terminé lorsque :
- Disponibilités fonctionnelles
- Calcul tarifaire fonctionnel
- Réservations fonctionnelles
- Voyageurs fonctionnels
- Calendrier fonctionnel
- Blocages automatiques fonctionnels
- Swagger à jour
- Tests verts
- CI verte
Livrables
- ReservationsModule
- ReservationGuestModule
- ReservationCalendarModule
- PricingModule
- AvailabilityEngineModule
- DTO
- Swagger
- Tests
- Migrations Prisma
Démonstration Sprint
Scénario métier :
1. Consultation d'un bien 2. Vérification disponibilité 3. Calcul tarif 4. Création réservation 5. Ajout voyageurs 6. Blocage calendrier 7. Consultation réservation
Sprint suivant
Sprint 5 — Contrats & Signature Électronique
Objectif :
Transformer une réservation en engagement contractuel juridiquement opposable.
Modules concernés :
ContractsModule ContractTemplateModule ContractGenerationModule SignatureModule DocumentModule
Fonctionnalités :
- Génération automatique du contrat
- Gestion des modèles
- Production PDF
- Signature électronique
- Archivage des documents
- Téléchargement des contrats
À l'issue du Sprint 5, une réservation pourra être contractualisée et signée électroniquement par le client.
ujusum/1-implantation/5-reservation-calendrier.txt · Dernière modification : 2026/06/06 03:14 de 91.170.108.99