package cn.nianxx.thhotel.workflows.reservation.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime;

/**
 * Reservation 审计实体。记录人工转换、订单迁移和后续 OPERA 模拟相关动作。
 */
@TableName("workflow_reservation_audit_log")
public class ReservationAuditLogEntity {

    /** 审计 ID。 */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    /** 酒店或业务上下文 ID。 */
    private String hotelId;
    /** 关联订单 ID，可为空。 */
    private Long orderId;
    /** 关联任务 ID，可为空。 */
    private Long taskId;
    /** OPERA 模拟操作 ID，当前阶段为空。 */
    private Long operationId;
    /** 操作人类型，例如 SYSTEM、USER、SUPERAGENT。 */
    private String actorType;
    /** 操作人标识。 */
    private String actorId;
    /** 操作类型，例如 MANUAL_REVIEW_CONVERT。 */
    private String action;
    /** 操作原因，第一版允许为空。 */
    private String reason;
    /** 变更前摘要 JSON，不保存 Secret 或完整原文。 */
    private String beforeSnapshotJson;
    /** 变更后摘要 JSON，不保存 Secret 或完整原文。 */
    private String afterSnapshotJson;
    /** 业务动作发生 UTC 时间。 */
    private LocalDateTime occurredAt;
    /** 审计记录创建 UTC 时间。 */
    private LocalDateTime createdAt;

    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getHotelId() { return hotelId; }
    public void setHotelId(String hotelId) { this.hotelId = hotelId; }
    public Long getOrderId() { return orderId; }
    public void setOrderId(Long orderId) { this.orderId = orderId; }
    public Long getTaskId() { return taskId; }
    public void setTaskId(Long taskId) { this.taskId = taskId; }
    public Long getOperationId() { return operationId; }
    public void setOperationId(Long operationId) { this.operationId = operationId; }
    public String getActorType() { return actorType; }
    public void setActorType(String actorType) { this.actorType = actorType; }
    public String getActorId() { return actorId; }
    public void setActorId(String actorId) { this.actorId = actorId; }
    public String getAction() { return action; }
    public void setAction(String action) { this.action = action; }
    public String getReason() { return reason; }
    public void setReason(String reason) { this.reason = reason; }
    public String getBeforeSnapshotJson() { return beforeSnapshotJson; }
    public void setBeforeSnapshotJson(String beforeSnapshotJson) { this.beforeSnapshotJson = beforeSnapshotJson; }
    public String getAfterSnapshotJson() { return afterSnapshotJson; }
    public void setAfterSnapshotJson(String afterSnapshotJson) { this.afterSnapshotJson = afterSnapshotJson; }
    public LocalDateTime getOccurredAt() { return occurredAt; }
    public void setOccurredAt(LocalDateTime occurredAt) { this.occurredAt = occurredAt; }
    public LocalDateTime getCreatedAt() { return createdAt; }
    public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; }
}
