ujusum:1-implantation:5-reservation-calendrier
Différences
Ci-dessous, les différences entre deux révisions de la page.
| ujusum:1-implantation:5-reservation-calendrier [2026/06/06 03:14] – créée 91.170.108.99 | ujusum:1-implantation:5-reservation-calendrier [2026/06/29 22:00] (Version actuelle) – supprimée 83.202.252.200 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Sprint 4 — Réservation & Calendrier ====== | ||
| - | ===== Objectif du Sprint ===== | ||
| - | |||
| - | Mettre en œuvre le moteur de réservation de la plateforme. | ||
| - | |||
| - | À l' | ||
| - | |||
| - | * 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' | ||
| - | * Les conflits de réservation sont empêchés | ||
| - | |||
| - | Ce sprint constitue le premier parcours métier complet générateur de chiffre d' | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== 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 ===== | ||
| - | |||
| - | <code http> | ||
| - | GET / | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Paramètres ===== | ||
| - | |||
| - | < | ||
| - | startDate | ||
| - | |||
| - | endDate | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Réponse ===== | ||
| - | |||
| - | <code json> | ||
| - | { | ||
| - | " | ||
| - | " | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 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 ===== | ||
| - | |||
| - | <code http> | ||
| - | POST / | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Données ===== | ||
| - | |||
| - | <code json> | ||
| - | { | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Calcul ===== | ||
| - | |||
| - | < | ||
| - | Nombre de nuits | ||
| - | |||
| - | + | ||
| - | |||
| - | Tarif saisonnier | ||
| - | |||
| - | + | ||
| - | |||
| - | Taxes | ||
| - | |||
| - | + | ||
| - | |||
| - | Options | ||
| - | |||
| - | = | ||
| - | |||
| - | Montant total | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Réponse ===== | ||
| - | |||
| - | <code json> | ||
| - | { | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== US-403 : Créer une réservation ====== | ||
| - | |||
| - | ===== Endpoint ===== | ||
| - | |||
| - | <code http> | ||
| - | POST / | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Données ===== | ||
| - | |||
| - | <code json> | ||
| - | { | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 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 ===== | ||
| - | |||
| - | <code http> | ||
| - | POST / | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Données ===== | ||
| - | |||
| - | < | ||
| - | Nom | ||
| - | |||
| - | Prénom | ||
| - | |||
| - | Date naissance | ||
| - | |||
| - | Nationalité | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Contraintes ===== | ||
| - | |||
| - | < | ||
| - | Nombre voyageurs ≤ capacité bien | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== US-405 : Consulter une réservation ====== | ||
| - | |||
| - | ===== Endpoint ===== | ||
| - | |||
| - | <code http> | ||
| - | GET / | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Informations ===== | ||
| - | |||
| - | < | ||
| - | Référence | ||
| - | |||
| - | Bien | ||
| - | |||
| - | Voyageurs | ||
| - | |||
| - | Montant | ||
| - | |||
| - | Statut | ||
| - | |||
| - | Historique | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== US-406 : Modifier une réservation ====== | ||
| - | |||
| - | ===== Endpoint ===== | ||
| - | |||
| - | <code http> | ||
| - | PUT / | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Modifications autorisées ===== | ||
| - | |||
| - | < | ||
| - | Dates | ||
| - | |||
| - | Nombre voyageurs | ||
| - | |||
| - | Commentaires | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Conditions ===== | ||
| - | |||
| - | < | ||
| - | Statut = PENDING | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== US-407 : Annuler une réservation ====== | ||
| - | |||
| - | ===== Endpoint ===== | ||
| - | |||
| - | <code http> | ||
| - | POST / | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Conséquences ===== | ||
| - | |||
| - | < | ||
| - | Statut = CANCELLED | ||
| - | |||
| - | ↓ | ||
| - | |||
| - | Libération calendrier | ||
| - | |||
| - | ↓ | ||
| - | |||
| - | Historisation | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Gestion du calendrier ====== | ||
| - | |||
| - | ===== US-408 : Blocage automatique ===== | ||
| - | |||
| - | Lorsqu' | ||
| - | |||
| - | < | ||
| - | 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 ===== | ||
| - | |||
| - | <code http> | ||
| - | GET / | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 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 ===== | ||
| - | |||
| - | <code prisma> | ||
| - | model Reservation { | ||
| - | |||
| - | id String @id @default(uuid()) | ||
| - | |||
| - | reservationNumber | ||
| - | |||
| - | propertyId | ||
| - | |||
| - | tenantId | ||
| - | |||
| - | startDate | ||
| - | |||
| - | endDate | ||
| - | |||
| - | guestCount | ||
| - | |||
| - | totalAmount | ||
| - | |||
| - | status | ||
| - | |||
| - | createdAt | ||
| - | |||
| - | } | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== ReservationGuest ===== | ||
| - | |||
| - | <code prisma> | ||
| - | model ReservationGuest { | ||
| - | |||
| - | id String @id @default(uuid()) | ||
| - | |||
| - | reservationId | ||
| - | |||
| - | firstName | ||
| - | |||
| - | lastName | ||
| - | |||
| - | birthDate | ||
| - | |||
| - | nationality | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== ReservationEvent ===== | ||
| - | |||
| - | <code prisma> | ||
| - | model ReservationEvent { | ||
| - | |||
| - | id String @id @default(uuid()) | ||
| - | |||
| - | reservationId | ||
| - | |||
| - | eventType | ||
| - | |||
| - | payload | ||
| - | |||
| - | createdAt | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== CalendarEvent ===== | ||
| - | |||
| - | <code prisma> | ||
| - | model CalendarEvent { | ||
| - | |||
| - | id String @id @default(uuid()) | ||
| - | |||
| - | propertyId | ||
| - | |||
| - | reservationId | ||
| - | |||
| - | startDate | ||
| - | |||
| - | endDate | ||
| - | |||
| - | status | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Architecture Backend ====== | ||
| - | |||
| - | < | ||
| - | src/ | ||
| - | |||
| - | ├── 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 ===== | ||
| - | |||
| - | < | ||
| - | / | ||
| - | |||
| - | /booking | ||
| - | |||
| - | / | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Espace client ===== | ||
| - | |||
| - | < | ||
| - | / | ||
| - | |||
| - | / | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 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' | ||
ujusum/1-implantation/5-reservation-calendrier.1780708486.txt.gz · Dernière modification : 2026/06/06 03:14 de 91.170.108.99 · Actuellement bloqué par : 192.168.0.100,216.73.216.20