Files
012-kaopeilian/backend/app/models/system_log.py
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
2026-01-24 19:33:28 +08:00

61 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
系统日志模型
用于记录系统操作、错误、安全事件等日志信息
"""
from datetime import datetime
from sqlalchemy import Column, Integer, String, Text, DateTime, Index
from sqlalchemy.orm import Mapped, mapped_column
from app.models.base import BaseModel
class SystemLog(BaseModel):
"""
系统日志模型
记录系统各类操作日志
"""
__tablename__ = "system_logs"
# 日志级别: debug, info, warning, error
level: Mapped[str] = mapped_column(String(20), nullable=False, index=True)
# 日志类型: system, user, api, error, security
type: Mapped[str] = mapped_column(String(50), nullable=False, index=True)
# 操作用户(可能为空,如系统自动操作)
user: Mapped[str] = mapped_column(String(100), nullable=True, index=True)
# 用户ID可能为空
user_id: Mapped[int] = mapped_column(Integer, nullable=True, index=True)
# IP地址
ip: Mapped[str] = mapped_column(String(100), nullable=True)
# 日志消息
message: Mapped[str] = mapped_column(Text, nullable=False)
# User Agent
user_agent: Mapped[str] = mapped_column(String(500), nullable=True)
# 请求路径API路径
path: Mapped[str] = mapped_column(String(500), nullable=True, index=True)
# 请求方法
method: Mapped[str] = mapped_column(String(10), nullable=True)
# 额外数据JSON格式可存储详细信息
extra_data: Mapped[str] = mapped_column(Text, nullable=True)
# 创建索引以优化查询性能
__table_args__ = (
Index('idx_system_logs_created_at', 'created_at'),
Index('idx_system_logs_level_type', 'level', 'type'),
Index('idx_system_logs_user_created', 'user', 'created_at'),
)
def __repr__(self):
return f"<SystemLog(id={self.id}, level={self.level}, type={self.type}, user={self.user})>"