adikwok commited on
Commit
b77d7e8
·
verified ·
1 Parent(s): 122f4a0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +7 -8
app.py CHANGED
@@ -660,25 +660,25 @@ class SmartAnalyzer:
660
  def get_productivity_insights(self) -> Dict:
661
  try:
662
  all_messages = self.storage.db.get_all_messages()
663
- user_messages = [msg for msg in all_messages if msg["role"] == "user"]
664
 
665
  if not user_messages:
666
  return {"error": "No data available"}
667
 
668
  daily_activity = defaultdict(int)
669
  for msg in user_messages:
670
- date = datetime.fromisoformat(msg["timestamp"]).strftime("%Y-%m-%d")
671
  daily_activity[date] += 1
672
 
673
  weekly_activity = defaultdict(int)
674
  for msg in user_messages:
675
- day = datetime.fromisoformat(msg["timestamp"]).strftime("%A")
676
  weekly_activity[day] += 1
677
 
678
  topic_timeline = []
679
  for msg in user_messages[-20:]:
680
  topic_timeline.append({
681
- "date": datetime.fromisoformat(msg["timestamp"]).strftime("%Y-%m-%d %H:%M"),
682
  "topic": msg.get("topic", "general"),
683
  "session_id": msg.get("session_id", "default")
684
  })
@@ -686,13 +686,13 @@ class SmartAnalyzer:
686
  recent_cutoff = datetime.now() - timedelta(days=7)
687
  recent_messages = [
688
  msg for msg in user_messages
689
- if datetime.fromisoformat(msg["timestamp"]) > recent_cutoff
690
  ]
691
 
692
  return {
693
  "daily_activity": dict(sorted(daily_activity.items())),
694
  "weekly_patterns": dict(weekly_activity),
695
- "most_active_day": max(daily_activity.items(), key=lambda x: x[1]) if daily_activity else None,
696
  "recent_activity": len(recent_messages),
697
  "topic_evolution": topic_timeline,
698
  "consistency_score": self._calculate_consistency(daily_activity),
@@ -700,7 +700,7 @@ class SmartAnalyzer:
700
  "avg_messages_per_session": len(all_messages) / len(set(msg.get("session_id", "default") for msg in all_messages)) if all_messages else 0
701
  }
702
  except Exception as e:
703
- return {"error": f"Failed to get productivity insights: {str(e)}")
704
 
705
  def _calculate_consistency(self, daily_activity: Dict) -> float:
706
  try:
@@ -832,7 +832,6 @@ def send_message(user_input: str, topic_input: str) -> Tuple[str, str, List[str]
832
  if error:
833
  return f"❌ {error}", user_input, get_topics_list()
834
 
835
- # Return updated topic list to refresh dropdown
836
  return response, "", get_topics_list()
837
  except Exception as e:
838
  return f"❌ Error processing message: {str(e)}", user_input, get_topics_list()
 
660
  def get_productivity_insights(self) -> Dict:
661
  try:
662
  all_messages = self.storage.db.get_all_messages()
663
+ user_messages = [msg for msg in all_messages if msg['role'] == 'user']
664
 
665
  if not user_messages:
666
  return {"error": "No data available"}
667
 
668
  daily_activity = defaultdict(int)
669
  for msg in user_messages:
670
+ date = datetime.fromisoformat(msg['timestamp']).strftime("%Y-%m-%d")
671
  daily_activity[date] += 1
672
 
673
  weekly_activity = defaultdict(int)
674
  for msg in user_messages:
675
+ day = datetime.fromisoformat(msg['timestamp']).strftime("%A")
676
  weekly_activity[day] += 1
677
 
678
  topic_timeline = []
679
  for msg in user_messages[-20:]:
680
  topic_timeline.append({
681
+ "date": datetime.fromisoformat(msg['timestamp']).strftime("%Y-%m-%d %H:%M"),
682
  "topic": msg.get("topic", "general"),
683
  "session_id": msg.get("session_id", "default")
684
  })
 
686
  recent_cutoff = datetime.now() - timedelta(days=7)
687
  recent_messages = [
688
  msg for msg in user_messages
689
+ if datetime.fromisoformat(msg['timestamp']) > recent_cutoff
690
  ]
691
 
692
  return {
693
  "daily_activity": dict(sorted(daily_activity.items())),
694
  "weekly_patterns": dict(weekly_activity),
695
+ "most_active_day": max(daily_activity.items(), key=lambda x: x[1])[0] if daily_activity else None,
696
  "recent_activity": len(recent_messages),
697
  "topic_evolution": topic_timeline,
698
  "consistency_score": self._calculate_consistency(daily_activity),
 
700
  "avg_messages_per_session": len(all_messages) / len(set(msg.get("session_id", "default") for msg in all_messages)) if all_messages else 0
701
  }
702
  except Exception as e:
703
+ return {"error": f"Failed to get productivity insights: {str(e)}"}
704
 
705
  def _calculate_consistency(self, daily_activity: Dict) -> float:
706
  try:
 
832
  if error:
833
  return f"❌ {error}", user_input, get_topics_list()
834
 
 
835
  return response, "", get_topics_list()
836
  except Exception as e:
837
  return f"❌ Error processing message: {str(e)}", user_input, get_topics_list()