package cn.nianxx.thhotel.integrations.ai.superagent.domain;

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

/**
 * SuperAgent 自动分发运行实体。记录 SourceMessage 入库后调用 SuperAgent Open API 的状态和结果。
 */
@TableName("platform_superagent_dispatch_run")
public class SuperAgentDispatchRunEntity {

    /** 内部主键 ID。 */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    /** SourceMessage 所属酒店 ID。 */
    private String hotelId;
    /** 内部 SourceMessage Inbox ID。 */
    private Long sourceMessageId;
    /** 来源 provider，例如 AGENTBUS。 */
    private String sourceProvider;
    /** 来源 channel，例如 OUTLOOK 或 EMAIL。 */
    private String sourceChannel;
    /** 外部邮件消息 ID。 */
    private String externalMessageId;
    /** 外部邮件会话 ID。 */
    private String externalConversationId;
    /** 分发来源代码，例如 AGENTBUS_REALTIME。 */
    private String dispatchSource;
    /** 发送给 SuperAgent 的稳定幂等键。 */
    private String idempotencyKey;
    /** 写入 X-Request-ID 的调用关联 ID。 */
    private String requestId;
    /** 分发状态：PENDING、RUNNING、SUCCEEDED、RETRYABLE_FAILED、FAILED、IGNORED。 */
    private String dispatchStatus;
    /** 已尝试次数。 */
    private Integer attemptCount;
    /** 最大尝试次数。 */
    private Integer maxAttempts;
    /** 下次可处理 UTC 时间。 */
    private LocalDateTime nextAttemptAt;
    /** worker 抢占锁过期 UTC 时间。 */
    private LocalDateTime lockedUntil;
    /** SuperAgent Open API session ID。 */
    private String superagentSessionId;
    /** SuperAgent run ID。 */
    private String superagentRunId;
    /** SuperAgent run 查询 URI 或路径。 */
    private String superagentRunUri;
    /** 最后完整处理的 SSE event id。 */
    private String lastEventId;
    /** SuperAgent 最终原始回答。 */
    private String superagentRawAnswer;
    /** 从最终回答解析出的 JSON，无法解析时为空。 */
    private String superagentParsedJson;
    /** SuperAgent 公开 trace 摘要 JSON，不包含敏感工具细节。 */
    private String superagentTraceJson;
    /** 安全错误代码。 */
    private String safeErrorCode;
    /** 安全错误摘要，不包含正文、HTML、附件 URL 或 Secret。 */
    private String safeErrorSummary;
    /** 记录创建 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 getSourceMessageId() {
        return sourceMessageId;
    }

    public void setSourceMessageId(Long sourceMessageId) {
        this.sourceMessageId = sourceMessageId;
    }

    public String getSourceProvider() {
        return sourceProvider;
    }

    public void setSourceProvider(String sourceProvider) {
        this.sourceProvider = sourceProvider;
    }

    public String getSourceChannel() {
        return sourceChannel;
    }

    public void setSourceChannel(String sourceChannel) {
        this.sourceChannel = sourceChannel;
    }

    public String getExternalMessageId() {
        return externalMessageId;
    }

    public void setExternalMessageId(String externalMessageId) {
        this.externalMessageId = externalMessageId;
    }

    public String getExternalConversationId() {
        return externalConversationId;
    }

    public void setExternalConversationId(String externalConversationId) {
        this.externalConversationId = externalConversationId;
    }

    public String getDispatchSource() {
        return dispatchSource;
    }

    public void setDispatchSource(String dispatchSource) {
        this.dispatchSource = dispatchSource;
    }

    public String getIdempotencyKey() {
        return idempotencyKey;
    }

    public void setIdempotencyKey(String idempotencyKey) {
        this.idempotencyKey = idempotencyKey;
    }

    public String getRequestId() {
        return requestId;
    }

    public void setRequestId(String requestId) {
        this.requestId = requestId;
    }

    public String getDispatchStatus() {
        return dispatchStatus;
    }

    public void setDispatchStatus(String dispatchStatus) {
        this.dispatchStatus = dispatchStatus;
    }

    public Integer getAttemptCount() {
        return attemptCount;
    }

    public void setAttemptCount(Integer attemptCount) {
        this.attemptCount = attemptCount;
    }

    public Integer getMaxAttempts() {
        return maxAttempts;
    }

    public void setMaxAttempts(Integer maxAttempts) {
        this.maxAttempts = maxAttempts;
    }

    public LocalDateTime getNextAttemptAt() {
        return nextAttemptAt;
    }

    public void setNextAttemptAt(LocalDateTime nextAttemptAt) {
        this.nextAttemptAt = nextAttemptAt;
    }

    public LocalDateTime getLockedUntil() {
        return lockedUntil;
    }

    public void setLockedUntil(LocalDateTime lockedUntil) {
        this.lockedUntil = lockedUntil;
    }

    public String getSuperagentSessionId() {
        return superagentSessionId;
    }

    public void setSuperagentSessionId(String superagentSessionId) {
        this.superagentSessionId = superagentSessionId;
    }

    public String getSuperagentRunId() {
        return superagentRunId;
    }

    public void setSuperagentRunId(String superagentRunId) {
        this.superagentRunId = superagentRunId;
    }

    public String getSuperagentRunUri() {
        return superagentRunUri;
    }

    public void setSuperagentRunUri(String superagentRunUri) {
        this.superagentRunUri = superagentRunUri;
    }

    public String getLastEventId() {
        return lastEventId;
    }

    public void setLastEventId(String lastEventId) {
        this.lastEventId = lastEventId;
    }

    public String getSuperagentRawAnswer() {
        return superagentRawAnswer;
    }

    public void setSuperagentRawAnswer(String superagentRawAnswer) {
        this.superagentRawAnswer = superagentRawAnswer;
    }

    public String getSuperagentParsedJson() {
        return superagentParsedJson;
    }

    public void setSuperagentParsedJson(String superagentParsedJson) {
        this.superagentParsedJson = superagentParsedJson;
    }

    public String getSuperagentTraceJson() {
        return superagentTraceJson;
    }

    public void setSuperagentTraceJson(String superagentTraceJson) {
        this.superagentTraceJson = superagentTraceJson;
    }

    public String getSafeErrorCode() {
        return safeErrorCode;
    }

    public void setSafeErrorCode(String safeErrorCode) {
        this.safeErrorCode = safeErrorCode;
    }

    public String getSafeErrorSummary() {
        return safeErrorSummary;
    }

    public void setSafeErrorSummary(String safeErrorSummary) {
        this.safeErrorSummary = safeErrorSummary;
    }

    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;
    }
}
