====== 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.