Files
ipam/backend/app/models/audit.py
T
Your Name bca0da7c7d readme
2026-07-20 13:40:05 +08:00

68 lines
1.9 KiB
Python

from sqlalchemy import Column, Integer, String, Text, DateTime, Enum
from sqlalchemy.sql import func
from app.core.database import Base
import enum
class AuditAction(str, enum.Enum):
"""操作类型枚举"""
CREATE = "create"
READ = "read"
UPDATE = "update"
DELETE = "delete"
LOGIN = "login"
LOGOUT = "logout"
SCAN = "scan"
IMPORT = "import"
EXPORT = "export"
OTHER = "other"
class AuditResource(str, enum.Enum):
"""资源类型枚举"""
USER = "user"
NETWORK = "network"
IP_ADDRESS = "ip_address"
SNMP_CREDENTIAL = "snmp_credential"
SNMP_DEVICE = "snmp_device"
ALERT = "alert"
WHITELIST_MAC = "whitelist_mac"
SCAN_TASK = "scan_task"
SYSTEM = "system"
class AuditLog(Base):
"""审计日志表"""
__tablename__ = "audit_logs"
id = Column(Integer, primary_key=True, index=True)
# 操作人信息
user_id = Column(Integer, index=True, nullable=True)
username = Column(String(50), index=True)
real_name = Column(String(50))
user_ip = Column(String(50))
user_agent = Column(String(500))
# 操作信息
action = Column(Enum(AuditAction), nullable=False, index=True)
resource = Column(Enum(AuditResource), nullable=False, index=True)
resource_id = Column(String(100), nullable=True) # 操作的资源ID
# 详细信息
description = Column(String(500)) # 操作描述
old_value = Column(Text) # 修改前的值 (JSON)
new_value = Column(Text) # 修改后的值 (JSON)
changed_fields = Column(String(500)) # 变更的字段列表
# 请求信息
request_method = Column(String(10))
request_path = Column(String(200))
# 结果
success = Column(Integer, default=1) # 1=成功,0=失败
error_message = Column(Text)
# 时间戳
created_at = Column(DateTime(timezone=True), server_default=func.now(), index=True)