ericjedha commited on
Commit
8d56508
·
verified ·
1 Parent(s): 875aa26

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -10
app.py CHANGED
@@ -109,29 +109,35 @@ def load_last_7_days_stats():
109
  return pd.DataFrame()
110
 
111
  def load_dashboard_summary():
112
- """Charge uniquement les métriques pour le dashboard (requête légère)"""
113
  engine = get_db_connection()
114
  query = text("""
115
  SELECT
116
  COUNT(*) as total_transactions,
117
- SUM(CASE WHEN pred_is_fraud = 1 THEN 1 ELSE 0 END) as total_frauds,
118
- SUM(CASE WHEN pred_is_fraud = 0 THEN 1 ELSE 0 END) as total_no_frauds,
119
- SUM(CASE WHEN pred_is_fraud = 1 THEN amt ELSE 0 END) as total_fraud_amount
120
- FROM fraud_predictions
121
  """)
122
-
123
  try:
124
  with engine.connect() as conn:
125
- result = conn.execute(query).fetchone()
 
 
 
 
126
  return {
127
- 'total_frauds': result[1] or 0,
128
- 'total_no_frauds': result[2] or 0,
129
- 'total_fraud_amount': result[3] or 0
130
  }
 
131
  except Exception as e:
132
  st.error(f"❌ Erreur lors du chargement du résumé: {e}")
133
  return {'total_frauds': 0, 'total_no_frauds': 0, 'total_fraud_amount': 0}
134
 
 
135
  # ========================== PAGE: DASHBOARD ==========================
136
  def page_dashboard():
137
  st.title("🕵🏻 Fraud Detection Dashboard")
 
109
  return pd.DataFrame()
110
 
111
  def load_dashboard_summary():
112
+ """Charge les métriques pour le dashboard (robuste à toutes versions SQLAlchemy)"""
113
  engine = get_db_connection()
114
  query = text("""
115
  SELECT
116
  COUNT(*) as total_transactions,
117
+ COALESCE(SUM(CASE WHEN pred_is_fraud = 1 THEN 1 ELSE 0 END), 0) as total_frauds,
118
+ COALESCE(SUM(CASE WHEN pred_is_fraud = 0 THEN 1 ELSE 0 END), 0) as total_no_frauds,
119
+ COALESCE(SUM(CASE WHEN pred_is_fraud = 1 THEN amt ELSE 0 END), 0) as total_fraud_amount
120
+ FROM fraud_predictions;
121
  """)
122
+
123
  try:
124
  with engine.connect() as conn:
125
+ result = conn.execute(query).mappings().first() # ✅ renvoie un dict directement
126
+
127
+ if not result:
128
+ return {'total_frauds': 0, 'total_no_frauds': 0, 'total_fraud_amount': 0}
129
+
130
  return {
131
+ 'total_frauds': result.get('total_frauds', 0),
132
+ 'total_no_frauds': result.get('total_no_frauds', 0),
133
+ 'total_fraud_amount': result.get('total_fraud_amount', 0)
134
  }
135
+
136
  except Exception as e:
137
  st.error(f"❌ Erreur lors du chargement du résumé: {e}")
138
  return {'total_frauds': 0, 'total_no_frauds': 0, 'total_fraud_amount': 0}
139
 
140
+
141
  # ========================== PAGE: DASHBOARD ==========================
142
  def page_dashboard():
143
  st.title("🕵🏻 Fraud Detection Dashboard")