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

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

/**
 * 前端订单列表单行结果。用于工作台订单视角快速判断订单状态和可继续处理的任务。
 *
 * @param orderId 订单 ID，按字符串返回避免前端长整型精度问题
 * @param hotelId 酒店上下文 ID
 * @param orderStatus 订单状态
 * @param displayOrderKey 前端优先展示的订单业务号或临时订单号
 * @param temporaryOrderNo 临时订单号
 * @param groupCode Group Code，仅订单业务号类型为 GROUP_CODE 时返回
 * @param confirmationNumber Confirmation No.，仅订单业务号类型为 CONFIRMATION_NUMBER 时返回
 * @param displayName 订单展示名
 * @param openTaskCount 未关闭任务数，排除 COMPLETED 和 FAILED
 * @param nextProcessableTaskId 下一条当前可处理任务 ID
 * @param createdAt 订单创建时间，UTC
 * @param updatedAt 订单更新时间，UTC
 */
public record ReservationOrderListItemResult(
        @JsonProperty("order_id")
        String orderId,
        @JsonProperty("hotel_id")
        String hotelId,
        @JsonProperty("order_status")
        String orderStatus,
        @JsonProperty("display_order_key")
        String displayOrderKey,
        @JsonProperty("temporary_order_no")
        String temporaryOrderNo,
        @JsonProperty("group_code")
        String groupCode,
        @JsonProperty("confirmation_number")
        String confirmationNumber,
        @JsonProperty("display_name")
        String displayName,
        @JsonProperty("open_task_count")
        Integer openTaskCount,
        @JsonProperty("next_processable_task_id")
        String nextProcessableTaskId,
        @JsonProperty("created_at")
        OffsetDateTime createdAt,
        @JsonProperty("updated_at")
        OffsetDateTime updatedAt
) {
}
