Hasitha16 commited on
Commit
5224787
Β·
verified Β·
1 Parent(s): 68804d2

Update frontend.py

Browse files
Files changed (1) hide show
  1. frontend.py +33 -0
frontend.py CHANGED
@@ -6,7 +6,13 @@ import base64
6
  from io import BytesIO
7
  import os
8
  import plotly.express as px
 
 
9
 
 
 
 
 
10
  st.set_page_config(page_title="ChurnSight AI", page_icon="🧠", layout="wide")
11
 
12
  if os.path.exists("logo.png"):
@@ -145,6 +151,19 @@ with tab1:
145
 
146
  if "pain_points" in data and data["pain_points"]:
147
  st.error("πŸ” Pain Points: " + ", ".join(data["pain_points"]))
 
 
 
 
 
 
 
 
 
 
 
 
 
148
 
149
  st.subheader("πŸ”Š Audio Summary")
150
  audio = speak(data["summary"], lang=voice_lang)
@@ -200,3 +219,17 @@ with tab1:
200
  if st.session_state.followup_answer:
201
  st.subheader("βœ… Answer")
202
  st.success(st.session_state.followup_answer)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  from io import BytesIO
7
  import os
8
  import plotly.express as px
9
+ from datetime import datetime
10
+ import uuid
11
 
12
+ # Simulated in-memory storage for churn log (replace with a database or file in production)
13
+ if "churn_log" not in st.session_state:
14
+ st.session_state.churn_log = []
15
+
16
  st.set_page_config(page_title="ChurnSight AI", page_icon="🧠", layout="wide")
17
 
18
  if os.path.exists("logo.png"):
 
151
 
152
  if "pain_points" in data and data["pain_points"]:
153
  st.error("πŸ” Pain Points: " + ", ".join(data["pain_points"]))
154
+ # Add churn risk to session log
155
+ try:
156
+ st.session_state.churn_log.append({
157
+ "timestamp": datetime.now(),
158
+ "product": data.get("product_category", "General"),
159
+ "churn_risk": data.get("churn_risk", "Unknown"),
160
+ "session_id": str(uuid.uuid4())
161
+ })
162
+ # Keep log lightweight
163
+ if len(st.session_state.churn_log) > 1000:
164
+ st.session_state.churn_log = st.session_state.churn_log[-1000:]
165
+ except Exception as e:
166
+ st.warning(f"πŸ§ͺ Logging failed: {e}")
167
 
168
  st.subheader("πŸ”Š Audio Summary")
169
  audio = speak(data["summary"], lang=voice_lang)
 
219
  if st.session_state.followup_answer:
220
  st.subheader("βœ… Answer")
221
  st.success(st.session_state.followup_answer)
222
+ # πŸ“ˆ Show churn trend chart (optional)
223
+ if st.checkbox("πŸ“Š Show Churn Risk Trends", value=False):
224
+ try:
225
+ df = pd.DataFrame(st.session_state.churn_log)
226
+ df["date"] = pd.to_datetime(df["timestamp"]).dt.date
227
+ trend = df.groupby(["date", "churn_risk"]).size().unstack(fill_value=0).reset_index()
228
+
229
+ st.markdown("#### πŸ“… Daily Churn Trend")
230
+ fig = px.bar(trend, x="date", y=["High Risk", "Low Risk"], barmode="group", title="Daily Churn Risk Distribution")
231
+ st.plotly_chart(fig, use_container_width=True)
232
+
233
+ st.download_button("⬇️ Export Trend CSV", trend.to_csv(index=False), "churn_trend.csv", mime="text/csv")
234
+ except Exception as e:
235
+ st.error(f"❌ Failed to generate trend: {e}")