ujusum:1-implantation:4-catalogue-immobilier
Table des matières
Sprint 3 — Catalogue Immobilier
Objectif du Sprint
Mettre en œuvre le premier domaine métier central de la plateforme :
la gestion complète des biens immobiliers.
À l'issue du Sprint 3 :
- Un gestionnaire peut créer un bien
- Un gestionnaire peut modifier un bien
- Un gestionnaire peut publier un bien
- Un gestionnaire peut gérer les médias
- Un gestionnaire peut gérer les équipements
- Un gestionnaire peut gérer les disponibilités
- Un gestionnaire peut gérer les tarifs
- Un visiteur peut consulter une annonce publique
Ce sprint constitue le premier incrément métier visible du produit.
Périmètre
Modules concernés
PropertiesModule PropertyMediaModule PropertyFeaturesModule PropertyAvailabilityModule PropertyRatesModule PropertySearchModule
User Stories
US-301 : Créer un bien
En tant que gestionnaire
Je souhaite créer un bien
Afin de le proposer à la location.
Endpoint
POST /properties
Données obligatoires
Référence Titre Type Catégorie Adresse Capacité Surface Description
Critères
- Référence unique
- Validation des données
- Création en statut DRAFT
- Historisation
US-302 : Modifier un bien
Endpoint
PUT /properties/{id}
Critères
- Mise à jour complète
- Historisation
- Audit
US-303 : Consulter un bien
Endpoint
GET /properties/{id}
Informations retournées
Informations générales Adresse Photos Équipements Disponibilités Tarifs
US-304 : Archiver un bien
Endpoint
DELETE /properties/{id}
Comportement
Soft Delete
US-305 : Publier un bien
Endpoint
POST /properties/{id}/publish
Conditions
Titre renseigné Description renseignée Adresse renseignée Photo principale présente Tarif actif présent
Workflow
DRAFT ↓ PUBLISHED ↓ RENTED ↓ ARCHIVED
Gestion des médias
US-306 : Ajouter une photo
Endpoint
POST /properties/{id}/photos
Formats autorisés
jpg jpeg png webp
Taille maximale
20 Mo
US-307 : Définir la photo principale
Endpoint
POST /properties/{id}/photos/{photoId}/cover
US-308 : Supprimer une photo
Endpoint
DELETE /properties/{id}/photos/{photoId}
Gestion des équipements
US-309 : Associer des équipements
Endpoint
PUT /properties/{id}/features
Liste initiale
Wifi Piscine Climatisation Parking Terrasse Balcon Jardin Barbecue Cuisine équipée Lave-vaisselle Lave-linge Télévision Fibre Animaux autorisés
Gestion des disponibilités
US-310 : Créer une période
Endpoint
POST /properties/{id}/availability
Données
Date début Date fin Statut
Statuts
AVAILABLE UNAVAILABLE MAINTENANCE BLOCKED
US-311 : Bloquer une période
Cas d'usage
Travaux Occupation propriétaire Maintenance
Gestion tarifaire
US-312 : Créer un tarif
Endpoint
POST /properties/{id}/rates
Champs
Nom Prix nuit Prix semaine Prix mois Taxe séjour Caution
US-313 : Tarification saisonnière
Exemple
Basse saison Moyenne saison Haute saison Très haute saison
Endpoint
POST /properties/{id}/seasons
Consultation publique
US-314 : Recherche publique
Endpoint
GET /search/properties
Critères
Ville Prix min Prix max Capacité Chambres Équipements
US-315 : Consultation fiche publique
Endpoint
GET /public/properties/{slug}
Données exposées
Titre Description Galerie Équipements Tarifs Disponibilités
Modèle Prisma
Property
model Property {
id String @id @default(uuid())
propertyCode String @unique
title String
slug String @unique
status PropertyStatus
surface Decimal?
roomCount Int?
bedroomCount Int?
bathroomCount Int?
maxCapacity Int?
descriptionShort String?
descriptionLong String?
}
PropertyPhoto
model PropertyPhoto {
id String @id @default(uuid())
propertyId String
fileName String
storagePath String
isCover Boolean
displayOrder Int
}
Feature
model Feature {
id String @id @default(uuid())
code String @unique
label String
}
PropertyAvailability
model PropertyAvailability {
id String @id @default(uuid())
propertyId String
startDate DateTime
endDate DateTime
status String
}
PropertyRate
model PropertyRate {
id String @id @default(uuid())
propertyId String
nightlyRate Decimal
weeklyRate Decimal?
monthlyRate Decimal?
}
Architecture Backend
src/modules/properties ├── properties │ ├── media │ ├── features │ ├── availability │ ├── rates │ ├── search │ └── public
Swagger
Tags
Properties PropertyMedia PropertyFeatures PropertyAvailability PropertyRates PropertySearch
Volume API
Environ :
35 endpoints
Frontend
Back Office
Pages :
/properties /properties/create /properties/[id] /properties/[id]/photos /properties/[id]/availability /properties/[id]/rates
Front Office
Pages :
/search /property/[slug]
Composants
PropertyForm PropertyCard PropertyGallery PropertyAvailabilityCalendar PropertyRatesTable PropertyFeatureSelector
Tests
Unitaires
PropertyService PropertyRateService PropertyAvailabilityService PropertyMediaService
Intégration
Create Property ↓ Upload Photos ↓ Add Features ↓ Add Availability ↓ Publish
E2E
Gestionnaire ↓ Créer bien ↓ Ajouter photo ↓ Ajouter tarif ↓ Publier ↓ Visible sur site public
Définition de terminé
Le Sprint 3 est terminé lorsque :
- CRUD Bien fonctionnel
- Photos fonctionnelles
- Équipements fonctionnels
- Disponibilités fonctionnelles
- Tarifs fonctionnels
- Publication fonctionnelle
- Recherche publique fonctionnelle
- Swagger à jour
- Tests verts
- CI verte
Livrables
- PropertiesModule
- PropertyMediaModule
- PropertyFeaturesModule
- PropertyAvailabilityModule
- PropertyRatesModule
- PropertySearchModule
- Migrations Prisma
- DTO
- Swagger
- Tests
Démonstration Sprint
Scénario métier :
1. Création d'un bien 2. Ajout de photos 3. Ajout d'équipements 4. Définition des disponibilités 5. Définition des tarifs 6. Publication 7. Recherche publique 8. Consultation fiche publique
Sprint suivant
Sprint 4 — Réservation & Calendrier
Objectif :
Permettre aux clients de réserver un bien.
Modules concernés :
ReservationsModule ReservationCalendarModule ReservationGuestModule PricingModule
Fonctionnalités :
- Vérification disponibilité
- Création réservation
- Gestion des voyageurs
- Calcul tarifaire
- Blocage calendrier
- Confirmation réservation
À l'issue du Sprint 4, un client pourra effectuer une réservation complète depuis le Front Office.
ujusum/1-implantation/4-catalogue-immobilier.txt · Dernière modification : 2026/06/06 03:13 de 91.170.108.99