---
type: reference
area: knowledge
status: reference
date: 2026-07-16
created: 2026-07-16
updated: 2026-07-16
tags:
  - knowledge
---
## **1. Contexte du Projet**

### **1.1. Objectif**

Déploiement d’une **plateforme web** pour le **calcul et l’analyse des coûts de transport entrants** dans la chaîne logistique, avec :

- Gestion des **ODM (Ordres de Mission)**.
- Suivi des **trips (voyages)** et des **coûts associés**.
- Workflow collaboratif entre **Consultants, PL1, RC, Antonin, STLA**.
- Génération de **PDF (ODM)**, **exports Excel (Trips/Forecasts)**, et **notifications automatiques par email**.

### **1.2. Stack Technique**

|Couche|Technologies|
|---|---|
|**Frontend**|React (Vite), CSS Variables (thème clair/sombre), Role-Based UI|
|**Backend**|Python (FastAPI), SQLAlchemy, Pydantic, JWT Auth|
|**Base de données**|PostgreSQL (Flexible Server)|
|**Infra/DevOps**|Docker, GitHub Actions, Azure Container Apps, Static Web Apps|
|**Stockage**|Azure Blob Storage (PDF/Excel)|
|**Emails**|Azure Communication Services|

---

##  **2. Fonctionnalités Clés **

|Catégorie|Fonctionnalités Implémentées|
|---|---|
|**Authentification**|Login/Logout avec JWT, gestion des rôles (Consultant, PL1, RC, Antonin, STLA, Admin).|
|**ODM**|Création, validation, rejet, téléchargement PDF.|
|**Trips**|CRUD, transitions de statut, tableau avec filtres (statut, date), export Excel.|
|**Cost Options**|Ajout d’options, lignes de transport, sélection d’une option.|
|**Forecast**|Création automatique depuis ODM/Trip/Option sélectionnée, tableau avec export Excel.|
|**Admin**|Gestion des utilisateurs (CRUD), assignation des rôles (RC, PL1).|
|**UI/UX**|Thème clair/sombre, sidebar dynamique, autorisations basées sur les rôles.|
|**Notifications**|Emails automatiques (Azure Communication Services) pour chaque transition de statut.|

---

##  **3. Architecture Technique**

### **3.1. Diagramme d’Architecture

![[img-20260716-085952-82a9e916.png]]
### **3.2. Détail des Composants Backend**

|Fichier|Rôle|
|---|---|
|`main.py`|Point d’entrée FastAPI, configuration CORS.|
|`database.py`|Connexion PostgreSQL (SQLAlchemy), Session Factory.|
|`models.py`|7 tables SQLAlchemy : `User`, `Role`, `ODM`, `Trip`, `CostOption`, `Forecast`, `Validation`.|
|`schemas.py`|Schémas Pydantic pour validation des requêtes/réponses.|
|`auth.py`|Authentification JWT, gestion des rôles (RBAC).|
|`routes/`|Endpoints API : `odm.py`, `trip.py`, `cost_options.py`, `forecast.py`, `users.py`.|
|`emails.py`|Envoi d’emails via Azure Communication Services (notifications workflow).|

### **3.3. Détail des Composants Frontend**

|Page/Composant|Fonctionnalités|
|---|---|
|**Login**|Authentification, redirection selon rôle.|
|**Dashboard Admin**|Tableau de bord avec métriques (nombre d’ODM, trips, etc.).|
|**ODM (Consultant)**|Liste des ODM, création, téléchargement PDF.|
|**ODM (PL1)**|Validation/Rejet des ODM, filtres par statut.|
|**Trip Form**|Formulaire ouvert après validation ODM par PL1.|
|**Trips Table**|Recherche, filtres (statut, date), export Excel.|
|**Trip Details**|Détails ODM/Trip, section Cost Options, Forecast (données pré-remplies + commentaires éditables).|
|**Cost Options**|Ajout d’options, lignes de transport, sélection d’une option.|
|**Forecast Table**|Recherche, filtres, export Excel, redirection vers Trip Details.|
|**Admin Users**|Table des utilisateurs, formulaires (ajout/édition), assignation des rôles (RC/PL1).|

---

## **4. Sécurité**

### **4.1. Mesures de Protection**

|Risque|Solution|Implémentation Azure|
|---|---|---|
|**Accès non autorisé**|RBAC + Authentification JWT + SSO|Rôles **Contributeur** (Abdelmonime, Hamza)|
|**Exposition des secrets**|Centralisation dans Key Vault|**Azure Key Vault** (accès via identités managées)|
|**Fuite de données**|Réseau privé + Chiffrement|**VNet** + **Private Endpoints** (PostgreSQL, Key Vault)|
|**Attaques SQL**|Requêtes paramétrées (ORM) + SSL obligatoire|PostgreSQL avec **SSL enforced**|
|**Surveillance**|Logs centralisés + Alertes|**Azure Monitor** + **Application Insights**|
|**Sauvegardes**|Sauvegardes automatiques DB|**PostgreSQL Flexible Server** (rétention 7j)|
|**Conformité**|RGPD, ISO 27001|Chiffrement (AES-256 au repos, TLS 1.2+ en transit)|
### **4.2. Flux de Données Sécurisé**

1. **Frontend → Backend** : HTTPS.
2. **Backend → PostgreSQL** : Connexion via **Private Endpoint** dans le VNet.
3. **Backend → Key Vault** : Accès via **identité managée**.
4. **Stockage de fichiers** : **Blob Storage** avec accès restreint.

---

##  **5. Services Azure Demandés**

| Service                            | Usage                                                     | Environnements |
| ---------------------------------- | --------------------------------------------------------- | -------------- |
| **Azure Container Registry (ACR)** | Stockage des images Docker (frontend/backend).            | UAT, PROD      |
| **Azure Container Apps**           | Hébergement du backend (conteneurs Docker).               | UAT, PROD      |
| **Azure Static Web Apps**          | Hébergement du frontend (React).                          | UAT, PROD      |
| **Azure Database for PostgreSQL**  | Base de données managée (users, ODMs, trips, etc.).       | UAT, PROD      |
| **Azure Virtual Network (VNet)**   | Réseau privé pour communication sécurisée.                | UAT, PROD      |
| **Azure Key Vault**                | Gestion des secrets (DB, JWT, variables d’environnement). | UAT, PROD      |
| **Azure Monitor + App Insights**   | Monitoring, logs, performance.                            | UAT, PROD      |
| **Azure Blob Storage**             | Stockage des PDF/Excel générés.                           | UAT, PROD      |
| **Azure Communication Services**   | Envoi d’emails automatiques (notifications workflow).     | UAT, PROD      |

---

##  **6. Environnements Demandés**

| Environnement | Objectif                           | Utilisation                                                      |
| ------------- | ---------------------------------- | ---------------------------------------------------------------- |
| **UAT**       | Tests, validation, feedback client | Déploiement initial pour validation avant passage en production. |
| **PROD**      | Production                         | Version officielle pour les utilisateurs finaux.                 |

---

##  **7. Accès Utilisateurs**

- Maryam Rafik Idriss Kriouil et Hamza Chaqchaq :
    - **Rôle** : Admin.
    - **Méthode** : **SSO** (intégration avec l’Active Directory Alten).
    - **Périmètre** : UAT + PROD.