Files
JARVIS/backend/app/models/log.py

42 lines
1.5 KiB
Python
Raw Normal View History

from sqlalchemy import Column, String, Text, Integer, Index
from app.models.base import BaseModel
import enum
class LogLevel(str, enum.Enum):
DEBUG = "debug"
INFO = "info"
WARNING = "warning"
ERROR = "error"
class LogType(str, enum.Enum):
AGENT = "agent" # 智能体调用
SYSTEM = "system" # 系统运行
CHAT = "chat" # 问答对话
class Log(BaseModel):
__tablename__ = "logs"
level = Column(String(20), default=LogLevel.INFO.value, index=True) # debug/info/warning/error
type = Column(String(20), default=LogType.SYSTEM.value, index=True) # agent/system/chat
user_id = Column(String(36), nullable=True, index=True) # 关联用户
request_id = Column(String(64), nullable=True, index=True)
route = Column(String(255), nullable=True, index=True)
method = Column(String(16), nullable=True, index=True)
status_code = Column(Integer, nullable=True, index=True)
error_type = Column(String(100), nullable=True)
operation = Column(String(100), nullable=True, index=True)
message = Column(Text, nullable=False) # 日志内容
details = Column(Text, nullable=True) # 详细信息(JSON)
source = Column(String(100), nullable=True) # 来源模块
duration_ms = Column(Integer, nullable=True) # 执行耗时
__table_args__ = (
Index('idx_logs_type_level', 'type', 'level'),
Index('idx_logs_created_at', 'created_at'),
Index('idx_logs_request_id', 'request_id'),
Index('idx_logs_operation_status', 'operation', 'status_code'),
)