Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc [SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
2.4 KiB
2.4 KiB
执行记录 · 2026-06-11 · GHCS v0.2 登录入口闭环验收(本地)
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 的启用/停用状态可切换并生效
🧱 本次遇到的问题(根因)
- 前端编译错误:TSX 的 style 写法错
- 典型错误:
style= color: .../style= backgroundColor: ... - 结果:Next 直接 build error(Expected '</', got 'ident')
- 富文本/渲染吞双花括号
- 在聊天/Notion 中书写
style= ...容易被吞成“少一层花括号”,导致反复改错 - 结论:对话与文档中统一使用
style={ { ... } }展示代码(永不丢花括号)
- 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 提示)