# 前端 14 页深审 — Batch 2/3(Scripts / Credentials / Schedules / Retries / Commands) **日期**: 2026-06-04 **标准**: 8 步逐行 ## 登记 | # | 文件 | 行数 N | Read 范围 | |---|------|--------|-----------| | 1 | `frontend/src/pages/ScriptsPage.vue` | 535 | 1–535 全文 | | 2 | `frontend/src/pages/CredentialsPage.vue` | 400 | 1–400 全文 | | 3 | `frontend/src/pages/SchedulesPage.vue` | 295 | 1–295 全文 | | 4 | `frontend/src/pages/RetriesPage.vue` | 191 | 1–191 全文 | | 5 | `frontend/src/pages/CommandsPage.vue` | 168 | 1–168 全文 | ## Step 3 — 逐文件 H ### ScriptsPage.vue (535) | H | 行号 | 规则 | |---|------|------| | H1 | 358-390 | CRUD /scripts JWT | | H2 | 415-419 | exec script_id + server_ids | | H3 | 463-467 | quick command exec | | H4 | 527-528 | poll timer cleanup | ### CredentialsPage.vue (400) | H | 行号 | 规则 | |---|------|------| | H5 | 253-255 | GET 列表无密码 | | H6 | 323-327 | encrypted_pw POST only | | H7 | 306,340,357 | 编辑留空不改 | | H8 | 346-347 | SSH 私钥提交时传输 | ### SchedulesPage.vue (295) | H | 行号 | 规则 | |---|------|------| | H9 | 177 | cron 正则 `^[\d\s*/,\-]+$` | | H10 | 173-189 | buildSchedulePayload 校验 | | H11 | 263-267 | runNow → POST /sync/files | ### RetriesPage.vue (191) | H | 行号 | 规则 | |---|------|------| | H12 | 129-134 | 客户端 filter(展示) | | H13 | 146,160 | retry/delete JWT | ### CommandsPage.vue (168) | H | 行号 | 规则 | |---|------|------| | H14 | 139-153 | 只读 command-logs / ssh-sessions | | H15 | 50 | command 文本展示(后端已存) | ## Closure 表 | H | 判定 | 依据 | |---|------|------| | H1-H4 | SAFE/RISK | exec 走后端;H3 RISK 临时命令(后端 dangerous check) | | H5-H8 | SAFE | 无 localStorage;API 脱敏 | | H9-H11 | SAFE | cron/路径校验;sync JWT | | H12-H13 | SAFE | 只读+操作 JWT | | H14-H15 | SAFE | 只读审计视图 | **len(H)=15, Closure=15** ## FINDING 无 P0/P1 新 FINDING。 ## DoD - [x] 5 页全文 Read - [x] len(H)==Closure