Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc [SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
63 lines
2.4 KiB
Markdown
63 lines
2.4 KiB
Markdown
# 执行记录 · 2026-06-11 · GHCS v0.2 登录入口闭环验收(本地)
|
||
|
||
```jsx
|
||
HLDP://ghcs/v0.2/exec-log/2026-06-11 · 2026-06-11T00:48+08:00
|
||
├── scope: GHCS v0.2 · API Keys 登录入口产品化 + 本地验收闭环(不部署服务器)
|
||
├── env: Mac 本地开发(frontend:3000 + backend:5002)
|
||
├── policy: 未完全开发完不部署服务器(本次严格遵守)
|
||
└── result: ✅ 本地闭环通过
|
||
```
|
||
|
||
---
|
||
|
||
## ✅ 本次完成清单(按验收口径)
|
||
|
||
### 1) 登录入口(可点可用)
|
||
|
||
- 页面:`/console/keys` 顶部登录条显示
|
||
- 登录接口:`POST /api/login` → 返回 `access_token`(bearer)
|
||
- 本地持久化:`localStorage.ghcs_access_token` 有值(刷新不丢)
|
||
|
||
### 2) 写操作鉴权闭环(不再 401)
|
||
|
||
- 启停开关:触发 `PUT /api/keys/{id}` → 200
|
||
- Network 验收:请求头包含 `Authorization: Bearer <token>`
|
||
- 实际效果:key 的启用/停用状态可切换并生效
|
||
|
||
---
|
||
|
||
## 🧱 本次遇到的问题(根因)
|
||
|
||
1) **前端编译错误:TSX 的 style 写法错**
|
||
|
||
- 典型错误:`style= color: ...` / `style= backgroundColor: ...`
|
||
- 结果:Next 直接 build error(Expected '</', got 'ident')
|
||
|
||
2) **富文本/渲染吞双花括号**
|
||
|
||
- 在聊天/Notion 中书写 `style= ...` 容易被吞成“少一层花括号”,导致反复改错
|
||
- 结论:对话与文档中统一使用 `style={ { ... } }` 展示代码(永不丢花括号)
|
||
|
||
3) **token 失效导致 401(令牌过期或无效)**
|
||
|
||
- 现象:localStorage 有 token,但写请求 401
|
||
- 处理:清空旧 token → 重新登录签发 → 再验收 PUT 200
|
||
|
||
---
|
||
|
||
## 🧠 认知沉淀(以后怎么避免绕圈)
|
||
|
||
- **硬规则 1:TSX 里看到 `style=` 就立即检查是否是对象形式**
|
||
- 禁用:`style= color:` / `style= backgroundColor:`
|
||
- 允许:`style= ...` 或 `style={ { ... } }`
|
||
- **硬规则 2:代码只在 VS Code 改;对话只传证据链**
|
||
- 证据链最小集:localStorage token 有值 + Network PUT 200 + Bearer header 存在
|
||
- **硬规则 3:401 先走 SOP,不猜**
|
||
- token 是否存在 → header 是否带 Bearer → response detail → 再决定清 token 还是修代码
|
||
|
||
---
|
||
|
||
## 📌 当前状态
|
||
|
||
- GHCS v0.2 · API Keys 登录入口 + 写操作鉴权:**本地验收✅**
|
||
- 下一步(仍保持本地优先):全局 fetch 封装(自动带 Bearer + 统一 401 提示) |