# 审计 — 设置页 IP 白名单订阅恢复

## 范围

| 文件 | 变更 |
|------|------|
| `frontend/src/pages/SettingsPage.vue` | 订阅 URL、解析预览、节点展示、正确 save payload |
| `frontend/src/types/api.ts` | `SubscriptionParseResponse`、`IpAllowlistSaveRequest` |
| `deploy/install_ops_cron.sh` | 同日前序 commit（cron bash 调用） |
| `deploy/gate_log.jsonl` | 门控记录 |

## Step 3 规则扫描

| H | 规则 | 结论 |
|---|------|------|
| H1 | 后端 API 未删 | PASS — `parse-subscription` / `IpAllowlistSaveRequest` 仍在 |
| H2 | SSRF 仍由后端拦截 | PASS — 未改 `settings.py` |
| H3 | 错误 payload 修复 | FIXED — 不再 POST `{ ips }` |

## Closure

| H | 判定 | 依据 |
|---|------|------|
| H1 | PASS | `server/api/settings.py` |
| H2 | PASS | 解析仍走服务端 |
| H3 | FIXED | `saveAllowlist` payload |

## DoD

- [x] vite build 通过
- [x] changelog / audit

## 验证

设置页 → 登录 IP 白名单 → 订阅 URL + 解析预览 + 保存
