Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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[
|
| 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[
|
| 671 |
daily_activity[date] += 1
|
| 672 |
|
| 673 |
weekly_activity = defaultdict(int)
|
| 674 |
for msg in user_messages:
|
| 675 |
-
day = datetime.fromisoformat(msg[
|
| 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[
|
| 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[
|
| 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()
|