brief-20/docs/BUSINESS_FLOW_DIAGRAMS.md
Avnyr f6f0888bd7 docs: add comprehensive project documentation files
Added detailed documentation files, including project overview, current status, specifications, implementation guide, and README structure. Organized content to improve navigation and streamline project understanding.
2025-05-15 17:08:53 +02:00

5.3 KiB

Business Flow Diagrams

This document contains diagrams illustrating the main business flows of the "Application de Création de Groupes" project.

Authentication Flow

sequenceDiagram
    participant User as Utilisateur
    participant Frontend as Frontend (Next.js)
    participant Backend as Backend (NestJS)
    participant GitHub as GitHub OAuth
    
    User->>Frontend: Clic sur "Se connecter avec GitHub"
    Frontend->>Backend: Redirection vers /auth/github
    Backend->>GitHub: Redirection vers GitHub OAuth
    GitHub->>User: Demande d'autorisation
    User->>GitHub: Accepte l'autorisation
    GitHub->>Backend: Redirection avec code d'autorisation
    Backend->>GitHub: Échange code contre token d'accès
    GitHub->>Backend: Retourne token d'accès
    Backend->>GitHub: Requête informations utilisateur
    GitHub->>Backend: Retourne informations utilisateur
    Backend->>Backend: Crée/Met à jour l'utilisateur en BDD
    Backend->>Backend: Génère JWT (access + refresh tokens)
    Backend->>Frontend: Redirection avec tokens JWT
    Frontend->>Frontend: Stocke les tokens
    Frontend->>User: Affiche interface authentifiée

Project Creation Flow

sequenceDiagram
    participant User as Utilisateur
    participant Frontend as Frontend (Next.js)
    participant Backend as Backend (NestJS)
    participant DB as Base de données
    
    User->>Frontend: Crée un nouveau projet
    Frontend->>Backend: POST /api/projects
    Backend->>Backend: Valide les données
    Backend->>DB: Insère le projet
    DB->>Backend: Confirme l'insertion
    Backend->>Frontend: Retourne le projet créé
    Frontend->>User: Affiche le projet créé

Person Management Flow

sequenceDiagram
    participant User as Utilisateur
    participant Frontend as Frontend (Next.js)
    participant Backend as Backend (NestJS)
    participant DB as Base de données
    
    User->>Frontend: Ajoute une personne au projet
    Frontend->>Backend: POST /api/projects/{id}/persons
    Backend->>Backend: Valide les données
    Backend->>DB: Insère la personne
    DB->>Backend: Confirme l'insertion
    Backend->>Frontend: Retourne la personne créée
    Frontend->>User: Affiche la personne dans le projet
    
    User->>Frontend: Modifie les attributs d'une personne
    Frontend->>Backend: PATCH /api/persons/{id}
    Backend->>Backend: Valide les données
    Backend->>DB: Met à jour la personne
    DB->>Backend: Confirme la mise à jour
    Backend->>Frontend: Retourne la personne mise à jour
    Frontend->>User: Affiche la personne mise à jour

Group Creation Flow

sequenceDiagram
    participant User as Utilisateur
    participant Frontend as Frontend (Next.js)
    participant Backend as Backend (NestJS)
    participant DB as Base de données
    
    alt Création manuelle
        User->>Frontend: Crée un groupe manuellement
        Frontend->>Backend: POST /api/projects/{id}/groups
        Backend->>Backend: Valide les données
        Backend->>DB: Insère le groupe
        DB->>Backend: Confirme l'insertion
        Backend->>Frontend: Retourne le groupe créé
        Frontend->>User: Affiche le groupe créé
        
        User->>Frontend: Ajoute des personnes au groupe (drag & drop)
        Frontend->>Backend: PATCH /api/groups/{id}/persons
        Backend->>Backend: Valide les données
        Backend->>DB: Met à jour les relations groupe-personnes
        DB->>Backend: Confirme la mise à jour
        Backend->>Frontend: Retourne le groupe mis à jour
        Frontend->>User: Affiche le groupe mis à jour
    else Création automatique
        User->>Frontend: Demande la création automatique de groupes
        Frontend->>Backend: POST /api/projects/{id}/auto-groups
        Backend->>Backend: Exécute l'algorithme de création de groupes
        Backend->>DB: Insère les groupes générés
        DB->>Backend: Confirme l'insertion
        Backend->>Frontend: Retourne les groupes créés
        Frontend->>User: Affiche les groupes créés
    end

Real-time Collaboration Flow

sequenceDiagram
    participant User1 as Utilisateur 1
    participant User2 as Utilisateur 2
    participant Frontend1 as Frontend (User 1)
    participant Frontend2 as Frontend (User 2)
    participant Backend as Backend (NestJS)
    participant WebSocket as WebSocket Server
    participant DB as Base de données
    
    User1->>Frontend1: Modifie un projet
    Frontend1->>Backend: PATCH /api/projects/{id}
    Backend->>DB: Met à jour le projet
    DB->>Backend: Confirme la mise à jour
    Backend->>WebSocket: Émet événement "project:updated"
    WebSocket->>Frontend2: Transmet événement "project:updated"
    Frontend2->>User2: Affiche les modifications en temps réel

Export Data Flow (GDPR)

sequenceDiagram
    participant User as Utilisateur
    participant Frontend as Frontend (Next.js)
    participant Backend as Backend (NestJS)
    participant DB as Base de données
    
    User->>Frontend: Demande l'export de ses données
    Frontend->>Backend: GET /api/users/me/export
    Backend->>DB: Récupère toutes les données de l'utilisateur
    DB->>Backend: Retourne les données
    Backend->>Backend: Formate les données en JSON
    Backend->>Frontend: Retourne le fichier JSON
    Frontend->>User: Télécharge le fichier de données