package com.usky.vpp.service;

import com.usky.vpp.service.vo.SiteBaselineVO;
import com.usky.vpp.service.vo.SiteDeclaredCapacityVO;

/**
 * 站点基线管理
 */
public interface VppBaselineService {

    /**
     * 查询站点基线负荷曲线（预测基线 / 今日实际 / 昨日实际）。
     *
     * <p>详见 {@link com.usky.vpp.service.impl.VppBaselineServiceImpl#getSiteBaseline(Long, String)} 实现说明。</p>
     *
     * @param siteId            站点 ID
     * @param responseStartTime 响应开始时间，格式 yyyy-MM-dd HH:mm:ss
     * @return 基线曲线及修正系数等信息
     */
    SiteBaselineVO getSiteBaseline(Long siteId, String responseStartTime);

    /**
     * 查询站点基线负荷曲线（可指定参考天数、实测截止时间）。
     *
     * @param siteId            站点 ID
     * @param responseStartTime 响应开始时间
     * @param baselineDays      参考天数，仅 3 或 5；为空则按工作日/非工作日自动选择
     * @param actualEndTime     当日实测查询截止时间；为空则截止到响应开始
     */
    SiteBaselineVO getSiteBaseline(Long siteId, String responseStartTime,
                                   Integer baselineDays, String actualEndTime);

    /**
     * 查询站点响应申报容量。
     *
     * <p>响应时段内同时间段历史负荷均值 × 执行时段小时数 / 2。</p>
     * <p>典型历史日选取：工作日 5 天 / 非工作日 3 天；剔除响应当日、历史响应日及响应日 &gt;= 今日。</p>
     *
     * @param siteId            站点 ID
     * @param responseStartTime 响应开始时间，格式 yyyy-MM-dd HH:mm:ss
     * @param responseEndTime   响应结束时间，格式 yyyy-MM-dd HH:mm:ss
     * @return 申报容量及响应时段明细
     */
    SiteDeclaredCapacityVO getSiteDeclaredCapacity(Long siteId,
                                                   String responseStartTime,
                                                   String responseEndTime);
}
