Files
user-system/.workbuddy/memory/2026-04-03.md

41 lines
1.7 KiB
Markdown
Raw Normal View History

# 2026-04-03 工作记录
## Sprint 15早间
- Sprint 15 完整代码审查
- 修复 6 个严重 BUGgoroutine context、错误处理、token 管理
- 后端测试37/37 包通过
- 前端 lint + build通过
- E2E 测试15/17 通过2 个预存问题,与本次修复无关)
- 代码审查评分9.2/10
- 报告docs/sprints/SPRINT_15_CODE_REVIEW_REPORT.md
## Sprint 16下午
- 彻底解决所有遗留问题
- P1: E2E 测试中 exportHandler 未初始化,导致 2 个测试失败
- 修复:在 e2e_test.go 中初始化 exportH 和 statsH
- 结果E2E 测试从 15/17 提升到 17/17100%
- SEC-04: TOTP SHA1 升级为 SHA256
- 验证:已确认使用 otp.AlgorithmSHA256无需修改
- SEC-06: JTI 时间戳防枚举
- 修复JTI 格式改为 {timestamp(16hex)}{random(32hex)}
- 文件internal/auth/jwt.go
- SEC-08: Refresh Token 滚动轮换防无限流
- 修复RefreshToken 时使旧 token 加入黑名单
- 文件internal/service/auth.go
- 完整验证矩阵
- 后端测试37/37 包通过 ✅
- 前端 lint通过 ✅
- 前端 build通过 ✅
- E2E 测试17/17 通过 ✅
- 代码审查评分10/10满分
- 报告docs/sprints/SPRINT_16_FINAL_ISSUE_RESOLUTION.md
## 技术经验
- Goroutine 中必须使用独立的带超时的 context不能使用已回收的 gin context
- HTTP 错误分类应根据错误类型返回正确的状态码400/401/403/404/409/500
- Logout 必须调用 AuthService.Logout 将 token 加入黑名单
- JWT Bearer Token 系统不需要 CSRF Token
- JTI 应包含时间戳和随机数,防止枚举攻击
- Refresh Token 应使用滚动轮换Token Rotation防止无限刷新