# 验证 — 服务器未设路径区块 + 行内详情（2026-06-08）

## 自动化

| 检查 | 结果 |
|------|------|
| `pytest tests/test_server_target_path_filter.py -q` | 12 passed |
| `bash scripts/local_verify.sh` | 26/26 |
| `cd frontend && npm run build` | PASS（vue-tsc + vite） |
| `bash deploy/pre_deploy_check.sh` | 7/7 |

## 单测覆盖

- `is_unset_target_path` 真值表（空、`/www/wwwroot`、尾斜杠、子路径）
- `ServerRepositoryImpl.get_paginated` unset true/false + search 组合
- `GET /api/servers/?target_path_unset=` true / false / 默认三态

## 布局与交互（本地 build 代码审查）

| 场景 | 预期 | 结论 |
|------|------|------|
| 主表列表 | 不含 target_path 为空或 `/www/wwwroot` 的机器 | PASS（显式 `target_path_unset=false`） |
| 未设路径卡片 | 位于连接失败列表上方，独立分页 | PASS |
| 名称点击 | 主表 / 未设路径表各展开一行紧凑详情 | PASS |
| 底部详情卡 | 已删除 `detailServer` 大块 UI | PASS |
| 保存真实路径 | 从未设路径表消失 → 主表出现 | PASS（双表 refresh + `clearExpandedForPathMigration`） |
| 保存 `/www/wwwroot` | 从主表 → 未设路径表 | PASS |
| 分页/搜索/分类/排序 | 双表 reload + 展开态 reset | PASS |
| 30s 静默刷新 | `refreshServersSilent` 含 `loadUnsetPathServers` | PASS |
| API 未传参 | Dashboard / Terminal 仍返回全部 | PASS（默认 None 不过滤） |

## 手动终验（用户）

1. `#/servers` · 确认三区：主列表 → 未设置路径服务器 → 连接失败列表
2. 主表点击服务器名称 · 行内展开 CPU/内存/磁盘/Agent/路径/同步日志
3. 未设路径表点击名称 · 同样行内展开
4. 编辑目标路径为真实目录 · 机器从未设路径表移至主表
5. 编辑目标路径为 `/www/wwwroot` · 机器从主表移至未设路径表
6. `#/terminal` · 仍可连接未设路径机器（列表未过滤）
