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 任务卡实体。保存 AI 原始快照、用户草稿和最终确认 payload。
 */
@TableName("workflow_reservation_task_card")
public class ReservationTaskCardEntity {

    /** 任务卡 ID。 */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    /** 酒店或业务上下文 ID。 */
    private String hotelId;
    /** 所属任务 ID。 */
    private Long taskId;
    /** 任务卡类型。 */
    private String taskCardType;
    /** 字段契约版本，当前 P0 字段矩阵使用 20260711-p0。 */
    private String fieldContractVersion;
    /** 任务卡使用的 AI 原始 JSON 快照。 */
    private String aiPayloadJson;
    /** 用户保存的任务卡草稿 JSON，第一版按矩阵 field_path 保存。 */
    private String draftPayloadJson;
    /** 用户最终确认后的任务卡 JSON，第一版按矩阵 field_path 合并保存。 */
    private String confirmedPayloadJson;
    /** 确认人标识，用户身份权限接入前使用本地占位。 */
    private String confirmedBy;
    /** 任务卡最终确认 UTC 时间。 */
    private LocalDateTime confirmedAt;
    /** 同卡人工复核状态，仅 type-known manual_review 任务使用。 */
    private String reviewStatus;
    /** 同卡人工复核解阻结果 JSON，不改写 AI 原始快照。 */
    private String reviewResolutionJson;
    /** 记录创建 UTC 时间。 */
    private LocalDateTime createdAt;
    /** 记录更新 UTC 时间。 */
    private LocalDateTime updatedAt;

    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 getTaskId() { return taskId; }
    public void setTaskId(Long taskId) { this.taskId = taskId; }
    public String getTaskCardType() { return taskCardType; }
    public void setTaskCardType(String taskCardType) { this.taskCardType = taskCardType; }
    public String getFieldContractVersion() { return fieldContractVersion; }
    public void setFieldContractVersion(String fieldContractVersion) { this.fieldContractVersion = fieldContractVersion; }
    public String getAiPayloadJson() { return aiPayloadJson; }
    public void setAiPayloadJson(String aiPayloadJson) { this.aiPayloadJson = aiPayloadJson; }
    public String getDraftPayloadJson() { return draftPayloadJson; }
    public void setDraftPayloadJson(String draftPayloadJson) { this.draftPayloadJson = draftPayloadJson; }
    public String getConfirmedPayloadJson() { return confirmedPayloadJson; }
    public void setConfirmedPayloadJson(String confirmedPayloadJson) { this.confirmedPayloadJson = confirmedPayloadJson; }
    public String getConfirmedBy() { return confirmedBy; }
    public void setConfirmedBy(String confirmedBy) { this.confirmedBy = confirmedBy; }
    public LocalDateTime getConfirmedAt() { return confirmedAt; }
    public void setConfirmedAt(LocalDateTime confirmedAt) { this.confirmedAt = confirmedAt; }
    public String getReviewStatus() { return reviewStatus; }
    public void setReviewStatus(String reviewStatus) { this.reviewStatus = reviewStatus; }
    public String getReviewResolutionJson() { return reviewResolutionJson; }
    public void setReviewResolutionJson(String reviewResolutionJson) { this.reviewResolutionJson = reviewResolutionJson; }
    public LocalDateTime getCreatedAt() { return createdAt; }
    public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; }
    public LocalDateTime getUpdatedAt() { return updatedAt; }
    public void setUpdatedAt(LocalDateTime updatedAt) { this.updatedAt = updatedAt; }
}
