# admin-frontend 节点管理分页、置顶与批量修改 — 需求

确认后冻结，执行阶段不可修改。如需变更必须回到设计阶段重新确认。

## 核心目标
- 在 `admin-frontend` 的 `#/nodes` 页面内补齐分页能力，避免节点列表持续增长后整页难以浏览。
- 为节点列表增加“置顶”单行操作，让运营者可以把某个节点快速移动到列表顶部。
- 为节点管理补齐批量修改工作流，并按本轮确认仅对**已勾选节点**生效。
- 为节点搜索补齐“子节点 / 父节点”筛选选项，帮助运营者快速区分主节点与子节点。

## 功能边界
- 必须保留现有节点管理能力：搜索、类型筛选、权限组筛选、显隐切换、复制、删除、添加节点、编辑节点、编辑排序。
- 分页必须作用于当前筛选结果，并允许切换每页数量。
- “置顶节点”必须真实生效到后台排序，不能只在前端临时重排。
- 批量修改本轮只支持以下字段：
  - 节点地址（仅 `host`，不含端口）
  - 权限组
  - 倍率
- 批量修改只作用于已勾选节点；未勾选节点时不能误操作全部节点或筛选结果。
- “子节点 / 父节点”筛选必须基于 `parent_id` 真实区分：
  - 父节点：`parent_id` 为空
  - 子节点：`parent_id` 有值

## 非目标
- 本轮不引入后端列表分页接口，节点列表继续沿用 `server/manage/getNodes` 全量拉取 + 前端分页。
- 本轮不接入批量删除、批量重置流量、批量显隐、批量启停等其他批量动作。
- 本轮不修改节点编辑弹窗字段结构，也不扩展批量端口修改。

## 技术约束
- 技术栈固定为 `Vue 3 + TypeScript + Vite + Element Plus`，主目录限定在 `admin-frontend/`，后端仅做最小必要的 Laravel 管理接口补丁。
- 节点真相源仍以 `App\Http\Controllers\V2\Admin\Server\ManageController`、`App\Http\Requests\Admin\ServerSave` 与 `App\Models\Server` 为准。
- 置顶动作继续复用 `POST /server/manage/sort`。
- 批量修改优先复用现有 `POST /server/manage/batchUpdate`，只补齐本轮所需字段支持。
- 视觉继续遵循 `apple/DESIGN.md` 与 `.helloagents/DESIGN.md` 的 Apple 化后台约束：黑色首屏 + 白色工作台 + 蓝色单一强调。

## 质量要求
- 分页、勾选和筛选不能互相打架：切页后已勾选节点状态应保持稳定，不得让用户误以为选择丢失。
- 批量修改入口需要明确显示“当前已选 N 个节点”，降低误操作风险。
- 批量修改弹窗需清楚说明“节点地址只改 host，不改端口”，避免概念歧义。
- 父/子节点筛选应作为节点搜索工作流的一部分清晰可见，而不是埋进深层菜单。
- 最终至少完成一次 `admin-frontend` 构建验证，并留下视觉验收与交付证据。
