====== Sprint 15 — Multi-sites, Marque Blanche & Réseau d'Agences ======
===== Objectif du Sprint =====
Transformer la plateforme en solution SaaS multi-marques capable de gérer :
* Plusieurs agences
* Plusieurs enseignes
* Plusieurs sites web
* Plusieurs domaines
* Plusieurs catalogues
* Plusieurs chartes graphiques
depuis une infrastructure unique.
À l'issue du Sprint 15 :
* Une agence peut exploiter plusieurs sites web
* Chaque site dispose de son identité graphique
* Les domaines personnalisés sont supportés
* Les réseaux d'agences sont gérés nativement
* Les biens peuvent être mutualisés
* Les réservations inter-agences sont possibles
Ce sprint marque le passage d'un SaaS mono-agence à une plateforme multi-enseignes.
----
====== Vision Architecture ======
===== Architecture cible =====
Plateforme SaaS
├── Réseau A
│ ├── Agence A1
│ ├── Agence A2
│ └── Agence A3
│
├── Réseau B
│ ├── Agence B1
│ └── Agence B2
│
└── Réseau C
----
===== Exploitation =====
Chaque agence peut disposer :
Site Web
Logo
Couleurs
Domaine
Catalogue
Pages CMS
Emails
----
====== Périmètre ======
===== Modules concernés =====
MultiSiteModule
WhiteLabelModule
BrandingModule
AgencyNetworkModule
DomainManagementModule
CatalogSharingModule
----
====== User Stories ======
===== US-1501 : Créer un site =====
**En tant qu'administrateur réseau**
Je souhaite créer un site
Afin de publier une nouvelle marque.
----
===== Endpoint =====
POST /sites
----
===== Informations =====
Nom
Code
Langue
Agence
Domaine principal
----
====== US-1502 : Configurer un domaine ======
===== Endpoint =====
POST /sites/{id}/domains
----
===== Exemple =====
www.agence-a.fr
locations.agence-a.fr
booking.agence-a.fr
----
===== Vérifications =====
DNS
SSL
Redirections
----
====== US-1503 : Gérer plusieurs domaines ======
===== Cas d'usage =====
1 Site
↓
N Domaines
----
====== Marque Blanche ======
===== US-1504 : Personnaliser l'identité visuelle =====
===== Paramètres =====
Logo
Couleurs
Typographie
Favicon
Images
----
===== Endpoint =====
PUT /sites/{id}/branding
----
====== US-1505 : Personnaliser les emails ======
===== Éléments =====
Expéditeur
Logo
Couleurs
Signature
----
====== Thèmes ======
===== US-1506 : Gérer les thèmes =====
===== Endpoint =====
GET /themes
POST /themes
----
===== Composants configurables =====
Header
Footer
Cartes biens
Pages recherche
Pages détail
----
===== Structure =====
Theme
↓
Tokens
↓
Composants
↓
Pages
----
====== Réseau d'agences ======
===== US-1507 : Créer un réseau =====
===== Endpoint =====
POST /agency-networks
----
===== Informations =====
Nom
Code
Description
----
====== US-1508 : Associer une agence =====
===== Endpoint =====
POST /agency-networks/{id}/agencies
----
====== Mutualisation ======
===== US-1509 : Mutualiser les biens =====
===== Objectif =====
Partager des biens entre agences.
----
===== Exemple =====
Agence Montpellier
↓
Bien visible
↓
Agence Nîmes
↓
Bien visible
----
===== Endpoint =====
POST /properties/{id}/sharing
----
====== US-1510 : Définir les règles de partage =====
===== Règles =====
Visible
Réservable
Commissionnable
----
====== Réservations inter-agences ======
===== US-1511 : Réserver un bien partagé =====
===== Workflow =====
Agence A
↓
Réservation
↓
Bien Agence B
↓
Commission
----
====== US-1512 : Calcul des commissions =====
===== Données =====
Agence source
Agence propriétaire
Montant
Pourcentage
----
===== Calcul =====
:contentReference[oaicite:0]{index=0}
----
====== Catalogue multi-sites ======
===== US-1513 : Affecter un bien à plusieurs sites =====
===== Endpoint =====
POST /properties/{id}/sites
----
===== Exemple =====
Bien
↓
Site A
Site B
Site C
----
====== US-1514 : Gérer la visibilité =====
===== Modes =====
PUBLIC
PRIVATE
NETWORK
AGENCY_ONLY
----
====== CMS léger ======
===== US-1515 : Gérer les pages =====
===== Endpoint =====
GET /sites/{id}/pages
POST /sites/{id}/pages
----
===== Pages =====
Accueil
À propos
Services
Contact
Mentions légales
----
====== US-1516 : Gérer les menus =====
===== Configuration =====
Navigation
Footer
Liens externes
----
====== Modèle Prisma ======
===== Site =====
model Site {
id String @id @default(uuid())
tenantId String
code String @unique
name String
active Boolean
createdAt DateTime @default(now())
}
----
===== SiteDomain =====
model SiteDomain {
id String @id @default(uuid())
siteId String
domain String
isPrimary Boolean
}
----
===== Branding =====
model Branding {
id String @id @default(uuid())
siteId String
logoUrl String?
primaryColor String?
secondaryColor String?
}
----
===== AgencyNetwork =====
model AgencyNetwork {
id String @id @default(uuid())
code String @unique
name String
}
----
===== PropertySharing =====
model PropertySharing {
id String @id @default(uuid())
propertyId String
agencyId String
visibility String
}
----
====== Architecture Backend ======
src/modules/network
├── sites
│
├── branding
│
├── domains
│
├── networks
│
├── sharing
│
└── cms
----
====== Domain Services ======
SiteService
BrandingService
DomainService
AgencyNetworkService
PropertySharingService
CmsService
----
====== Événements métier ======
===== SiteCreated =====
SiteCreated
----
===== DomainValidated =====
DomainValidated
----
===== PropertyShared =====
PropertyShared
----
====== Frontend ======
===== Back Office =====
Pages :
/admin/sites
/admin/sites/[id]
/admin/branding
/admin/networks
/admin/sharing
/admin/cms
----
===== Front Office =====
Génération dynamique :
www.agence-a.fr
www.agence-b.fr
www.agence-c.fr
----
===== Composants =====
ThemeEditor
BrandingManager
DomainManager
NetworkExplorer
SharingRulesEditor
CmsPageEditor
----
====== Swagger ======
===== Tags =====
Sites
Branding
Domains
Networks
Sharing
CMS
----
===== Volume API =====
Environ :
50 endpoints
----
====== Tests ======
===== Unitaires =====
SiteService
BrandingService
DomainService
AgencyNetworkService
----
===== Intégration =====
Création site
↓
Branding
↓
Domaine
↓
Publication
----
===== E2E =====
Création réseau
↓
Création agence
↓
Création site
↓
Publication bien
↓
Réservation inter-agence
----
====== Définition de terminé ======
Le Sprint 15 est terminé lorsque :
* Multi-sites opérationnel
* Marque blanche opérationnelle
* Domaines personnalisés opérationnels
* Réseaux d'agences opérationnels
* Mutualisation opérationnelle
* Réservations inter-agences opérationnelles
* CMS opérationnel
* Swagger à jour
* Tests verts
* CI verte
----
====== Livrables ======
* MultiSiteModule
* WhiteLabelModule
* BrandingModule
* AgencyNetworkModule
* DomainManagementModule
* CatalogSharingModule
* CMSModule
* DTO
* Swagger
* Tests
* Migrations Prisma
----
====== Bilan Release 3.1 ======
À l'issue du Sprint 15 :
* SaaS multi-tenant avancé
* Réseaux d'agences
* Multi-sites
* Marque blanche
* Mutualisation des catalogues
* Réservations inter-agences
La plateforme devient commercialisable auprès de groupes immobiliers, franchises, réseaux de conciergeries et opérateurs multi-marques.
----
====== Sprint suivant ======
===== Sprint 16 — Mobile, PWA & Expérience Terrain =====
Objectif :
Permettre aux utilisateurs, propriétaires et équipes terrain d'utiliser la plateforme depuis mobile avec ou sans connexion.
Modules concernés :
MobileModule
PWAModule
OfflineModule
CheckInModule
CheckOutModule
FieldOperationsModule
Fonctionnalités :
* Progressive Web App
* Mode hors ligne
* Check-in mobile
* Check-out mobile
* États des lieux numériques
* Signature sur mobile
* Photos terrain
* Synchronisation différée
À l'issue du Sprint 16, la plateforme sera pleinement exploitable sur le terrain.