"""操作审计日志模型。""" from sqlalchemy import Column, Integer, String, Text, DateTime, Index from sqlalchemy.sql import func from app.core.database import Base class OperationLog(Base): __tablename__ = "operation_logs" id = Column(Integer, primary_key=True, autoincrement=True) user_id = Column(Integer, nullable=True, comment="操作者ID(系统操作为空)") username = Column(String(50), nullable=True, comment="操作者用户名") action = Column(String(50), nullable=False, comment="操作类型: login/create/update/delete/execute/approve/reject") resource_type = Column(String(50), nullable=True, comment="资源类型: ticket/instance/user/audit_rule/notification/workflow") resource_id = Column(Integer, nullable=True, comment="资源ID") detail = Column(Text, nullable=True, comment="操作详情") ip_address = Column(String(50), nullable=True, comment="操作者IP") user_agent = Column(String(255), nullable=True, comment="浏览器UA") created_at = Column(DateTime(timezone=True), server_default=func.now()) __table_args__ = ( Index("ix_oplog_user_id", "user_id"), Index("ix_oplog_action", "action"), Index("ix_oplog_resource", "resource_type", "resource_id"), Index("ix_oplog_created_at", "created_at"), )