# 执行记录 · 2026-06-09 · GHCS v0.2 API Keys 鉴权修复与本地验收 ```jsx HLDP://ghcs/v0.2/exec-log/2026-06-09 · 2026-06-09T00:56+08:00 ├── scope: GHCS v0.2 · API Keys 管理 ├── goal: keys 页面写操作不再 401;完成本地闭环验收 ├── env: Mac 本地开发(frontend + backend) └── result: ✅ 完成 ``` --- ## ✅ 今日完成清单(按验收口径) - 后端已挂载 keys 路由:`GET /api/keys/suppliers` 返回 200 - 鉴权链路跑通:`POST /api/login` 返回 `access_token`(bearer) - 写入验收:`POST /api/keys/add` 写入成功(示例 id:`41f67eb681f3`),mask 显示正确 - 读回验收:`GET /api/keys/list` 可读回刚写入的 key - 前端页面 `/console/keys` 联调通过:suppliers/list/usage/health-check 200 - 关键修复:前端写操作(PUT/DELETE/POST)补齐 `Authorization: Bearer`,启停 `PUT /api/keys/{id}` 从 401 → 200 --- ## 🔑 关键数据(防遗忘) ### 端口与环境变量 - 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` ### token 规则 - `/api/login` 返回字段:`access_token` - 前端存 token:`localStorage.ghcs_access_token` - 写请求头:`Authorization: Bearer ` ### 本地默认账号(见 backend/[auth.py](http://auth.py)) - `awen / guanghu2026` --- ## 🧠 交互产生的认知(可迁移) - **页面 200 ≠ 链路通**:先用 `curl -i` 看 200/404,再谈 UI。 - **env 改了不重启 = 没改**:Next 必须重启才会吃新 `.env.local`。 - **读接口可放开,写接口必须鉴权**:前端所有写 fetch 必须统一带 Bearer。 - **用最小证据验收**:Network 里看 `PUT` 从 401→200 是“根治完成”的唯一判据。