Spaces:
Sleeping
Sleeping
Update src/streamlit_app.py
Browse files- src/streamlit_app.py +29 -18
src/streamlit_app.py
CHANGED
|
@@ -359,28 +359,39 @@ def run_vortex_system():
|
|
| 359 |
|
| 360 |
# Vérification de l'import
|
| 361 |
if Validation_Contract:
|
| 362 |
-
#
|
| 363 |
-
|
| 364 |
-
|
| 365 |
-
# 1. Instanciation du moteur
|
| 366 |
-
etl_engine = Validation_Contract.ETL_Engine(client, SHEET_NAME)
|
| 367 |
-
|
| 368 |
-
# 2. Exécution avec Spinner
|
| 369 |
-
with st.spinner("🔄 Nettoyage et Validation des données en cours..."):
|
| 370 |
-
success, result_explorer = etl_engine.run_etl()
|
| 371 |
-
|
| 372 |
-
# 3. Affichage du rapport
|
| 373 |
-
if success:
|
| 374 |
-
# result_explorer est l'objet DataExplorer qui contient la méthode d'affichage
|
| 375 |
-
result_explorer.show_etl_report()
|
| 376 |
-
else:
|
| 377 |
-
st.error(f"❌ Échec critique du pipeline : {result_explorer}")
|
| 378 |
|
| 379 |
-
|
| 380 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 381 |
|
| 382 |
else:
|
| 383 |
st.error("❌ Le module Validation_Contract n'est pas chargé.")
|
|
|
|
| 384 |
|
| 385 |
else:
|
| 386 |
st.error("❌ Impossible de se connecter à Google Sheets")
|
|
|
|
| 359 |
|
| 360 |
# Vérification de l'import
|
| 361 |
if Validation_Contract:
|
| 362 |
+
# Instanciation du moteur
|
| 363 |
+
etl_engine = Validation_Contract.ETL_Engine(client, SHEET_NAME)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 364 |
|
| 365 |
+
# --- AUTOMATISATION (AUTO-RUN) ---
|
| 366 |
+
# On vérifie si les données manquent. Si oui, on lance l'ETL automatiquement.
|
| 367 |
+
if 'data_explorer' not in st.session_state:
|
| 368 |
+
with st.spinner("🚀 Démarrage automatique du Pipeline ETL..."):
|
| 369 |
+
success, result = etl_engine.run_etl()
|
| 370 |
+
|
| 371 |
+
if not success:
|
| 372 |
+
st.error(f"❌ Échec critique du pipeline : {result}")
|
| 373 |
+
|
| 374 |
+
# --- AFFICHAGE DU RAPPORT ---
|
| 375 |
+
# À ce stade, soit l'ETL vient de tourner, soit les données étaient déjà là.
|
| 376 |
+
if 'data_explorer' in st.session_state:
|
| 377 |
+
explorer = st.session_state.data_explorer
|
| 378 |
+
|
| 379 |
+
# Petit header de statut
|
| 380 |
+
col_status, col_btn = st.columns([3, 1])
|
| 381 |
+
with col_status:
|
| 382 |
+
st.success(f"✅ Données synchronisées (Dernière MAJ : {explorer.load_timestamp.strftime('%H:%M:%S')})")
|
| 383 |
+
with col_btn:
|
| 384 |
+
# Bouton optionnel pour forcer la mise à jour si les données Google Sheets ont changé
|
| 385 |
+
if st.button("🔄 Forcer Rechargement"):
|
| 386 |
+
del st.session_state['data_explorer']
|
| 387 |
+
st.rerun()
|
| 388 |
+
|
| 389 |
+
# Affichage des graphiques de performance
|
| 390 |
+
explorer.show_etl_report()
|
| 391 |
|
| 392 |
else:
|
| 393 |
st.error("❌ Le module Validation_Contract n'est pas chargé.")
|
| 394 |
+
|
| 395 |
|
| 396 |
else:
|
| 397 |
st.error("❌ Impossible de se connecter à Google Sheets")
|