# 审计 — 监测槽 SSH 安装 psutil

**日期**：2026-06-12  
**Changelog**: `docs/changelog/2026-06-12-watch-install-psutil-ssh.md`

## 范围

| 文件 |
|------|
| `server/utils/psutil_install.py` |
| `server/application/services/watch_service.py` |
| `server/api/watch.py` |
| `frontend/src/components/watch/WatchSlotCard.vue` |
| `frontend/src/components/watch/WatchSlotRow.vue` |
| `frontend/src/utils/watchFormat.ts` |
| `server/utils/watch_probe_errors.py` |
| `tests/test_psutil_install.py` |
| `tests/test_watch_pins.py` |
| `tests/test_watch_probe_errors.py` |

## Step 3

| H | 结论 |
|---|------|
| H1 鉴权 | PASS — 须 JWT；仅已 Pin 的服务器可安装 |
| H2 吞错 | PASS — SSH/安装失败 422 + snackbar |
| H4 审计 | PASS — `watch_install_psutil` |

## Closure

H1–H4 PASS

## DoD

- [x] pytest test_psutil_install + test_watch_pins
- [x] npm run type-check
- [ ] 生产浏览器：psutil 错误时出现按钮且安装后探针恢复
