Outils pour utilisateurs

Outils du site


ujusum:1-projet:4-diagramme-uml

```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

DokuWiki Appliance - Powered by TurnKey Linux