# Changelog — 2026-06-08 服务器全选筛选 + 脚本失败分组

**日期**: 2026-06-08  
**基线**: `main@5f63fb0`

## 摘要

- **服务器列表**：新增「全选筛选结果」与分类视图「全选本组」；筛选变更自动清空选择。
- **脚本执行详情**：失败项可按错误类型分组（规则 B：去 IP/端口/路径）；支持复制失败清单与分组摘要。
- **不做** CSV 文件导出。

## 动机

- 分类 Chip 筛选 300+ 台后，表头 checkbox 仅能选当前页，批量改分类无法覆盖全量匹配项。
- 批量执行多机同类 SSH 失败时，列表视图难以一眼看出有几种错误。

## 涉及文件

| 文件 | 变更 |
|------|------|
| `frontend/src/pages/ServersPage.vue` | 全选筛选、全选本组、watch 清选择 |
| `frontend/src/pages/ScriptsPage.vue` | 列表/分组 toggle、复制清单 |
| `frontend/src/utils/execDetailGrouping.ts` | 新建：规则 B 分组 |
| `tests/test_exec_detail_grouping.py` | 分组键单测 |
| `docs/design/specs/2026-06-08-servers-select-all-script-exec-export-design.md` | 设计（已更新范围） |

## 迁移 / 重启

- **无需** DB 迁移或 API 重启。
- 仅前端静态资源：部署 `web/app/` 即可。

## 验证

```bash
pytest tests/test_exec_detail_grouping.py -q
cd frontend && npx vite build
bash scripts/local_verify.sh
```

浏览器终验：

- `#/servers`：选分类 →「全选筛选结果 (N)」→ 批量改分类
- `#/scripts`：打开失败执行详情 →「按错误分组」→「复制失败清单」
