# 前端 14 页深审 — Batch 1/3（Dashboard / Servers / Terminal / Files / Push）

**日期**: 2026-06-04  
**标准**: `standards/line-walk-audit-standard-v2.md` 8 步  
**说明**: 按路由顺序；每页 **1–N 全文 Read**；编排页含 composable 入口追踪

## 登记

| # | 文件 | 行数 N | Read 范围 |
|---|------|--------|-----------|
| 1 | `frontend/src/pages/DashboardPage.vue` | 415 | 1–415 全文 |
| 2 | `frontend/src/pages/ServersPage.vue` | 477 | 1–477 全文 |
| 3 | `frontend/src/pages/TerminalPage.vue` | 408 | 1–408 全文 |
| 4 | `frontend/src/pages/FilesPage.vue` | 38 | 1–38 全文 |
| 5 | `frontend/src/pages/PushPage.vue` | 106 | 1–106 全文 |

**关联 composable（入口 Sink 追踪）**:

| Composable | 行数 | 深审波次 |
|------------|------|----------|
| `useTerminalSessions.ts` | 749 | D5 + P2-5 webssh 链 |
| `useFilesPage.ts` + files/* | — | D5 + P2-1 |
| `usePushPage.ts` + push/* | — | D4 + P2-2 |

## Step 3 — 逐文件 H 扫描

### DashboardPage.vue (415)

| H | 行号 | 规则 | 命中 |
|---|------|------|------|
| H1 | 237,304-341 | API JWT | GET stats/alerts/audit/servers |
| H2 | 393-397 | WS | useWebSocket 刷新 stats |
| H3 | 383-387 | 路由 | server_id query 跳转 |
| H4 | 268-345 | 错误 | snackbar 非静默 |
| H5 | 405 | 副作用 | bing-wallpaper sync POST |

### ServersPage.vue (477)

| H | 行号 | 规则 | 命中 |
|---|------|------|------|
| H6 | 330-388 | 批量 | batch agent/check/delete JWT |
| H7 | 391-407 | 导出 | CSV 无 password 列 |
| H8 | 418-434 | 上传 | FormData CSV import |
| H9 | 162-176 | 表单 | ServerFormDialog 凭据 |

### TerminalPage.vue (408)

| H | 行号 | 规则 | 命中 |
|---|------|------|------|
| H10 | 132-166 | 编排 | useTerminalSessions 全部 WS/SSH |
| H11 | 233-246 | 剪贴板 | paste → xterm，非 URL |
| H12 | 276-278 | 生命周期 | disposeAllSessions onUnmount |

### FilesPage.vue (38)

| H | 行号 | 规则 | 命中 |
|---|------|------|------|
| H13 | 33-37 | 编排 | provideFilesPage + useFilesPage |

### PushPage.vue (106)

| H | 行号 | 规则 | 命中 |
|---|------|------|------|
| H14 | 105 | 编排 | usePushPage 解构 form/progress/preview |

## 入口表

| 页面 | 用户输入 | API / WS |
|------|----------|----------|
| Dashboard | search | GET /servers/*, /alert-history/, /audit/ |
| Servers | search, CSV, form | CRUD /servers, batch/*, import |
| Terminal | cmd, quickCmd | POST /auth/webssh-token, WS /ws/terminal |
| Files | —（组件内） | GET /files/browse, sync/read-file |
| Push | path, servers | POST /sync/*, WS /ws/sync |

## Closure 表

| H | 判定 | 依据 |
|---|------|------|
| H1-H5 | SAFE | JWT http；错误有 snackbar |
| H2 | RISK | WS query token（已接受 ADR-011） |
| H6-H9 | SAFE | 批量需 JWT；CSV 无凭据导出 |
| H10-H12 | SAFE | WebSSH token 短期；dispose 清理 |
| H13-H14 | SAFE | 逻辑在已审 composable，页壳无 sink |

**len(H)=14, Closure=14**

## FINDING

无 P0/P1 新 FINDING。

## DoD

- [x] 5 页全文 Read（Terminal 408 行含 style）
- [x] composable 入口表完整
- [x] len(H)==Closure
