Skip to content

healthai-etl

Pipeline de données de la plateforme HealthAI — extraction, transformation et chargement en base PostgreSQL.

Stack

CoucheTechnologie
LangagePython 3.12+
Paquetsuv
ORMSQLAlchemy 2.0
MigrationsAlembic
APIFastAPI + uvicorn
LinterRuff
Testspytest

Structure du projet

src/
├── data_pipeline/
│   ├── downloader/    # Récupération des données sources (Kaggle, RapidAPI)
│   ├── harmonize/     # Nettoyage et transformation (logique métier)
│   ├── loader/        # Insertion en base de données
│   ├── database.py    # Configuration SQLAlchemy
│   └── models.py      # Définition des tables (modèles ORM)
├── main.py            # Point d'entrée du pipeline
└── server.py          # Serveur FastAPI

Installation

Prérequis

bash
# Installer uv
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

Démarrage hybride (recommandé en dev)

bash
# 1. Lancer uniquement la base de données en Docker
docker compose up -d db

# 2. Installer les dépendances
uv sync

# 3. Appliquer les migrations
uv run alembic upgrade head

# 4. Lancer le serveur FastAPI
uv run uvicorn src.server:app --reload
# → http://127.0.0.1:8000/docs

Infrastructure complète

bash
docker compose up -d --build

Sources de données

Kaggle

bash
# Placer les credentials dans .env
KAGGLE_USERNAME=<username>
KAGGLE_KEY=<api_key>

# Exécuter le downloader
uv run python src/data_pipeline/downloader/api_client.py

RapidAPI (exercices)

Créer un compte sur RapidAPI et récupérer la clé API pour EDB (Exercise Database).

ini
RAPIDAPI_KEY=<api_key>

Automatisation (CRON)

bash
# Linux / macOS — ajouter au crontab
./cron_kaggle.sh

# Windows — Planificateur de tâches
# Action: Démarrer cron_kaggle.bat
# "Démarrer dans": chemin racine du projet

Exécuter le pipeline manuellement

bash
# Nécessaire en local (PYTHONPATH)
export PYTHONPATH=.          # macOS/Linux
$env:PYTHONPATH = "."        # Windows PowerShell

uv run python src/main.py

Migrations Alembic

bash
# Générer une migration depuis les changements de modèles
uv run alembic revision --autogenerate -m "description_du_changement"

# Appliquer
uv run alembic upgrade head

Commandes utiles

bash
uv run ruff check .          # Lint
uv run ruff format .         # Format
uv run pytest                # Tests

Kernel Jupyter

Pour les notebooks d'analyse, utiliser Python 3.13 (stable avec pandas). Si uv installe 3.14, épingler avec uv python pin 3.13 et redémarrer VS Code.