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

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

/**
 * SuperAgent 查询接口统一响应包。成功和失败都使用该结构，便于 Skill 侧稳定解析。
 *
 * @param success 是否查询成功
 * @param requestId 调用方请求 ID
 * @param traceId AI 运行链路 ID
 * @param data 成功响应数据
 * @param warnings 非阻断警告列表
 * @param error 失败响应错误项
 */
public record ReservationAiQueryResponse<T>(
        boolean success,
        @JsonProperty("request_id")
        String requestId,
        @JsonProperty("trace_id")
        String traceId,
        T data,
        List<ReservationAiQueryWarningResult> warnings,
        ReservationAiQueryErrorResult error
) {

    /**
     * 构造成功响应，warnings 允许为空列表但不返回 null。
     */
    public static <T> ReservationAiQueryResponse<T> success(
            String requestId,
            String traceId,
            T data,
            List<ReservationAiQueryWarningResult> warnings) {
        return new ReservationAiQueryResponse<>(true, requestId, traceId, data, warnings == null ? List.of() : warnings, null);
    }

    /**
     * 构造失败响应，data 固定为空，避免调用方误读部分结果。
     */
    public static <T> ReservationAiQueryResponse<T> failure(
            String requestId,
            String traceId,
            ReservationAiQueryErrorResult error) {
        return new ReservationAiQueryResponse<>(false, requestId, traceId, null, List.of(), error);
    }
}
