/**
 * 配额告警配置状态管理模块
 *
 * 用于维护“配额使用率阈值”配置，并持久化到 localStorage。
 *
 * @module store/modules/quota-alert
 */
import { defineStore } from 'pinia'
import { ref } from 'vue'

// 默认阈值（百分比）
const DEFAULT_ALERT_THRESHOLD = 80

// 默认各类型阈值（按后端 QuotaType 枚举值）
const DEFAULT_THRESHOLDS: Record<number, number> = {
  0: DEFAULT_ALERT_THRESHOLD, // 门店
  1: DEFAULT_ALERT_THRESHOLD, // 账号
  2: DEFAULT_ALERT_THRESHOLD, // 存储
  3: DEFAULT_ALERT_THRESHOLD, // 短信
  4: DEFAULT_ALERT_THRESHOLD, // 配送订单
  5: DEFAULT_ALERT_THRESHOLD // 促销位
}

/**
 * 配额告警配置 Store
 */
export const useQuotaAlertStore = defineStore(
  'quotaAlertStore',
  () => {
    // 1. 阈值配置（百分比）
    const thresholds = ref<Record<number, number>>({ ...DEFAULT_THRESHOLDS })

    // 2. 获取指定类型阈值
    const getThreshold = (quotaType: number) => {
      return thresholds.value[quotaType] ?? DEFAULT_ALERT_THRESHOLD
    }

    // 3. 设置指定类型阈值（0~100）
    const setThreshold = (quotaType: number, value: number) => {
      const nextValue = Math.max(0, Math.min(100, Math.round(value)))
      thresholds.value = {
        ...thresholds.value,
        [quotaType]: nextValue
      }
    }

    // 4. 重置为默认值
    const resetToDefault = () => {
      thresholds.value = { ...DEFAULT_THRESHOLDS }
    }

    return {
      thresholds,
      getThreshold,
      setThreshold,
      resetToDefault
    }
  },
  {
    // 使用 storeId 走全局 StorageKeyManager（避免硬编码 Key）
    persist: true
  }
)
