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

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

/**
 * 订单详情页任务时间线单项。用于前端按同订单任务顺序展示处理状态。
 *
 * @param taskId 任务 ID
 * @param taskType 系统主任务类型
 * @param taskSubtype 任务 subtype
 * @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("task_subtype")
        String taskSubtype,
        @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
) {
}
