k96beni commited on
Commit
e917c55
·
verified ·
1 Parent(s): df8b05e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -2
app.py CHANGED
@@ -42,7 +42,9 @@ def generate_summary(df):
42
  yesterday = now - timedelta(days=1)
43
  last_14 = now - timedelta(days=14)
44
 
45
- df["timestamp"] = pd.to_datetime(df["timestamp"])
 
 
46
  df_day = df[df["timestamp"] >= yesterday.replace(hour=0, minute=0, second=0)]
47
  df_14 = df[df["timestamp"] >= last_14]
48
 
@@ -50,9 +52,55 @@ def generate_summary(df):
50
  summary.append(f"📅 Datum: {now.strftime('%Y-%m-%d')}")
51
  summary.append(f"🗨️ Antal meddelanden senaste 24h: {len(df_day)}")
52
  summary.append(f"👥 Unika sessioner senaste 24h: {df_day['session_id'].nunique()}")
53
- summary.append(f"🕒 Snittsvarstid senaste 24h: {round(df_day['response_time'].mean(), 2)} sekunder")
 
 
 
 
 
 
 
 
 
 
 
 
54
  summary.append(f"📊 Antal meddelanden (14 dagar): {len(df_14)}")
55
  summary.append(f"📈 Unika användare (14 dagar): {df_14['user_id'].nunique()}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  return "\n".join(summary)
57
 
58
  # --- Huvudfunktion ---
 
42
  yesterday = now - timedelta(days=1)
43
  last_14 = now - timedelta(days=14)
44
 
45
+ # Konvertera timestamp till datetime
46
+ df["timestamp"] = pd.to_datetime(df["timestamp"], errors="coerce")
47
+ # Filtrera loggar för senaste 24h och 14 dagar
48
  df_day = df[df["timestamp"] >= yesterday.replace(hour=0, minute=0, second=0)]
49
  df_14 = df[df["timestamp"] >= last_14]
50
 
 
52
  summary.append(f"📅 Datum: {now.strftime('%Y-%m-%d')}")
53
  summary.append(f"🗨️ Antal meddelanden senaste 24h: {len(df_day)}")
54
  summary.append(f"👥 Unika sessioner senaste 24h: {df_day['session_id'].nunique()}")
55
+
56
+ # Beräkna snitt antal meddelanden per session (om minst en session finns)
57
+ unique_sessions = df_day['session_id'].nunique()
58
+ avg_messages_per_session = round(len(df_day) / unique_sessions, 2) if unique_sessions > 0 else 0
59
+ summary.append(f"📊 Meddelanden per session (snitt): {avg_messages_per_session}")
60
+
61
+ # Snittsvarstid (om kolumnen finns och har giltiga värden)
62
+ if "response_time" in df_day.columns and not df_day["response_time"].empty:
63
+ avg_response_time = round(df_day["response_time"].mean(), 2)
64
+ summary.append(f"🕒 Snittsvarstid senaste 24h: {avg_response_time} sekunder")
65
+ else:
66
+ summary.append("🕒 Snittsvarstid senaste 24h: N/A")
67
+
68
  summary.append(f"📊 Antal meddelanden (14 dagar): {len(df_14)}")
69
  summary.append(f"📈 Unika användare (14 dagar): {df_14['user_id'].nunique()}")
70
+
71
+ # Likes och dislikes under senaste 24h
72
+ if "feedback" in df_day.columns:
73
+ df_day_feedback = df_day.dropna(subset=["feedback"])
74
+ likes = df_day_feedback[df_day_feedback["feedback"] == "up"].shape[0]
75
+ dislikes = df_day_feedback[df_day_feedback["feedback"] == "down"].shape[0]
76
+ else:
77
+ likes, dislikes = 0, 0
78
+ summary.append(f"👍 Likes senaste 24h: {likes}")
79
+ summary.append(f"👎 Dislikes senaste 24h: {dislikes}")
80
+
81
+ # Nyckeltal kring webbläsare: visa de tre mest använda
82
+ if "browser" in df_day.columns:
83
+ browser_counts = df_day["browser"].value_counts()
84
+ top_browsers = browser_counts.head(3)
85
+ browser_summary = "🌐 Browser-fördelning senaste 24h: " + ", ".join([f"{browser}: {count}" for browser, count in top_browsers.items()])
86
+ else:
87
+ browser_summary = "🌐 Browser-fördelning senaste 24h: Ingen data"
88
+ summary.append(browser_summary)
89
+
90
+ # Tre exempel på frågor och svar med tumme ner
91
+ if "feedback" in df_day.columns:
92
+ df_down = df_day[df_day["feedback"] == "down"].dropna(subset=["user_message", "bot_reply"])
93
+ else:
94
+ df_down = pd.DataFrame()
95
+ if not df_down.empty:
96
+ examples = df_down.head(3)
97
+ examples_text = "❌ Exempel på frågor och svar med tumme ner:\n"
98
+ for idx, row in examples.iterrows():
99
+ examples_text += f"• Fråga: {row['user_message']}\n Svar: {row['bot_reply']}\n"
100
+ else:
101
+ examples_text = "❌ Inga exempel med tumme ner hittades senaste 24h."
102
+ summary.append(examples_text)
103
+
104
  return "\n".join(summary)
105
 
106
  # --- Huvudfunktion ---