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

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

/**
 * 订单详情页任务时间线单项。用于前端按同订单任务顺序展示处理状态。
 *
 * @param taskId 任务 ID
 * @param taskType 系统主任务类型
 * @param resultType AI 结果类型
 * @param aiTaskType AI 原始任务类型
 * @param taskSubtype 任务 subtype
 * @param routeCode M002 V3 路由码
 * @param systemProcessCategory 系统处理分类
 * @param taskStatus 任务状态
 * @param cardName 任务卡展示名称
 * @param queueSequence 同订单队列顺序
 * @param queueParticipation 是否参与执行队列
 * @param canProcess 当前是否可处理
 * @param readonlyReasonCode 只读原因代码
 * @param sourceMessageId 来源 SourceMessage Inbox ID
 * @param sourceSubject 来源消息主题摘要
 * @param sourceSenderSummary 来源发件人展示值，当前不打码
 * @param sourceReceivedAt 邮件来源接收时间，UTC；缺失时回退本系统接收时间
 * @param externalConversationId 外部邮件会话 ID
 * @param conversationMessageCount 同一外部邮件会话下的消息数量
 * @param createdAt 任务创建时间
 */
public record ReservationOrderTaskTimelineItemResult(
        @JsonProperty("task_id")
        String taskId,
        @JsonProperty("task_type")
        String taskType,
        @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("card_name")
        String cardName,
        @JsonProperty("queue_sequence")
        Integer queueSequence,
        @JsonProperty("queue_participation")
        Boolean queueParticipation,
        @JsonProperty("can_process")
        Boolean canProcess,
        @JsonProperty("readonly_reason_code")
        String readonlyReasonCode,
        @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("created_at")
        OffsetDateTime createdAt
) {
}
