# inventory-backend/app/models/audit.py from app.extensions import db from datetime import datetime class AuditLog(db.Model): """ 操作审计日志表 记录所有关键业务操作 """ __tablename__ = 'audit_logs' id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, nullable=True, index=True) # 操作人ID(sys_user.id) username = db.Column(db.String(100), nullable=False, index=True) # 操作人账号 display_name = db.Column(db.String(100)) # 操作人显示名称 action = db.Column(db.String(50), nullable=False, index=True) # 操作类型: create/update/delete/export 等 module = db.Column(db.String(50), nullable=False, index=True) # 业务模块: inbound_buy/inbound_semi/bom/user 等 target_id = db.Column(db.String(100), index=True) # 被操作的数据ID target_name = db.Column(db.String(200)) # 被操作数据的显示名称 details = db.Column(db.JSON) # 详细变更内容 {old: {}, new: {}} ip_address = db.Column(db.String(50)) # 操作IP user_agent = db.Column(db.String(500)) # 浏览器UA method = db.Column(db.String(10)) # HTTP方法 url = db.Column(db.String(500)) # 请求URL status_code = db.Column(db.Integer) # 响应状态码 error_message = db.Column(db.Text) # 错误信息(如有) created_at = db.Column(db.DateTime, default=datetime.now, index=True) # 操作时间 def to_dict(self): return { 'id': self.id, 'user_id': self.user_id, 'username': self.username, 'display_name': self.display_name, 'action': self.action, 'module': self.module, 'target_id': self.target_id, 'target_name': self.target_name, 'details': self.details, 'ip_address': self.ip_address, 'method': self.method, 'url': self.url, 'status_code': self.status_code, 'error_message': self.error_message, 'created_at': self.created_at.strftime('%Y-%m-%d %H:%M:%S') if self.created_at else None }