ai_call_log.py 1.1 KB

12345678910111213141516171819202122232425
  1. """AI Call Log model - records every Kimi API call for cost tracking."""
  2. from datetime import datetime
  3. from sqlalchemy import Column, Integer, String, Text, DateTime
  4. from ..database import Base
  5. class AICallLog(Base):
  6. """Log of every AI API call with token usage and cost."""
  7. __tablename__ = "ai_call_logs"
  8. id = Column(Integer, primary_key=True, index=True)
  9. endpoint = Column(String(100), nullable=False, index=True)
  10. model = Column(String(50), nullable=False, index=True)
  11. prompt_preview = Column(Text, nullable=True)
  12. response_preview = Column(Text, nullable=True)
  13. error = Column(Text, nullable=True)
  14. duration_ms = Column(Integer, default=0)
  15. prompt_tokens = Column(Integer, default=0)
  16. completion_tokens = Column(Integer, default=0)
  17. total_tokens = Column(Integer, default=0)
  18. status = Column(String(20), default="success", index=True) # success/failed
  19. created_at = Column(DateTime, default=datetime.utcnow, index=True)
  20. def __repr__(self):
  21. return f"<AICallLog id={self.id} model={self.model} status={self.status} tokens={self.total_tokens}>"