45 lines
1.8 KiB
Markdown
45 lines
1.8 KiB
Markdown
# 审计 — 每日离线巡检发报前 SSH 复检
|
|
|
|
## 范围(文件清单)
|
|
|
|
| 文件 | 变更 |
|
|
|------|------|
|
|
| `server/application/server_connectivity.py` | `health_check_server_ids`;扫描列表 `batch_server_display_name` |
|
|
| `server/application/services/offline_daily_report_schedule.py` | preflight 后二次 snapshot |
|
|
| `server/config.py` | `OFFLINE_DAILY_REPORT_HEALTH_CHECK` |
|
|
| `server/infrastructure/telegram/__init__.py` | `preflight` 参数与文案 |
|
|
| `server/background/server_offline_monitor.py` | 告警显示名备注优先 |
|
|
| `tests/test_offline_daily_report_schedule.py` | preflight 单测 |
|
|
|
|
## Step 3 规则扫描
|
|
|
|
| H | 规则 | 结论 |
|
|
|---|------|------|
|
|
| H1 | 复用既有 SSH 探测,不新造协议 | PASS — `ssh_health_probe` + `write_ssh_health_heartbeat` |
|
|
| H2 | 并发受控 | PASS — `Semaphore(10)` 与批量健康检查一致 |
|
|
| H3 | 可配置关闭 | PASS — `OFFLINE_DAILY_REPORT_HEALTH_CHECK` |
|
|
| H4 | 日报数据为复检后 snapshot | PASS — 二次 `collect_offline_snapshot` |
|
|
| H5 | 显示名与批量任务 SSOT 一致 | PASS — `batch_server_display_name` |
|
|
|
|
## Closure
|
|
|
|
| H | 判定 | 依据 |
|
|
|---|------|------|
|
|
| H1 | SAFE | `server_connectivity.health_check_server_ids` |
|
|
| H2 | SAFE | `asyncio.Semaphore(max(1, concurrency))` |
|
|
| H3 | SAFE | `_health_check_enabled()` |
|
|
| H4 | SAFE | `offline_daily_report_schedule.run_scheduled_offline_daily_report` |
|
|
| H5 | SAFE | `scan_monitored_connectivity` / `server_offline_monitor` |
|
|
|
|
## DoD
|
|
|
|
- [x] pytest tests/test_offline_daily_report_schedule.py tests/test_batch_server_display_name.py
|
|
- [x] changelog 2026-06-30-offline-daily-preflight-health-check.md
|
|
- [x] 无 DB 迁移
|
|
|
|
## 验证
|
|
|
|
```bash
|
|
.venv/bin/pytest tests/test_offline_daily_report_schedule.py tests/test_batch_server_display_name.py -q
|
|
```
|