import { requestClient } from '#/api/request';

export namespace DecisionAlertApi {
  export interface AlertRecord {
    id: number;
    ruleId: number;
    kpiCode: string;
    kpiName: string;
    actualValue: number;
    thresholdValue: number;
    severity: number;
    alertMessage: string;
    status: number;
    handlerId?: number;
    handleTime?: string;
    handleRemark?: string;
    triggeredTime: string;
    createTime: string;
  }

  export interface AlertRule {
    id?: number;
    kpiId: number;
    name: string;
    severity: number;
    comparisonOperator: string;
    thresholdValue: number;
    notificationType?: string;
    enabled?: number;
    remark?: string;
  }
}

export function getAlertPage(params: Record<string, unknown>) {
  return requestClient.get('/bi/decision/alert/page', { params });
}

export function getUnprocessedCount() {
  return requestClient.get<number>('/bi/decision/alert/unprocessed-count');
}

export function confirmAlert(id: number) {
  return requestClient.post(`/bi/decision/alert/confirm/${id}`);
}

export function handleAlert(id: number, handleRemark?: string) {
  return requestClient.post('/bi/decision/alert/handle', { id, handleRemark });
}

export function getAlertRulePage(params: Record<string, unknown>) {
  return requestClient.get('/bi/decision/alert-rule/page', { params });
}

export function getAlertRule(id: number) {
  return requestClient.get<DecisionAlertApi.AlertRule>('/bi/decision/alert-rule/get', { params: { id } });
}

export function createAlertRule(data: DecisionAlertApi.AlertRule) {
  return requestClient.post('/bi/decision/alert-rule/create', data);
}

export function updateAlertRule(data: DecisionAlertApi.AlertRule) {
  return requestClient.put('/bi/decision/alert-rule/update', data);
}

export function deleteAlertRule(id: number) {
  return requestClient.delete('/bi/decision/alert-rule/delete', { params: { id } });
}