ujusum:1-projet:4-diagramme-uml
Table des matières
```dokuwiki
Modèle UML complet
Objectif
Le modèle UML constitue la représentation fonctionnelle et technique du système.
Il servira à :
- Valider le métier avec les parties prenantes.
- Concevoir les API.
- Structurer le backend NestJS.
- Générer la documentation technique.
- Préparer le backlog Agile.
Vue d'ensemble du système
┌──────────────┐
│ Client │
└──────┬───────┘
│
▼
┌────────────────────────────────────────────┐
│ Plateforme de Gestion Locative │
└────────────────────────────────────────────┘
▲ ▲ ▲ ▲
│ │ │ │
Propriétaire Gestionnaire Commercial Admin
Diagrammes UML à produire
Diagrammes de cas d'utilisation
- Front Office Client
- Extranet Propriétaire
- Back Office Agence
- Administration
- Paiement
- Signature électronique
- CRM
Diagrammes de classes
- Domaine Utilisateurs
- Domaine Biens
- Domaine Réservations
- Domaine Contrats
- Domaine Paiements
- Domaine CRM
- Domaine Messagerie
Diagrammes de séquence
- Authentification
- Réservation
- Signature contrat
- Paiement
- Création d'un bien
- Annulation réservation
Diagrammes d'états
- Bien immobilier
- Réservation
- Contrat
- Paiement
Diagrammes de composants
- Frontend
- Backend
- Services externes
Diagrammes de déploiement
- Infrastructure Cloud
- Base PostgreSQL
- Stockage S3
- Reverse Proxy
- Monitoring
Cas d'utilisation
Acteurs
Client Propriétaire Gestionnaire Commercial Administrateur Super Administrateur Services Externes ├─ Stripe ├─ Yousign ├─ Email SMTP └─ Stockage S3
Cas d'utilisation Client
Client ├── Créer un compte ├── Se connecter ├── Modifier son profil ├── Rechercher un bien ├── Consulter une annonce ├── Ajouter aux favoris ├── Demander des informations ├── Réserver un bien ├── Signer un contrat ├── Effectuer un paiement ├── Télécharger une facture ├── Consulter ses réservations ├── Consulter ses contrats └── Envoyer un message
Cas d'utilisation Propriétaire
Propriétaire ├── Consulter ses biens ├── Consulter le calendrier ├── Consulter les revenus ├── Télécharger les contrats ├── Télécharger les factures ├── Consulter les réservations └── Communiquer avec l'agence
Cas d'utilisation Gestionnaire
Gestionnaire ├── Créer un bien ├── Modifier un bien ├── Publier un bien ├── Suspendre un bien ├── Gérer les disponibilités ├── Créer une réservation ├── Modifier une réservation ├── Annuler une réservation ├── Générer un contrat ├── Envoyer un contrat ├── Créer une facture ├── Enregistrer un paiement └── Gérer les clients
Diagramme de classes principal
Domaine Utilisateurs
User ------------------------- id email passwordHash status createdAt updatedAt ------------------------- UserProfile ------------------------- id firstName lastName phone birthDate ------------------------- Role ------------------------- id code label ------------------------- Permission ------------------------- id code description -------------------------
Relations :
User 1 ----- 1 UserProfile User n ----- n Role Role n ----- n Permission
Domaine Propriétaires
Owner ------------------------- id ownerCode active ------------------------- OwnerBankAccount ------------------------- id iban bic holder -------------------------
Relations :
Owner 1 ----- n OwnerBankAccount Owner 1 ----- n Property
Domaine Biens
Property ------------------------- id code title status surface capacity ------------------------- PropertyAddress ------------------------- PropertyPhoto ------------------------- PropertyFeature ------------------------- Feature ------------------------- Availability -------------------------
Relations :
Property 1 ----- 1 PropertyAddress Property 1 ----- n PropertyPhoto Property n ----- n Feature Property 1 ----- n Availability
Domaine Réservation
Reservation ------------------------- id number startDate endDate status totalAmount ------------------------- ReservationGuest ------------------------- ReservationEvent -------------------------
Relations :
User 1 ----- n Reservation Property 1 ----- n Reservation Reservation 1 ----- n ReservationGuest Reservation 1 ----- n ReservationEvent
Domaine Contrats
Contract ------------------------- id number version signedAt ------------------------- ContractSignature ------------------------- ContractDocument -------------------------
Relations :
Reservation 1 ----- 1 Contract Contract 1 ----- n ContractSignature Contract 1 ----- n ContractDocument
Domaine Paiements
Payment ------------------------- id amount status paymentDate ------------------------- Invoice ------------------------- InvoiceLine -------------------------
Relations :
Reservation 1 ----- n Payment Reservation 1 ----- n Invoice Invoice 1 ----- n InvoiceLine
Domaine CRM
Lead ------------------------- LeadStatus ------------------------- CustomerActivity ------------------------- CustomerNote -------------------------
Relations :
Lead 1 ----- n CustomerActivity Lead 1 ----- n CustomerNote
Diagrammes de séquence
Authentification
Utilisateur │ ├─ Login │ ▼ Frontend │ ├─ POST /auth/login │ ▼ AuthService │ ├─ Vérification utilisateur │ ├─ Vérification mot de passe │ ├─ Génération JWT │ └─ Génération Refresh Token │ ▼ Réponse
Réservation
Client │ ├─ Choisit un bien │ ▼ Frontend │ ├─ POST /reservations │ ▼ ReservationService │ ├─ Vérifie disponibilité │ ├─ Calcule tarif │ ├─ Crée réservation │ ├─ Génère contrat │ └─ Notifie client │ ▼ Réservation créée
Paiement
Client │ ├─ Paiement CB │ ▼ Frontend │ ▼ PaymentService │ ▼ Stripe │ ├─ Paiement accepté │ ▼ PaymentService │ ├─ Met à jour réservation │ ├─ Génère facture │ └─ Envoie confirmation
Diagrammes d'états
Cycle de vie d'un bien
DRAFT │ ▼ PUBLISHED │ ├──────────────► MAINTENANCE │ ▼ RENTED │ ▼ ARCHIVED
Cycle de vie d'une réservation
PENDING │ ▼ CONFIRMED │ ▼ SIGNED │ ▼ COMPLETED │ └────────► CANCELLED
Cycle de vie d'un contrat
DRAFT │ ▼ GENERATED │ ▼ SENT │ ▼ SIGNED │ └────────► REFUSED
Cycle de vie d'un paiement
PENDING │ ▼ AUTHORIZED │ ▼ PAID │ └────────► REFUNDED │ └────────► FAILED
Diagrammes de composants
┌───────────────────────┐
│ Frontend │
│ Next.js │
└──────────┬────────────┘
│
▼
┌───────────────────────┐
│ API Gateway │
└──────────┬────────────┘
▼
┌────────────────────────────────────┐
│ Backend NestJS │
├────────────────────────────────────┤
│ Auth Module │
│ User Module │
│ Property Module │
│ Reservation Module │
│ Contract Module │
│ Payment Module │
│ CRM Module │
│ Messaging Module │
│ Reporting Module │
└────────────────────────────────────┘
▼
┌───────────────────────┐
│ PostgreSQL │
└───────────────────────┘
▼
┌───────────────────────┐
│ S3 │
└───────────────────────┘
Diagramme de déploiement
Internet │ ▼ Cloudflare │ ▼ Nginx Reverse Proxy │ ▼ Docker Cluster ├── Frontend NextJS ├── Backend NestJS ├── Worker Queue ├── Scheduler │ ▼ PostgreSQL │ ▼ Object Storage S3 │ ▼ Monitoring ├── Prometheus ├── Grafana └── Loki
Livrables UML produits
- Diagrammes de cas d'utilisation
- Diagrammes de classes
- Diagrammes de séquence
- Diagrammes d'états
- Diagrammes de composants
- Diagrammes de déploiement
Étape suivante
À partir de ce modèle UML, nous pouvons désormais produire :
- Architecture hexagonale NestJS complète
- Organisation des modules
- Bounded Contexts (DDD)
- Ports & Adapters
- CQRS
- Event Bus
- Repository Pattern
- Spécification OpenAPI 3.1 complète
- Backlog Agile détaillé
Le prochain livrable recommandé est :
Architecture hexagonale du backend NestJS, car elle servira directement à la génération des modules applicatifs et des API REST. ```
ujusum/1-projet/4-diagramme-uml.txt · Dernière modification : 2026/06/06 02:49 de 91.170.108.99