# 项目全部接口汇总（完整可用，含调用地址、作用、参数）
## 公共说明
1. 基础域名：`http://10.150.117.190:8080/api/index.php`
2. instance 带端口时 `:` 必须编码为 `%3A`，例 `10.150.10.82%3A389`
3. 所有接口均需要登录会话，未登录返回 `code:401`
4. 数字 `insert_data_num` / `affected_rows` 代表数据库操作行数，0=无匹配数据

## 1. clear_single_instance 清除单个实例告警（生成恢复记录，隐藏告警）
### 作用
删除该机器旧恢复日志，强制插入最新恢复记录，前端不再展示这条告警；机器下次故障上报会重新告警。
### 完整代码
```php
if($act === "clear_single_instance"){
    $rule = $_GET['rule_name'] ?? '';
    $inst = $_GET['instance'] ?? '';
    if(empty($rule) || empty($inst)){
        echo json_encode(["code"=>400,"msg"=>"缺少rule_name或instance参数"],JSON_UNESCAPED_UNICODE);
        exit;
    }
    $ruleEsc = mysqli_real_escape_string($conn, $rule);
    $instEsc = mysqli_real_escape_string($conn, $inst);

    // 先删除旧恢复记录，避免重复调用失效
    $delOldRecSql = "DELETE FROM alert_log WHERE alert_type=2 AND alert_name='$ruleEsc' AND instance='$instEsc'";
    mysqli_query($conn, $delOldRecSql);

    // 强制插入恢复记录
    $insertSql = "
        INSERT INTO alert_log (alert_type,alert_name,instance,severity,starts_at,receive_time)
        SELECT DISTINCT 2,alert_name,instance,severity,NOW(),NOW()
        FROM alert_log
        WHERE alert_name='$ruleEsc' AND instance='$instEsc'
    ";
    mysqli_query($conn, $insertSql);
    $insertCount = mysqli_affected_rows($conn);

    echo json_encode([
        "code"=>0,
        "msg"=>"单实例告警清理完成",
        "insert_data_num" => $insertCount
    ],JSON_UNESCAPED_UNICODE);
    exit;
}
```
### 调用示例
```
http://10.150.117.190:8080/api/index.php?act=clear_single_instance&rule_name=Port_Down&instance=10.150.10.82%3A389
```
### 返回示例
```json
{"code":0,"msg":"单实例告警清理完成","insert_data_num":1}
```

## 2. clear_offline_rule 下线整条告警规则（所有实例批量清除）
### 作用
整条规则标记下线，批量生成所有机器恢复记录，页面隐藏该规则全部告警。
### 调用示例
```
http://10.150.117.190:8080/api/index.php?act=clear_offline_rule&rule_name=Host_Ping_Offline
```

## 3. restore_rule 恢复整条下线规则
### 作用
修改 monitor_rule 表 status=1，重新放行该规则所有机器告警。
### 调用示例
```
http://10.150.117.190:8080/api/index.php?act=restore_rule&rule_name=Host_Ping_Offline
```

## 4. restore_single_instance 恢复单台下线实例
### 作用
仅修改单台机器 monitor_rule status=1，单独放开该实例告警。
### 调用示例
```
http://10.150.117.190:8080/api/index.php?act=restore_single_instance&rule_name=Host_Ping_Offline&instance=10.150.10.118
```

## 5. delete_single_instance_log 删除单实例全部告警日志（彻底清空）
### 作用
直接删除该机器所有告警记录，无残留，推荐彻底清理垃圾告警使用。
### 代码
```php
if($act === "delete_single_instance_log"){
    $rule = $_GET['rule_name'] ?? '';
    $inst = $_GET['instance'] ?? '';
    if(empty($rule) || empty($inst)){
        echo json_encode(["code"=>400,"msg"=>"缺少rule_name或instance参数"],JSON_UNESCAPED_UNICODE);
        exit;
    }
    $ruleEsc = mysqli_real_escape_string($conn, $rule);
    $instEsc = mysqli_real_escape_string($conn, $inst);
    $delSql = "DELETE FROM alert_log WHERE alert_name='$ruleEsc' AND instance='$instEsc'";
    mysqli_query($conn, $delSql);
    $aff = mysqli_affected_rows($conn);
    echo json_encode(["code"=>0,"msg"=>"单实例告警日志已删除","affected_rows"=>$aff],JSON_UNESCAPED_UNICODE);
    exit;
}
```
### 调用示例
```
http://10.150.117.190:8080/api/index.php?act=delete_single_instance_log&rule_name=Port_Down&instance=10.150.10.82%3A389
```

## 6. clear_rule_all_log 一键清空整条规则所有告警日志
### 作用
删除该规则下全部机器告警记录，废弃规则时批量清理。
### 代码
```php
if($act === "clear_rule_all_log"){
    $rule = $_GET['rule_name'] ?? '';
    if(empty($rule)){
        echo json_encode(["code"=>400,"msg"=>"缺少rule_name参数"],JSON_UNESCAPED_UNICODE);
        exit;
    }
    $ruleEsc = mysqli_real_escape_string($conn, $rule);
    $delSql = "DELETE FROM alert_log WHERE alert_name='$ruleEsc'";
    mysqli_query($conn, $delSql);
    $aff = mysqli_affected_rows($conn);
    echo json_encode(["code"=>0,"msg"=>"规则全部告警日志已清空","delete_rows"=>$aff],JSON_UNESCAPED_UNICODE);
    exit;
}
```
### 调用示例
```
http://10.150.117.190:8080/api/index.php?act=clear_rule_all_log&rule_name=Host_Ping_Offline
```

## 7. day_total 首页统计卡片数据
### 作用
获取今日触发告警数、恢复数、故障机器总数。
### 调用
```
http://10.150.117.190:8080/api/index.php?act=day_total
```

## 8. top_alert 今日告警TOP10图表数据
### 调用
```
http://10.150.117.190:8080/api/index.php?act=top_alert
```

## 9. log_list 今日全量告警明细表格
### 调用
```
http://10.150.117.190:8080/api/index.php?act=log_list
```

## 10. active_firing 当前未恢复活跃告警列表（页面核心告警表格）
### 调用
```
http://10.150.117.190:8080/api/index.php?act=active_firing
```

## 11. export_csv 导出今日告警CSV报表（下载文件）
### 调用
```
http://10.150.117.190:8080/api/index.php?act=export_csv
```

# 接口用途快速区分
1. 临时隐藏单条告警（保留日志）：`clear_single_instance`
2. 彻底删除单机器所有告警：`delete_single_instance_log`
3. 整条规则下线屏蔽：`clear_offline_rule`
4. 恢复下线规则/机器告警：`restore_rule` / `restore_single_instance`
5. 废弃规则批量清库：`clear_rule_all_log`
6. 页面展示数据：`day_total` / `top_alert` / `log_list` / `active_firing`
7. 导出报表：`export_csv`