""" API Usage Tracking Model Tracks all API calls and their costs for admin monitoring """ from sqlalchemy import Column, Integer, String, Float, DateTime, ForeignKey, Text from sqlalchemy.sql import func from config.database import Base class APIUsage(Base): """Track API usage and costs""" __tablename__ = 'api_usage' id = Column(Integer, primary_key=True) # API Information provider = Column(String(50), nullable=False) # openai, gemini, elevenlabs, google_speech, etc. service = Column(String(100), nullable=False) # gpt-4o-mini, whisper, tts, etc. endpoint = Column(String(200)) # specific endpoint called # Usage Details tokens_input = Column(Integer, default=0) # input tokens (LLMs) tokens_output = Column(Integer, default=0) # output tokens (LLMs) characters = Column(Integer, default=0) # characters (TTS/STT) audio_seconds = Column(Float, default=0) # audio duration (STT/TTS) # Cost Information (in USD) cost_usd = Column(Float, default=0.0) # Context user_id = Column(Integer, ForeignKey('users.id'), nullable=True) session_id = Column(Integer, ForeignKey('practice_sessions.id'), nullable=True) practice_type = Column(String(50)) # reading, conversation, articulation # Request details request_data = Column(Text) # JSON string of request params response_data = Column(Text) # JSON string of response (truncated) # Timestamps created_at = Column(DateTime(timezone=True), server_default=func.now()) def __repr__(self): return f""