Automatiser la génération d'un reporting financier Excel avec Python, du notebook au déploiement continu.
Ce dépôt accompagne un tutoriel pédagogique destiné aux étudiants du Master MEDAS. Il sert de fil rouge à un cours sur la reproductibilité, la mise en production et les bonnes pratiques à adopter lorsque l'on développe un projet de données : on part d'un simple notebook et on le transforme, étape par étape, en une véritable application déployée et livrée automatiquement.
| Ressource | Lien |
|---|---|
| 📖 Le tutoriel complet | surybang.github.io/MEDAS-Financial-Reporting |
| 🚀 L'application en ligne | https://medas-financial-reporting.lab.sspcloud.fr/ |
| 📦 L'image Docker | hub.docker.com/r/surybang/medas-financial-reporting |
| 🔧 Le dépôt de déploiement (GitOps) | https://github.com/surybang/medas-financial-reporting-deployment |
Les données sont disponibles ici :
https://minio.lab.sspcloud.fr/fabienhos/td-reporting-financial/financial_data.parquet
Les données ont été générées à partir d'un script dans un autre projet, elles sont totalement fictives mais représentatives d'un cas d'usage réel pour un reporting financier auprès d'un opérateur de contrôle.
Aux étudiants du Master MEDAS et plus largement à toute personne qui sait écrire un script Python qui "marche sur sa machine" et veut comprendre comment en faire un produit fiable, partageable et déployé. Aucune expertise en DevOps n'est requise au départ : le tutoriel construit chaque brique progressivement.
À partir d'un jeu de données clients, le projet :
- charge et valide les données brutes (contrôle de schéma)
- nettoie les données et les persiste sur un stockage objet (MinIO / S3)
- génère un reporting financier
Excelà partir d'un template - expose le tout dans une application web interactive (
Streamlit) où l'on consulte les indicateurs et télécharge le reporting
Le projet se compose de deux data products distincts : un package qui produit et persiste le reporting et une application Streamlit qui lit et expose le résultat. MinIO est le point de rencontre entre les deux.
- Python 3.13 avec
uv(gestion d'environnement,src layout, packaging) - pandas, openpyxl pour la transformation et la génération Excel
- pandera pour la validation de schéma
- Loguru pour le logging
- s3fs pour le stockage objet
- Streamlit pour l'interface
- ruff (lint)
- pytest + pytest-cov (tests et couverture)
- GitHub Actions (CI/CD), Docker, ArgoCD (déploiement GitOps sur Kubernetes / SSP Cloud Onyxia)
# Installer les dépendances
uv sync
# Générer le reporting
uv run reporting
# Lancer l'application
uv run appLe pipeline a besoin d'un accès à un stockage MinIO configuré via les variables d'environnement
AWS_S3_ENDPOINT,S3_BUCKET,AWS_ACCESS_KEY_IDetAWS_SECRET_ACCESS_KEY.
L'application est déployée en GitOps : la CI build et publie l'image sur Docker Hub et ArgoCD surveille un dépôt de déploiement dédié (medas-financial-reporting-deployment) pour appliquer automatiquement tout changement sur le cluster. Le déploiement complet est documenté dans le tutoriel.