"""Audit log model — 全量操作审计记录。 记录平台所有操作行为,支持查询和变更的全链路追踪: - 查询操作: 查询内容、数据库类型、执行耗时、结果行数 - 变更工单: 工单全生命周期、影响行数、执行结果 - 数据源管理: 增删改查 - 权限操作: 登录/角色变更 """ from sqlalchemy import Column, Integer, String, Text, DateTime, Boolean, func from app.core.database import Base class AuditLog(Base): __tablename__ = "audit_logs" id = Column(Integer, primary_key=True, autoincrement=True) user_id = Column(Integer, nullable=False, index=True) username = Column(String(50), nullable=True) action = Column(String(50), nullable=False, index=True) target_type = Column(String(50), nullable=False, index=True) target_id = Column(Integer, nullable=True, index=True) detail = Column(Text, nullable=True) # 数据库操作上下文 db_type = Column(String(20), nullable=True, index=True) database_name = Column(String(100), nullable=True) instance_name = Column(String(100), nullable=True) # 执行指标 execution_time_ms = Column(Integer, nullable=True) rows_affected = Column(Integer, nullable=True) result_status = Column(String(20), nullable=True) # 查询内容(SQL/Redis命令/MongoDB操作) query_content = Column(Text, nullable=True) # 网络信息 ip_address = Column(String(50), nullable=True) user_agent = Column(String(200), nullable=True) # 是否高风险操作 is_risky = Column(Boolean, default=False) created_at = Column(DateTime, server_default=func.now(), index=True)