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 resultType AI 结果类型
 * @param aiTaskType AI 原始任务类型
 * @param taskSubtype 业务动作 subtype
 * @param routeCode M002 V3 路由码
 * @param systemProcessCategory 系统处理分类
 * @param taskStatus 任务状态
 * @param fieldContractVersion 字段矩阵契约版本
 * @param draftPayload 草稿 payload
 * @param confirmedPayload 最终确认 payload
 * @param reviewStatus type-known manual_review 同卡复核状态
 * @param reviewResolution 同卡复核解阻结果
 * @param manualReview AI 原始 manual_review 白名单对象
 * @param sourceMessageOnlyResult S000/S999 特殊入口结果，普通任务为空
 * @param availability 当前可处理状态
 * @param fields 按字段矩阵生成的字段列表
 * @param operaOperations OPERA 模拟操作列表
 * @param adapterContractErrors 同批次未建任务的 Adapter 契约错误展示块
 * @param unhandledIntents 同批次未建任务的未处理意图展示块
 */
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("result_type")
        String resultType,
        @JsonProperty("ai_task_type")
        String aiTaskType,
        @JsonProperty("task_subtype")
        String taskSubtype,
        @JsonProperty("route_code")
        String routeCode,
        @JsonProperty("system_process_category")
        String systemProcessCategory,
        @JsonProperty("task_status")
        String taskStatus,
        @JsonProperty("field_contract_version")
        String fieldContractVersion,
        @JsonProperty("draft_payload")
        Object draftPayload,
        @JsonProperty("confirmed_payload")
        Object confirmedPayload,
        @JsonProperty("review_status")
        String reviewStatus,
        @JsonProperty("review_resolution")
        Object reviewResolution,
        @JsonProperty("manual_review")
        Object manualReview,
        @JsonProperty("source_message_only_result")
        ReservationSourceMessageOnlyResult sourceMessageOnlyResult,
        ReservationTaskAvailabilityResult availability,
        List<ReservationTaskFieldResult> fields,
        @JsonProperty("opera_operations")
        List<ReservationOperaOperationResult> operaOperations,
        @JsonProperty("adapter_contract_errors")
        List<ReservationAiTransitionDisplayResult> adapterContractErrors,
        @JsonProperty("unhandled_intents")
        List<ReservationAiTransitionDisplayResult> unhandledIntents
) {
}
