package com.erp.audit.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.Builder;
import java.time.LocalDateTime;

/**
 * 审计日志实体
 */
@Data
@Builder
@TableName("audit_log")
public class AuditLog {

    @TableId(type = IdType.AUTO)
    private Long id;

    /** 租户ID */
    private Long tenantId;

    /** 用户ID */
    private Long userId;

    /** 用户名 */
    private String username;

    /** 真实姓名 */
    private String realName;

    /** 操作模块 */
    private String module;

    /** 操作类型：CREATE/READ/UPDATE/DELETE/LOGIN/LOGOUT/EXPORT/IMPORT/APPROVAL */
    private String operationType;

    /** 操作描述 */
    private String description;

    /** 请求方法 */
    private String requestMethod;

    /** 请求URL */
    private String requestUrl;

    /** 请求参数 */
    private String requestParams;

    /** 响应状态码 */
    private Integer responseStatus;

    /** 响应结果 */
    private String responseBody;

    /** IP地址 */
    private String ipAddress;

    /** 操作终端 */
    private String userAgent;

    /** 关联业务ID */
    private String bizId;

    /** 关联业务类型 */
    private String bizType;

    /** 执行时长(ms) */
    private Long duration;

    /** 错误信息 */
    private String errorMsg;

    /** 是否敏感操作 */
    private Boolean sensitive;

    /** 审计状态：SUCCESS/FAIL/PENDING */
    private String auditStatus;

    /** 创建时间 */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    /** 更新时间 */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;

    /** 备注 */
    private String remark;
}
