from iti.applications.extensions import db from apiflask.fields import String, DateTime, Boolean, Float, Enum from iti.applications.common.crud import BaseModelMixin from iti.applications.common.utils import BaseSchema from iti.applications.common.enums import LogType class SysLog(BaseModelMixin): """ 系统日志表 """ __tablename__ = "sys_log" name = db.Column(db.String(100), comment="操作名称") method = db.Column(db.String(10), comment="请求方法") user_id = db.Column(db.String(36), comment="用户ID") path = db.Column(db.String(255), comment="请求路径") ip = db.Column(db.String(255), comment="IP地址") user_agent = db.Column(db.Text, comment="用户代理") headers = db.Column(db.Text, comment="请求头") query_params = db.Column(db.Text, comment="请求参数") body_params = db.Column(db.Text, comment="请求体参数") execution_time = db.Column(db.Float, comment="执行时间(毫秒)") response = db.Column(db.Text, comment="响应结果") exception = db.Column(db.Text, comment="异常信息") success = db.Column(db.Boolean, comment="是否成功") desc = db.Column(db.Text, comment="描述") type = db.Column( db.Enum(LogType, values_callable=lambda x: [e.value for e in x]), nullable=False, default=LogType.OPERATION.value, comment="日志类型", ) class LogSchema(BaseSchema): id = String() name = String() method = String() user_id = String() path = String() ip = String() user_agent = String() headers = String() query_params = String() body_params = String() execution_time = Float() response = String() exception = String() success = Boolean() desc = String() type = Enum(LogType, by_value=True) created_at = DateTime(format="%Y-%m-%d %H:%M:%S") updated_at = DateTime(format="%Y-%m-%d %H:%M:%S")