79 lines
2.5 KiB
Python
79 lines
2.5 KiB
Python
|
|
import sys
|
|
import os
|
|
import logging
|
|
|
|
# Add backend to path
|
|
sys.path.append(os.path.join(os.getcwd(), 'backend'))
|
|
|
|
from sqlalchemy import create_engine, text
|
|
from sqlalchemy.orm import sessionmaker
|
|
|
|
# Setup logging
|
|
logging.basicConfig(level=logging.INFO)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
from models.subscription_models import APIUsageLog, UserSubscription, APIProvider
|
|
from services.subscription import UsageTrackingService, PricingService
|
|
|
|
USER_ID = "user_33Gz1FPI86VDXhRY8QN4ragRFGN"
|
|
|
|
def get_db_path(user_id):
|
|
from services.database import get_user_db_path
|
|
return get_user_db_path(user_id)
|
|
|
|
def check_user_data():
|
|
db_path = get_db_path(USER_ID)
|
|
logger.info(f"Checking DB at: {db_path}")
|
|
|
|
if not os.path.exists(db_path):
|
|
logger.error(f"DB file not found at {db_path}")
|
|
# Check default DB as fallback
|
|
default_db = os.path.join(os.getcwd(), 'backend', 'data', 'alwrity.db')
|
|
if os.path.exists(default_db):
|
|
logger.info(f"Falling back to default DB: {default_db}")
|
|
db_url = f"sqlite:///{default_db}"
|
|
else:
|
|
return
|
|
else:
|
|
db_url = f"sqlite:///{db_path}"
|
|
|
|
engine = create_engine(db_url)
|
|
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
|
db = SessionLocal()
|
|
|
|
try:
|
|
# 1. Check API Usage Logs
|
|
logs = db.query(APIUsageLog).filter(APIUsageLog.user_id == USER_ID).all()
|
|
logger.info(f"Found {len(logs)} usage logs for user {USER_ID}")
|
|
|
|
if logs:
|
|
last_log = logs[-1]
|
|
logger.info(f"Last log: {last_log.timestamp} - {last_log.provider} - {last_log.cost_total}")
|
|
|
|
# Print provider breakdown
|
|
from collections import Counter
|
|
providers = Counter([l.provider for l in logs])
|
|
logger.info(f"Provider breakdown: {providers}")
|
|
|
|
# 2. Check Subscription
|
|
sub = db.query(UserSubscription).filter(UserSubscription.user_id == USER_ID).first()
|
|
if sub:
|
|
logger.info(f"Subscription found: {sub.plan_type} ({sub.status})")
|
|
else:
|
|
logger.warning("No subscription found")
|
|
|
|
# 3. Run Usage Service
|
|
logger.info("Running UsageTrackingService.get_user_usage_stats...")
|
|
service = UsageTrackingService(db)
|
|
stats = service.get_user_usage_stats(USER_ID)
|
|
logger.info(f"Service Stats: {stats}")
|
|
|
|
except Exception as e:
|
|
logger.error(f"Error: {e}")
|
|
finally:
|
|
db.close()
|
|
|
|
if __name__ == "__main__":
|
|
check_user_data()
|