# 2026-06-09 — 离线统计与筛选准确性

## 摘要

`/servers/stats` 的在线/离线改为按 DB 中 Agent 监控服务器逐台读 Redis 心跳计数；列表 `is_online` 筛选改为匹配 UI `status`（排除「未知」）。服务器页：**在线**展示全库 `online`（含未设路径，不可点）；**离线**展示 `offline_list` 并可筛选主列表。

## 动机

原先用 Redis `SCAN heartbeat:*` 全局计数，且列表用 MySQL `is_online` 预筛，导致顶部「离线 N」与点击后列表不一致。

## 涉及文件

- `server/application/server_connectivity.py`
- `server/api/servers.py`
- `frontend/src/pages/ServersPage.vue`
- `tests/test_server_connectivity.py`

## 验证

```bash
pytest tests/test_server_connectivity.py tests/integration/test_servers_dashboard.py -q
```
