"""
Analytics & SEO Module for ProVerBs Ultimate Brain
- Google Analytics integration
- Query tracking
- User behavior analytics
- SEO optimization
"""
import json
from datetime import datetime
from typing import Dict, List, Optional
import logging
logger = logging.getLogger(__name__)
class AnalyticsTracker:
"""Track user queries and interactions"""
def __init__(self):
self.queries: List[Dict] = []
self.sessions: Dict[str, Dict] = {}
self.popular_modes: Dict[str, int] = {}
self.popular_ai_models: Dict[str, int] = {}
def track_query(
self,
query: str,
mode: str,
ai_provider: str,
reasoning_enabled: bool,
response_time: float,
success: bool
):
"""Track a query"""
entry = {
"timestamp": datetime.now().isoformat(),
"query": query[:100], # Truncate for privacy
"mode": mode,
"ai_provider": ai_provider,
"reasoning_enabled": reasoning_enabled,
"response_time": response_time,
"success": success
}
self.queries.append(entry)
# Track mode popularity
self.popular_modes[mode] = self.popular_modes.get(mode, 0) + 1
# Track AI model popularity
self.popular_ai_models[ai_provider] = self.popular_ai_models.get(ai_provider, 0) + 1
logger.info(f"Tracked query: {query[:50]}... [Mode: {mode}, AI: {ai_provider}]")
def get_analytics(self) -> Dict:
"""Get analytics summary"""
total_queries = len(self.queries)
successful_queries = sum(1 for q in self.queries if q['success'])
avg_response_time = sum(q['response_time'] for q in self.queries) / total_queries if total_queries > 0 else 0
# Get top modes
top_modes = sorted(self.popular_modes.items(), key=lambda x: x[1], reverse=True)[:3]
# Get top AI models
top_ai = sorted(self.popular_ai_models.items(), key=lambda x: x[1], reverse=True)[:3]
return {
"total_queries": total_queries,
"successful_queries": successful_queries,
"success_rate": f"{(successful_queries/total_queries*100):.2f}%" if total_queries > 0 else "0%",
"avg_response_time": f"{avg_response_time:.2f}s",
"top_modes": top_modes,
"top_ai_models": top_ai,
"queries_with_reasoning": sum(1 for q in self.queries if q['reasoning_enabled']),
"recent_queries": self.queries[-10:][::-1] # Last 10, reversed
}
def export_analytics(self, filepath: str = "analytics_data.json"):
"""Export analytics to JSON file"""
data = self.get_analytics()
with open(filepath, 'w') as f:
json.dump(data, f, indent=2)
logger.info(f"Analytics exported to {filepath}")
class SEOOptimizer:
"""SEO optimization utilities"""
@staticmethod
def get_meta_tags() -> str:
"""Generate SEO meta tags"""
return """
"""
@staticmethod
def get_structured_data() -> str:
"""Generate JSON-LD structured data for SEO"""
return """
"""
# Global analytics tracker
analytics_tracker = AnalyticsTracker()