package cn.nianxx.thhotel.workflows.reservation.service;

import cn.nianxx.thhotel.workflows.reservation.common.request.ReservationOrderListQueryRequest;
import cn.nianxx.thhotel.workflows.reservation.common.request.ReservationTaskWorkbenchQueryRequest;
import cn.nianxx.thhotel.workflows.reservation.common.result.ReservationOrderDetailResult;
import cn.nianxx.thhotel.workflows.reservation.common.result.ReservationOrderListResult;
import cn.nianxx.thhotel.workflows.reservation.common.result.ReservationTaskWorkbenchListResult;

/**
 * Reservation 前端页面查询服务。提供任务工作台和订单详情时间线，不执行任何业务写操作。
 */
public interface ReservationFrontendQueryService {

    /**
     * 查询任务列表 / 工作台摘要，并实时计算每条任务当前是否可处理。
     */
    ReservationTaskWorkbenchListResult queryTaskWorkbench(ReservationTaskWorkbenchQueryRequest request);

    /**
     * 查询订单列表，并实时聚合未关闭任务数量和下一条可处理任务。
     */
    ReservationOrderListResult queryOrders(ReservationOrderListQueryRequest request);

    /**
     * 查询订单详情和同订单任务时间线，供前端订单详情页展示。
     */
    ReservationOrderDetailResult getOrderDetail(
            String hotelId,
            Long orderId,
            Boolean includeTasks,
            Boolean includeSourceSummary);
}
