healthai-etl
Pipeline de données de la plateforme HealthAI — extraction, transformation et chargement en base PostgreSQL.
- Repo : HealthAI-Corpo/healthai-etl
- Image :
ghcr.io/healthai-corpo/healthai-etl - Port :
8000 - Swagger :
http://localhost:8000/docs
Stack
| Couche | Technologie |
|---|---|
| Langage | Python 3.12+ |
| Paquets | uv |
| ORM | SQLAlchemy 2.0 |
| Migrations | Alembic |
| API | FastAPI + uvicorn |
| Linter | Ruff |
| Tests | pytest |
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 FastAPIInstallation
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 | shDé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/docsInfrastructure complète
bash
docker compose up -d --buildSources 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.pyRapidAPI (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 projetExécuter le pipeline manuellement
bash
# Nécessaire en local (PYTHONPATH)
export PYTHONPATH=. # macOS/Linux
$env:PYTHONPATH = "." # Windows PowerShell
uv run python src/main.pyMigrations 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 headCommandes utiles
bash
uv run ruff check . # Lint
uv run ruff format . # Format
uv run pytest # TestsKernel 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.