Compare commits
2 Commits
8f422e4186
...
b0e1c062b4
Author | SHA1 | Date | |
---|---|---|---|
b0e1c062b4 | |||
765a5e35ae |
98
cdc.md
98
cdc.md
@ -114,7 +114,70 @@ L'application suivra une architecture monorepo avec séparation claire entre le
|
|||||||
- WebSockets via SocketIO pour les communications en temps réel
|
- WebSockets via SocketIO pour les communications en temps réel
|
||||||
- Authentification via JWT pour sécuriser les échanges
|
- Authentification via JWT pour sécuriser les échanges
|
||||||
|
|
||||||
#### 2.2.3 Déploiement
|
#### 2.2.3 Architecture et Flux d'Interactions
|
||||||
|
Le diagramme ci-dessous illustre les interactions entre les différents composants du système:
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TB
|
||||||
|
subgraph Client["Client (Navigateur)"]
|
||||||
|
FE["Frontend (NextJS)"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph Server["Serveur"]
|
||||||
|
BE["Backend (NestJS)"]
|
||||||
|
WS["WebSocket (SocketIO)"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph Storage["Stockage"]
|
||||||
|
DB[(PostgreSQL)]
|
||||||
|
S3[("Stockage S3\n(Fichiers)")]
|
||||||
|
end
|
||||||
|
|
||||||
|
FE <-->|"1. Requêtes HTTP/API REST"| BE
|
||||||
|
FE <-->|"2. Communication temps réel"| WS
|
||||||
|
BE <-->|"3. Requêtes SQL via DrizzleORM"| DB
|
||||||
|
BE <-->|"4. Stockage/Récupération de fichiers"| S3
|
||||||
|
BE <-->|"5. Événements temps réel"| WS
|
||||||
|
|
||||||
|
classDef client fill:#f9f,stroke:#333,stroke-width:2px
|
||||||
|
classDef server fill:#bbf,stroke:#333,stroke-width:2px
|
||||||
|
classDef storage fill:#bfb,stroke:#333,stroke-width:2px
|
||||||
|
|
||||||
|
class Client client
|
||||||
|
class Server server
|
||||||
|
class Storage storage
|
||||||
|
```
|
||||||
|
|
||||||
|
Ce diagramme montre les principaux flux d'interactions:
|
||||||
|
|
||||||
|
1. **Frontend ↔ Backend**: Communication via API REST pour les opérations CRUD standard
|
||||||
|
- Requêtes HTTP pour la création, lecture, mise à jour et suppression de données
|
||||||
|
- Authentification via JWT pour sécuriser les échanges
|
||||||
|
- Validation des données côté client et serveur
|
||||||
|
|
||||||
|
2. **Frontend ↔ WebSocket**: Communication en temps réel
|
||||||
|
- Notifications instantanées
|
||||||
|
- Mises à jour en direct des groupes
|
||||||
|
- Collaboration entre utilisateurs
|
||||||
|
|
||||||
|
3. **Backend ↔ Base de données**: Persistance des données
|
||||||
|
- Requêtes SQL optimisées via DrizzleORM
|
||||||
|
- Transactions pour garantir l'intégrité des données
|
||||||
|
- Utilisation d'index pour des performances optimales
|
||||||
|
|
||||||
|
4. **Backend ↔ Stockage S3**: Gestion des fichiers
|
||||||
|
- Stockage des avatars utilisateurs
|
||||||
|
- Sauvegarde des exports de données
|
||||||
|
- Gestion des pièces jointes
|
||||||
|
|
||||||
|
5. **Backend ↔ WebSocket**: Gestion des événements
|
||||||
|
- Diffusion des mises à jour aux clients connectés
|
||||||
|
- Gestion des salles pour les projets collaboratifs
|
||||||
|
- Notification des changements en temps réel
|
||||||
|
|
||||||
|
Cette architecture permet une séparation claire des responsabilités tout en offrant une expérience utilisateur fluide et réactive.
|
||||||
|
|
||||||
|
#### 2.2.4 Déploiement
|
||||||
- Conteneurisation avec Docker pour assurer la cohérence entre les environnements
|
- Conteneurisation avec Docker pour assurer la cohérence entre les environnements
|
||||||
- CI/CD via GitHub Actions pour l'intégration et le déploiement continus
|
- CI/CD via GitHub Actions pour l'intégration et le déploiement continus
|
||||||
- Infrastructure scalable pour gérer les pics de charge
|
- Infrastructure scalable pour gérer les pics de charge
|
||||||
@ -377,6 +440,39 @@ Les types de données PostgreSQL seront optimisés pour chaque cas d'usage:
|
|||||||
|
|
||||||
Ces optimisations permettront d'améliorer les performances des requêtes, de réduire l'empreinte mémoire et d'assurer l'intégrité des données.
|
Ces optimisations permettront d'améliorer les performances des requêtes, de réduire l'empreinte mémoire et d'assurer l'intégrité des données.
|
||||||
|
|
||||||
|
##### 2.3.3.5 Modèle Simplifié pour Utilisateurs Non-Techniques
|
||||||
|
Le diagramme ci-dessous présente une version simplifiée du modèle de données, conçue pour être facilement compréhensible par des personnes non-techniques:
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
User[Utilisateur] -->|Crée et gère| Project[Projet]
|
||||||
|
Project -->|Contient| Person[Personnes]
|
||||||
|
Project -->|Organise en| Group[Groupes]
|
||||||
|
Person -->|Appartient à| Group
|
||||||
|
Person -->|Possède| Tag[Tags/Étiquettes]
|
||||||
|
|
||||||
|
classDef user fill:#f9f,stroke:#333,stroke-width:2px
|
||||||
|
classDef project fill:#bbf,stroke:#333,stroke-width:2px
|
||||||
|
classDef person fill:#bfb,stroke:#333,stroke-width:2px
|
||||||
|
classDef group fill:#fbb,stroke:#333,stroke-width:2px
|
||||||
|
classDef tag fill:#ffb,stroke:#333,stroke-width:2px
|
||||||
|
|
||||||
|
class User user
|
||||||
|
class Project project
|
||||||
|
class Person person
|
||||||
|
class Group group
|
||||||
|
class Tag tag
|
||||||
|
```
|
||||||
|
|
||||||
|
Ce diagramme illustre les concepts clés de l'application:
|
||||||
|
- Un **Utilisateur** crée et gère des projets
|
||||||
|
- Chaque **Projet** contient des personnes et des groupes
|
||||||
|
- Les **Personnes** sont organisées en groupes et peuvent avoir des tags
|
||||||
|
- Les **Groupes** sont composés de personnes
|
||||||
|
- Les **Tags** permettent de catégoriser les personnes selon différents critères
|
||||||
|
|
||||||
|
Cette représentation simplifiée permet aux parties prenantes non-techniques de comprendre facilement la structure générale de l'application sans avoir à se plonger dans les détails techniques du modèle de données.
|
||||||
|
|
||||||
## 3. Spécifications Fonctionnelles
|
## 3. Spécifications Fonctionnelles
|
||||||
|
|
||||||
### 3.1 Interface Utilisateur
|
### 3.1 Interface Utilisateur
|
||||||
|
Loading…
x
Reference in New Issue
Block a user