package config

import "slices"

// AllowedMonitorIntervalMinutes 后台预设的全局检测周期（分钟）
var AllowedMonitorIntervalMinutes = []int{10, 20, 30, 60, 180, 360}

// IsAllowedMonitorInterval 是否为允许的检测间隔（分钟）
func IsAllowedMonitorInterval(minutes int) bool {
	return minutes > 0 && slices.Contains(AllowedMonitorIntervalMinutes, minutes)
}

// SnapMonitorIntervalMinutes 将分钟数裁剪到最近的预设值（用于读取旧配置）
func SnapMonitorIntervalMinutes(minutes int) int {
	if minutes <= 0 {
		return 30
	}
	if IsAllowedMonitorInterval(minutes) {
		return minutes
	}
	best := AllowedMonitorIntervalMinutes[0]
	bestDist := absInt(minutes - best)
	for _, v := range AllowedMonitorIntervalMinutes[1:] {
		d := absInt(minutes - v)
		if d < bestDist {
			bestDist = d
			best = v
		}
	}
	return best
}

func absInt(x int) int {
	if x < 0 {
		return -x
	}
	return x
}
