Compare commits

...

2 Commits

98
cdc.md
View File

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