import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import {
  DashboardVO,
  RealtimeStats,
  DeviceStatusVO,
  SuccessRateTrend,
  StatisticsOverview,
  AlarmStatVO
} from './types';

// ==================== 新增接口（按需刷新） ====================

/**
 * 【新接口1】获取实时统计数据（按秒刷新）
 * 包含：顶部统计（设备数量、在线数量、离线数量、告警数量）+ 告警统计列表
 *
 * @param alarmLimit 告警列表限制数量（默认10条）
 */
export const getRealtimeStats = (alarmLimit?: number): AxiosPromise<RealtimeStats> => {
  return request({
    url: '/rfid/dashboard/realtime',
    method: 'get',
    params: { alarmLimit }
  });
};

/**
 * 【新接口2】获取设备状态列表（定时刷新）
 * 包含每个设备的在线状态、告警状态及最新读取记录
 *
 * @param locationId 位置ID（可选，用于按位置筛选）
 */
export const getDeviceStatusList = (locationId?: number): AxiosPromise<DeviceStatusVO[]> => {
  return request({
    url: '/rfid/dashboard/deviceStatus',
    method: 'get',
    params: { locationId }
  });
};

/**
 * 【新接口3】获取成功率趋势（按小时统计）
 * 不需要频繁刷新
 *
 * @param type 类型：today-今日（默认），yesterday-昨日
 */
export const getSuccessRateTrends = (type?: string): AxiosPromise<SuccessRateTrend[]> => {
  return request({
    url: '/rfid/dashboard/successRate',
    method: 'get',
    params: { type }
  });
};

// ==================== 原有接口（保留） ====================

/**
 * 获取完整看板数据
 *
 * @param locationId 位置ID（可选）
 */
export const getDashboardData = (locationId?: number): AxiosPromise<DashboardVO> => {
  return request({
    url: '/rfid/dashboard/data',
    method: 'get',
    params: { locationId }
  });
};

/**
 * 获取统计概览
 */
export const getOverview = (): AxiosPromise<StatisticsOverview> => {
  return request({
    url: '/rfid/dashboard/overview',
    method: 'get'
  });
};

/**
 * 获取告警统计列表
 *
 * @param limit 限制数量（默认10条）
 */
export const getAlarmStats = (limit?: number): AxiosPromise<AlarmStatVO[]> => {
  return request({
    url: '/rfid/dashboard/alarmStats',
    method: 'get',
    params: { limit }
  });
};
