package cn.nianxx.thhotel.workflows.reservation.common.result;

import com.fasterxml.jackson.annotation.JsonProperty;
import java.time.OffsetDateTime;
import java.util.List;

/**
 * 任务详情结果。提供队列可处理状态、任务卡 payload 和按矩阵生成的字段列表。
 *
 * @param taskId 任务 ID
 * @param orderId 订单 ID
 * @param sourceMessageId 来源 SourceMessage Inbox ID
 * @param sourceSubject 来源消息主题摘要
 * @param sourceSenderSummary 来源发送人安全摘要
 * @param sourceReceivedAt 本系统接收来源消息时间，UTC
 * @param externalConversationId 外部邮件会话 ID
 * @param conversationMessageCount 同一外部邮件会话下的消息数量
 * @param systemTaskType 系统主任务类型
 * @param taskCardType 任务卡类型
 * @param taskStatus 任务状态
 * @param fieldContractVersion 字段矩阵契约版本
 * @param draftPayload 草稿 payload
 * @param confirmedPayload 最终确认 payload
 * @param availability 当前可处理状态
 * @param fields 按字段矩阵生成的字段列表
 * @param operaOperations OPERA 模拟操作列表
 */
public record ReservationTaskDetailResult(
        @JsonProperty("task_id")
        String taskId,
        @JsonProperty("order_id")
        String orderId,
        @JsonProperty("source_message_id")
        String sourceMessageId,
        @JsonProperty("source_subject")
        String sourceSubject,
        @JsonProperty("source_sender_summary")
        String sourceSenderSummary,
        @JsonProperty("source_received_at")
        OffsetDateTime sourceReceivedAt,
        @JsonProperty("external_conversation_id")
        String externalConversationId,
        @JsonProperty("conversation_message_count")
        Long conversationMessageCount,
        @JsonProperty("system_task_type")
        String systemTaskType,
        @JsonProperty("task_card_type")
        String taskCardType,
        @JsonProperty("task_status")
        String taskStatus,
        @JsonProperty("field_contract_version")
        String fieldContractVersion,
        @JsonProperty("draft_payload")
        Object draftPayload,
        @JsonProperty("confirmed_payload")
        Object confirmedPayload,
        ReservationTaskAvailabilityResult availability,
        List<ReservationTaskFieldResult> fields,
        @JsonProperty("opera_operations")
        List<ReservationOperaOperationResult> operaOperations
) {
}
