| from collections import defaultdict |
| from datetime import datetime |
|
|
| class AnalyticsTracker: |
| def __init__(self): |
| self.intent_counts = defaultdict(int) |
| self.total_queries = 0 |
| self.recent_queries = [] |
| |
| def log(self, text: str, intent: str, confidence: float): |
| self.intent_counts[intent] += 1 |
| self.total_queries += 1 |
| self.recent_queries.append({ |
| "text": text, |
| "intent": intent, |
| "confidence": confidence, |
| "timestamp": datetime.now().strftime("%H:%M:%S") |
| }) |
| |
| if len(self.recent_queries) > 10: |
| self.recent_queries.pop(0) |
| |
| def get_top_intents(self, n=10): |
| sorted_intents = sorted( |
| self.intent_counts.items(), |
| key=lambda x: x[1], |
| reverse=True |
| ) |
| return sorted_intents[:n] |
| |
| def get_summary(self): |
| return { |
| "total_queries": self.total_queries, |
| "unique_intents_seen": len(self.intent_counts), |
| "top_intents": [ |
| {"intent": k, "count": v} |
| for k, v in self.get_top_intents() |
| ], |
| "recent_queries": self.recent_queries |
| } |
|
|
| |
| tracker = AnalyticsTracker() |