# 迁移包 · GHCS v0.2 · SSH终端 & API Keys（本地验收+鉴权修复+登录入口）

```jsx
HLDP://migration-pack/ghcs/v0.2 · generated_at: 2026-06-10T18:06+08:00
├── scope: GHCS v0.2 本地开发与验收（SSH Web Terminal + API Keys）
├── goal: 换对话/换人/换设备后，可快速恢复上下文与继续推进
└── status: 本地验收✅ · 上线到服务器⬜（刻意暂缓）
```

---

## 1) 本次任务交付物（你可以直接打开复用）

- 任务状态唯一真相源（已更新里程碑）：[任务进展 · Awen系统 · 唯一任务状态源](%E4%BB%BB%E5%8A%A1%E8%BF%9B%E5%B1%95%20%C2%B7%20Awen%E7%B3%BB%E7%BB%9F%20%C2%B7%20%E5%94%AF%E4%B8%80%E4%BB%BB%E5%8A%A1%E7%8A%B6%E6%80%81%E6%BA%90%208d159e32b7bb4d468989084514957bcb.md)
- 执行记录（今天的“发生过什么”）：[执行记录 · 2026-06-09 · GHCS v0.2 API Keys 鉴权修复与本地验收](%E6%89%A7%E8%A1%8C%E8%AE%B0%E5%BD%95%20%C2%B7%202026-06-09%20%C2%B7%20GHCS%20v0%202%20API%20Keys%20%E9%89%B4%E6%9D%83%E4%BF%AE%E5%A4%8D%E4%B8%8E%E6%9C%AC%E5%9C%B0%E9%AA%8C%E6%94%B6%20aa2d746627374785af4ebbda76344745.md)
- 终端排障 SOP（含关键数据备忘）：[GHCS v0.2 终端排障 SOP（SSH Web Terminal Debug SOP）](GHCS%20v0%202%20%E7%BB%88%E7%AB%AF%E6%8E%92%E9%9A%9C%20SOP%EF%BC%88SSH%20Web%20Terminal%20Debug%20SOP%EF%BC%89%205f99f07a456c4ab9a8732f2e2e643ad1.md)
- keys/page.tsx 完整可替换版（含登录入口+鉴权）：[GHCS v0.2 · keys/page.tsx 完整可替换版（含登录入口+鉴权）](GHCS%20v0%202%20%C2%B7%20keys%20page%20tsx%20%E5%AE%8C%E6%95%B4%E5%8F%AF%E6%9B%BF%E6%8D%A2%E7%89%88%EF%BC%88%E5%90%AB%E7%99%BB%E5%BD%95%E5%85%A5%E5%8F%A3+%E9%89%B4%E6%9D%83%EF%BC%89%20218db04ed1244016b1419b1813c7c3f8.md)
- 知秋记忆容器年轮（已写入两条里程碑）：[知秋记忆容器 · Memory Vessel · v0.1 · 三层记忆架构 · Awen×知秋共同设计](%E7%9F%A5%E7%A7%8B%E8%AE%B0%E5%BF%86%E5%AE%B9%E5%99%A8%20%C2%B7%20Memory%20Vessel%20%C2%B7%20v0%201%20%C2%B7%20%E4%B8%89%E5%B1%82%E8%AE%B0%E5%BF%86%E6%9E%B6%E6%9E%84%20%C2%B7%20Awen%C3%97%E7%9F%A5%E7%A7%8B%E5%85%B1%E5%90%8C%20dac1430ae5ba454f97d45ca1193b15b0.md)

---

## 2) 当前已验收通过的结论（可直接当“完成口径”）

### 2.1 SSH Web Terminal（本地）

- 后端：`GET /ws/terminal/servers` → 200
- 前端：`/console/terminal` 可连接并交互
- 交互验收命令：`whoami / pwd / echo FOCUS_OK / echo CLICK_FOCUS_OK / echo SHOULD_APPEAR`

### 2.2 API Keys（本地）

- 登录：`POST /api/login` → 返回 `access_token`（bearer）
- 后端写入：`POST /api/keys/add` → ok + mask 正常
- 后端读回：`GET /api/keys/list` → 可读回刚写入的 key
- 前端页面：`/console/keys` 读取 suppliers/list/usage/health-check 正常
- 前端写操作：启停/新增/删除不再 401（写请求带 Bearer 后 200）

---

## 3) 关键数据（防遗忘，最常用）

### 3.1 本地端口/环境变量

- backend：`http://127.0.0.1:5002`
- frontend：`http://localhost:3000`
- `frontend/.env.local`：`NEXT_PUBLIC_CONSOLE_API=http://127.0.0.1:5002`
    - ⊢ 改 env 后必须重启 `npm run dev`

### 3.2 Token 规则（写操作都靠它）

- 登录返回字段：`access_token`
- 前端存储：`localStorage.ghcs_access_token`
- 写请求 header：`Authorization: Bearer <access_token>`

### 3.3 本地默认账号（开发硬编码，见 backend/[auth.py](http://auth.py)）

- `awen / guanghu2026`

---

## 4) 代码迁移清单（给“复制替换/回滚”用）

### 4.1 前端

- 文件：`frontend/src/app/console/keys/page.tsx`
    - 目标：加入登录入口 + 统一 Bearer 鉴权（写操作）
    - ✅ 完整可替换版见：[GHCS v0.2 · keys/page.tsx 完整可替换版（含登录入口+鉴权）](GHCS%20v0%202%20%C2%B7%20keys%20page%20tsx%20%E5%AE%8C%E6%95%B4%E5%8F%AF%E6%9B%BF%E6%8D%A2%E7%89%88%EF%BC%88%E5%90%AB%E7%99%BB%E5%BD%95%E5%85%A5%E5%8F%A3+%E9%89%B4%E6%9D%83%EF%BC%89%20218db04ed1244016b1419b1813c7c3f8.md)

### 4.2 后端

- 文件：`backend/auth.py`
    - 管理员账号/密码哈希、JWT 生成与验证
- 文件：`backend/api_keys.py`
    - keys 路由（suppliers/list/add/update/delete/usage/health-check）
- 文件：`backend/main.py`
    - include_router（确保 api_keys 与 terminal 路由挂载）

---

## 5) 下一步建议（保持“先本地完备后上线”策略）

- ✅ 完成：keys 页登录入口（不再依赖手动塞 token）
- ⬜ 待做：全局统一 fetch 封装（自动带 Bearer + 统一 401 提示）
- ⬜ 待做：再考虑一键部署上线到 GHCS 服务器（43.139.207.172）