Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 4,043 Bytes
d32c69c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
import sys
import os
from datetime import datetime, timedelta
import sqlite3
# Add parent directory to path so we can import modules
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from src.db.schemas.models import ModelUsage, User
from src.db.init_db import session_factory, init_db
from scripts.generate_test_data import generate_test_data
from scripts.create_test_user import create_test_users
def check_database():
"""Check if database exists and has the required tables"""
db_path = os.path.join(
os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
"chat_database.db"
)
if not os.path.exists(db_path):
print(f"Database file not found at {db_path}")
print("Creating database...")
init_db()
return False
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# Check if model_usage table exists
cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='model_usage'")
if not cursor.fetchone():
print("model_usage table does not exist.")
print("Creating tables...")
init_db()
return False
# Count records in model_usage table
cursor.execute("SELECT COUNT(*) FROM model_usage")
count = cursor.fetchone()[0]
print(f"Found {count} records in model_usage table")
conn.close()
return count > 0
def setup_analytics():
"""Set up analytics data for testing"""
# Check database status
has_data = check_database()
# Create test users
print("\nCreating test users...")
create_test_users()
# Generate model usage data if needed
if not has_data:
print("\nGenerating model usage test data...")
generate_test_data(100)
else:
print("\nDatabase already has model usage data. Skipping generation.")
choice = input("Generate additional data anyway? (y/n): ")
if choice.lower() == 'y':
records = int(input("How many records to generate? [default: 100]: ") or "100")
generate_test_data(records)
# Verify data was created
session = session_factory()
try:
# Count model usage records
usage_count = session.query(ModelUsage).count()
print(f"\nTotal model usage records: {usage_count}")
# Count users
user_count = session.query(User).count()
print(f"Total users: {user_count}")
# Check recent data
yesterday = datetime.utcnow() - timedelta(days=1)
recent_count = session.query(ModelUsage).filter(ModelUsage.timestamp >= yesterday).count()
print(f"Records from the last 24 hours: {recent_count}")
# Get model breakdown
models = {}
providers = {}
for usage in session.query(ModelUsage).all():
if usage.model_name not in models:
models[usage.model_name] = 0
models[usage.model_name] += 1
if usage.provider not in providers:
providers[usage.provider] = 0
providers[usage.provider] += 1
print("\nModel breakdown:")
for model, count in models.items():
print(f" {model}: {count} records")
print("\nProvider breakdown:")
for provider, count in providers.items():
print(f" {provider}: {count} records")
finally:
session.close()
print("\nSetup complete!")
print("To access the analytics dashboard:")
print("1. Make sure the backend server is running")
print("2. In your browser, set localStorage.adminApiKey to 'default-admin-key-change-me'")
print(" (or the value in your ADMIN_API_KEY environment variable)")
print("3. Go to http://localhost:3000/analytics/dashboard")
if __name__ == "__main__":
setup_analytics() |