package com.zksy.api.service;

import java.math.BigDecimal;

/**
 * 采集数据自动生成预警
 */
public interface EarlyWarningAutoService {

    /**
     * 根据实际值与阈值评估并生成/更新/关闭自动预警。
     * <ul>
     *   <li>已越限：关闭未完结的自动预警（报警由调用方自行写入 alarm_data）</li>
     *   <li>进入预警区：新增或更新 early_warning</li>
     *   <li>回到安全区：关闭未完结的自动预警</li>
     * </ul>
     *
     * @param deviceCode  设备编码
     * @param warningType 预警类型名称
     * @param warningCode 预警编码
     * @param minValue    下限（可空）
     * @param maxValue    上限（可空）
     * @param actualValue 实际采集值
     * @param extraRemark 附加说明（可空）
     * @return 当前预警级别 1-4；未生成/已关闭时返回 null
     */
    Integer checkAndGenerate(String deviceCode, String warningType, String warningCode,
                             BigDecimal minValue, BigDecimal maxValue, BigDecimal actualValue,
                             String extraRemark);

    /**
     * 关闭指定设备+预警编码下未完结的自动预警
     */
    void closeAutoWarning(String deviceCode, String warningCode, String reason);
}
