Atlas / tests /debug_analytics.py
findEthics
Adding analytics capabilities
1d4dc07
Raw
History Blame Contribute Delete
4.6 kB
#!/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())