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 à :


Vue d'ensemble du système

                    ┌──────────────┐
                    │   Client     │
                    └──────┬───────┘
                           │
                           ▼

┌────────────────────────────────────────────┐
│       Plateforme de Gestion Locative       │
└────────────────────────────────────────────┘

   ▲           ▲            ▲           ▲

   │           │            │           │

Propriétaire  Gestionnaire  Commercial  Admin

Diagrammes UML à produire

Diagrammes de cas d'utilisation


Diagrammes de classes


Diagrammes de séquence


Diagrammes d'états


Diagrammes de composants


Diagrammes de déploiement


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


Étape suivante

À partir de ce modèle UML, nous pouvons désormais produire :

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

DokuWiki Appliance - Powered by TurnKey Linux