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 = [] # stores last 10 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") }) # keep only last 10 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 } # Singleton tracker = AnalyticsTracker()