#!/usr/bin/env python3 """ Debug analytics collection step by step """ import asyncio import httpx import os from dotenv import load_dotenv load_dotenv() async def debug_analytics(): """Debug the analytics collection process""" try: print("🔍 DEBUGGING ANALYTICS COLLECTION") print("=" * 50) # Check environment variables print("1. Environment Variables:") mongodb_url = os.getenv("MONGODB_URL") if mongodb_url: print(f" ✅ MONGODB_URL is set (length: {len(mongodb_url)})") else: print(" ❌ MONGODB_URL is not set") # Test database connection print("\n2. Database Connection:") try: from analytics.database import test_connection connected = await test_connection() if connected: print(" ✅ Database connection successful") else: print(" ❌ Database connection failed") except Exception as e: print(f" ❌ Database connection error: {e}") # Test analytics functions print("\n3. Analytics Functions:") try: from analytics.collectors import create_session, track_message # Test session creation session = await create_session(user_agent="Debug Test") if session: print(f" ✅ Session creation works: {session.session_id}") # Test message tracking message = await track_message( session_id=session.session_id, prompt_length=20, response_length=100, response_time_ms=1500, used_search=True, success=True ) if message: print(f" ✅ Message tracking works: {message.message_id}") else: print(" ❌ Message tracking failed") else: print(" ❌ Session creation failed") except Exception as e: print(f" ❌ Analytics functions error: {e}") import traceback traceback.print_exc() # Check data in database print("\n4. Database Data Check:") try: from analytics.database import get_sessions_collection, get_messages_collection sessions_collection = await get_sessions_collection() messages_collection = await get_messages_collection() if sessions_collection is not None and messages_collection is not None: sessions_count = await sessions_collection.count_documents({}) messages_count = await messages_collection.count_documents({}) print(f" 📊 Sessions in DB: {sessions_count}") print(f" 💬 Messages in DB: {messages_count}") if sessions_count > 0: latest_session = await sessions_collection.find_one({}, sort=[("start_time", -1)]) print(f" 🆔 Latest session: {latest_session.get('session_id', 'N/A')}") if messages_count > 0: latest_message = await messages_collection.find_one({}, sort=[("timestamp", -1)]) print(f" 📝 Latest message: {latest_message.get('message_id', 'N/A')}") else: print(" ❌ Could not access database collections") except Exception as e: print(f" ❌ Database check error: {e}") # Test dashboard print("\n5. Dashboard Data:") try: from analytics.dashboard import get_basic_stats stats = await get_basic_stats() if "error" in stats: print(f" ❌ Dashboard error: {stats['error']}") else: print(f" 📊 Total sessions: {stats.get('total_sessions', 0)}") print(f" 💬 Total messages: {stats.get('total_messages', 0)}") print(f" 🟢 Active sessions: {stats.get('active_sessions', 0)}") except Exception as e: print(f" ❌ Dashboard error: {e}") except Exception as e: print(f"❌ Debug error: {e}") import traceback traceback.print_exc() if __name__ == "__main__": asyncio.run(debug_analytics())