package com.qqchen.deploy.backend.framework.monitor;

import com.qqchen.deploy.backend.framework.enums.MonitorAlertLevelEnum;

import java.math.BigDecimal;

/**
 * 服务器阈值检测器接口
 * Framework 提供的服务器监控指标阈值检测能力
 * 
 * 每种监控指标（CPU/内存/磁盘/网络）实现自己的阈值检测逻辑
 *
 * @author qqchen
 * @since 2025-12-07
 */
public interface IServerThresholdChecker<T> {
    
    /**
     * 获取当前指标值
     *
     * @param monitorData 监控数据
     * @return 当前指标值
     */
    BigDecimal getCurrentValue(T monitorData);
    
    /**
     * 检查是否超过阈值并触发告警
     *
     * @param currentValue 当前值
     * @param warningThreshold 警告阈值
     * @param criticalThreshold 严重阈值
     * @return 告警级别（null表示未超过阈值）
     */
    MonitorAlertLevelEnum checkThreshold(BigDecimal currentValue, BigDecimal warningThreshold, BigDecimal criticalThreshold);
    
    /**
     * 获取资源信息描述（用于通知消息）
     *
     * @param monitorData 监控数据
     * @return 资源描述，如 "CPU使用率", "内存使用率", "磁盘(/data)使用率"
     */
    String getResourceInfo(T monitorData);
}
