0100ab2582
Move line-walk/delta/phase2/frontend audits and legacy memory into docs/archive/, add functional development SSOT, thin AGENTS/CLAUDE stubs, and regenerate changelog/audit indexes via consolidate_docs.py.
2.6 KiB
2.6 KiB
Phase 2 深审 — Wave P2-3(WebSocket / Dashboard 告警链)
日期: 2026-06-04
范围: 后端 WS 双通道 + 前端告警客户端 + Dashboard 刷新
标准: standards/line-walk-audit-standard-v2.md 8 步
登记
| # | 文件 | 语言 | 行数 N | Read 范围 |
|---|---|---|---|---|
| 1 | server/api/websocket.py |
Python | 552 | 1–552 全文 |
| 2 | frontend/src/composables/useWebSocket.ts |
TS | 178 | 1–178 全文 |
| 3 | frontend/src/pages/DashboardPage.vue |
Vue | 415 | 1–415 全文 |
| 4 | frontend/src/App.vue |
Vue | — | 247–260(WS 生命周期) |
| 5 | server/api/settings.py |
Python | — | 759–828(alert-history GET) |
入口表
| 通道 | 路径 | 鉴权 |
|---|---|---|
| WS | /ws/alerts?token= |
_verify_ws_token |
| WS | /ws/sync?token= |
同上 |
| HTTP | GET /api/alert-history/ |
JWT |
| HTTP | GET /api/servers/stats |
JWT(Dashboard) |
Closure 表
| H | 文件:行号 | 判定 | 理由 |
|---|---|---|---|
| H-WS-Auth | websocket.py:304-311,340-347 | SAFE | 无 token → 4001;无效 → 4401 |
| H-WS-Token | websocket.py:366-410 | SAFE | tv/updated_at 与 HTTP JWT 一致 |
| H-WS-ADR011 | websocket.py:9,296 | RISK | query JWT;单人运维已接受 |
| H-WS-Limit | websocket.py:49-52 | SAFE | MAX_CONNECTIONS=500 |
| H-WS-Heartbeat | websocket.py:139-165 | SAFE | 30s ping / 60s zombie |
| H-WS-Channel | websocket.py:246-249,531-551 | SAFE | alerts 与 sync 分 channel/manager |
| H-WS-Dedup | websocket.py:416-437 | SAFE | Telegram 5min 冷却;WS 仍实时 |
| H-WS-Recovery | websocket.py:512-513 | SAFE | recovery 清 cooldown |
| H-Frontend-Token | useWebSocket.ts:61 | RISK | URL query token;同 ADR-011 |
| H-Frontend-Auth | useWebSocket.ts:114-116 | SAFE | 4001/4401 → forceLogout |
| H-Frontend-XSS | useWebSocket.ts:99-102 | SAFE | snackbar 文本插值,无 v-html |
| H-Frontend-Singleton | useWebSocket.ts:17-18 | SAFE | 模块级单例;App 统一 connect |
| H-Dashboard-Refresh | DashboardPage.vue:393-397 | SAFE | WS alert → reload stats/alerts |
| H-Dashboard-API | DashboardPage.vue:302-337 | SAFE | http JWT 拉 stats/alert-history |
| H-App-Lifecycle | App.vue:257-259 | SAFE | login connect / logout disconnect |
| H-Alert-API | settings.py:768-828 | SAFE | alert-history JWT + 参数化 filter |
len(H)=16, Closure=16
FINDING
无 P0/P1 新 FINDING。
DoD
- len(H) == Closure
- websocket 全文 Read
- 端到端链:Agent→broadcast_alert→Redis→WS→Dashboard refresh
验证
bash scripts/local_verify.sh — 全绿