#
Architecture du projet
Cette page détaille l'architecture technique du projet MSPR 6.1, présentant les différents composants et leur interaction.
#
Vue d'ensemble
Le projet MSPR 6.1 est structuré en deux parties principales:
- Module de traitement des données (Python) - Responsable de l'acquisition, du traitement et du stockage des données épidémiologiques.
- API REST (Node.js/TypeScript) - Expose les données traitées via une interface API RESTful.
graph TD A[Datasets] -->|fetch.py| B[Données brutes] B -->|main.py| C[Données standardisées] C -->|postgress.py| D[(Base de données PostgreSQL)] D <-->|Prisma ORM| E[API REST] E -->|Express.js| F[Endpoints API] F --> G[Applications clientes]
#
Module de traitement des données
#
Composants principaux
- fetch.py: Script responsable du téléchargement des datasets depuis Kaggle
- main.py: Noyau du traitement de données, effectuant la standardisation et la normalisation
- postgress.py: Gère l'importation des données traitées dans PostgreSQL
#
Flux de traitement
- Acquisition - Les données sont téléchargées depuis Kaggle via l'API Kaggle
- Standardisation - Les colonnes sont renommées pour suivre une convention commune
- Enrichissement - Calcul de métriques supplémentaires (comme les cas récupérés quotidiens)
- Filtrage - Élimination des données non pertinentes ou incomplètes
- Stockage - Import dans des tables PostgreSQL structurées
#
API REST
#
Technologies utilisées
- Node.js - Environnement d'exécution
- TypeScript - Langage de programmation typé
- Express.js - Framework web
- Prisma - ORM pour l'interaction avec la base de données
- Swagger/OpenAPI - Documentation automatique de l'API
#
Structure des dossiers
rest/
├── src/
│ ├── index.ts # Point d'entrée de l'application
│ ├── docs.ts # Configuration de la documentation
│ ├── routes/ # Définition des endpoints API
│ └── middleware/ # Middlewares Express
├── prisma/ # Configuration Prisma et modèles de données
└── docs/ # Documentation générée
#
Modèle de données
Les deux principales entités de données sont:
COVID Data
- Date
- Pays
- Cas totaux
- Nouveaux cas
- Cas actifs
- Décès totaux
- Nouveaux décès
- Récupérations totales
- Récupérations quotidiennes
MPOX Data
- Date
- Pays
- Cas totaux
- Nouveaux cas
- Décès totaux
- Nouveaux décès
#
Sécurité et performances
#
Sécurité
- Validation des entrées sur tous les endpoints API
- Contrôle des taux de requêtes pour prévenir les abus
- Sanitisation des requêtes SQL via Prisma ORM
#
Performances
- Indexation des tables PostgreSQL sur les champs fréquemment recherchés
- Mise en cache des réponses pour les requêtes populaires
- Pagination des résultats pour gérer les grands ensembles de données
#
Évolutivité
L'architecture permet d'étendre facilement le système:
- Ajout de nouveaux jeux de données (ex: autres maladies)
- Extension des endpoints API
- Intégration de fonctionnalités d'analyse avancées
#
Diagramme de séquence
sequenceDiagram participant Client participant API participant DB as PostgreSQL Client->>API: GET /api/covid/countries API->>DB: SELECT DISTINCT country FROM covid_data DB-->>API: Liste des pays API-->>Client: JSON {countries: [...]} Client->>API: GET /api/covid/stats?country=France API->>DB: SELECT * FROM covid_data WHERE country='France' DB-->>API: Données COVID pour la France API-->>API: Formatage des données API-->>Client: JSON {stats: [...]}