Outils pour utilisateurs

Outils du site


ujusum:1-implantation:5-reservation-calendrier

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

DokuWiki Appliance - Powered by TurnKey Linux