| import sys |
| import os |
| from datetime import datetime, timedelta |
| import sqlite3 |
|
|
| |
| 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() |
| |
| |
| 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 |
| |
| |
| 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""" |
| |
| has_data = check_database() |
| |
| |
| print("\nCreating test users...") |
| create_test_users() |
| |
| |
| 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) |
| |
| |
| session = session_factory() |
| try: |
| |
| usage_count = session.query(ModelUsage).count() |
| print(f"\nTotal model usage records: {usage_count}") |
| |
| |
| user_count = session.query(User).count() |
| print(f"Total users: {user_count}") |
| |
| |
| 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}") |
| |
| |
| 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() |