ujusum:1-implantation:16-multisites
Différences
Ci-dessous, les différences entre deux révisions de la page.
| ujusum:1-implantation:16-multisites [2026/06/06 03:32] – créée 91.170.108.99 | ujusum:1-implantation:16-multisites [2026/06/06 03:33] (Version actuelle) – 91.170.108.99 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Sprint | + | ====== Sprint |
| - | ===== Sprint | + | ===== Objectif du Sprint ===== |
| - | Objectif | + | Transformer la plateforme en solution SaaS multi-marques capable de gérer |
| - | Permettre l' | + | * Plusieurs |
| + | * Plusieurs enseignes | ||
| + | * Plusieurs | ||
| + | * Plusieurs domaines | ||
| + | * Plusieurs catalogues | ||
| + | * Plusieurs chartes graphiques | ||
| - | Modules concernés | + | depuis une infrastructure unique. |
| + | |||
| + | À l' | ||
| + | |||
| + | * 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' | ||
| + | * 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 | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | ├── Réseau B | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | └── Réseau C | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exploitation ===== | ||
| + | |||
| + | Chaque agence peut disposer : | ||
| + | |||
| + | < | ||
| + | Site Web | ||
| + | |||
| + | Logo | ||
| + | |||
| + | Couleurs | ||
| + | |||
| + | Domaine | ||
| + | |||
| + | Catalogue | ||
| + | |||
| + | Pages CMS | ||
| + | |||
| + | Emails | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Périmètre ====== | ||
| + | |||
| + | ===== Modules concernés | ||
| < | < | ||
| Ligne 19: | Ligne 84: | ||
| DomainManagementModule | DomainManagementModule | ||
| + | |||
| + | CatalogSharingModule | ||
| </ | </ | ||
| - | Fonctionnalités : | + | ---- |
| + | ====== User Stories ====== | ||
| + | |||
| + | ===== US-1501 : Créer un site ===== | ||
| + | |||
| + | **En tant qu' | ||
| + | |||
| + | Je souhaite créer un site | ||
| + | |||
| + | Afin de publier une nouvelle marque. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | <code http> | ||
| + | POST /sites | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Informations ===== | ||
| + | |||
| + | < | ||
| + | Nom | ||
| + | |||
| + | Code | ||
| + | |||
| + | Langue | ||
| + | |||
| + | Agence | ||
| + | |||
| + | Domaine principal | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== US-1502 : Configurer un domaine ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | <code http> | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 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' | ||
| + | |||
| + | < | ||
| + | 1 Site | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | N Domaines | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Marque Blanche ====== | ||
| + | |||
| + | ===== US-1504 : Personnaliser l' | ||
| + | |||
| + | ===== Paramètres ===== | ||
| + | |||
| + | < | ||
| + | Logo | ||
| + | |||
| + | Couleurs | ||
| + | |||
| + | Typographie | ||
| + | |||
| + | Favicon | ||
| + | |||
| + | Images | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | <code http> | ||
| + | PUT / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== US-1505 : Personnaliser les emails ====== | ||
| + | |||
| + | ===== Éléments ===== | ||
| + | |||
| + | < | ||
| + | Expéditeur | ||
| + | |||
| + | Logo | ||
| + | |||
| + | Couleurs | ||
| + | |||
| + | Signature | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Thèmes ====== | ||
| + | |||
| + | ===== US-1506 : Gérer les thèmes ===== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | <code http> | ||
| + | GET /themes | ||
| + | |||
| + | POST /themes | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Composants configurables ===== | ||
| + | |||
| + | < | ||
| + | Header | ||
| + | |||
| + | Footer | ||
| + | |||
| + | Cartes biens | ||
| + | |||
| + | Pages recherche | ||
| + | |||
| + | Pages détail | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Structure ===== | ||
| + | |||
| + | < | ||
| + | Theme | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Tokens | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Composants | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Pages | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Réseau d' | ||
| + | |||
| + | ===== US-1507 : Créer un réseau ===== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | <code http> | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Informations ===== | ||
| + | |||
| + | < | ||
| + | Nom | ||
| + | |||
| + | Code | ||
| + | |||
| + | Description | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== US-1508 : Associer une agence ===== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | <code http> | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Mutualisation ====== | ||
| + | |||
| + | ===== US-1509 : Mutualiser les biens ===== | ||
| + | |||
| + | ===== Objectif ===== | ||
| + | |||
| + | Partager des biens entre agences. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemple ===== | ||
| + | |||
| + | < | ||
| + | Agence Montpellier | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Bien visible | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Agence Nîmes | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Bien visible | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | <code http> | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== 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 ===== | ||
| + | |||
| + | : | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Catalogue multi-sites ====== | ||
| + | |||
| + | ===== US-1513 : Affecter un bien à plusieurs sites ===== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | <code http> | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 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 ===== | ||
| + | |||
| + | <code http> | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Pages ===== | ||
| + | |||
| + | < | ||
| + | Accueil | ||
| + | |||
| + | À propos | ||
| + | |||
| + | Services | ||
| + | |||
| + | Contact | ||
| + | |||
| + | Mentions légales | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== US-1516 : Gérer les menus ===== | ||
| + | |||
| + | ===== Configuration ===== | ||
| + | |||
| + | < | ||
| + | Navigation | ||
| + | |||
| + | Footer | ||
| + | |||
| + | Liens externes | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Modèle Prisma ====== | ||
| + | |||
| + | ===== Site ===== | ||
| + | |||
| + | <code prisma> | ||
| + | model Site { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | tenantId | ||
| + | |||
| + | code String @unique | ||
| + | |||
| + | name String | ||
| + | |||
| + | active | ||
| + | |||
| + | createdAt | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== SiteDomain ===== | ||
| + | |||
| + | <code prisma> | ||
| + | model SiteDomain { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | siteId | ||
| + | |||
| + | domain | ||
| + | |||
| + | isPrimary | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Branding ===== | ||
| + | |||
| + | <code prisma> | ||
| + | model Branding { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | siteId | ||
| + | |||
| + | logoUrl | ||
| + | |||
| + | primaryColor | ||
| + | |||
| + | secondaryColor | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== AgencyNetwork ===== | ||
| + | |||
| + | <code prisma> | ||
| + | model AgencyNetwork { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | code String @unique | ||
| + | |||
| + | name String | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== PropertySharing ===== | ||
| + | |||
| + | <code prisma> | ||
| + | model PropertySharing { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | propertyId | ||
| + | |||
| + | agencyId | ||
| + | |||
| + | visibility | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Architecture Backend ====== | ||
| + | |||
| + | < | ||
| + | src/ | ||
| + | |||
| + | ├── 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/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' | ||
| + | * 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' | ||
| + | |||
| + | * SaaS multi-tenant avancé | ||
| + | * Réseaux d' | ||
| * Multi-sites | * Multi-sites | ||
| * Marque blanche | * Marque blanche | ||
| - | | + | * Mutualisation des catalogues |
| - | * Gestion réseau d' | + | |
| - | * Thèmes graphiques | + | |
| - | | + | |
| * Réservations inter-agences | * Réservations inter-agences | ||
| - | À l' | + | La plateforme devient commercialisable auprès de groupes immobiliers, |
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Sprint suivant ====== | ||
| + | |||
| + | ===== Sprint 16 — Mobile, PWA & Expérience Terrain ===== | ||
| + | |||
| + | Objectif : | ||
| + | |||
| + | Permettre aux utilisateurs, | ||
| + | |||
| + | 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' | ||
ujusum/1-implantation/16-multisites.1780709553.txt.gz · Dernière modification : 2026/06/06 03:32 de 91.170.108.99