41 lines
1.7 KiB
Markdown
41 lines
1.7 KiB
Markdown
|
|
# 2026-04-03 工作记录
|
|||
|
|
|
|||
|
|
## Sprint 15(早间)
|
|||
|
|
- Sprint 15 完整代码审查
|
|||
|
|
- 修复 6 个严重 BUG:goroutine 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/17(100%)
|
|||
|
|
- 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)防止无限刷新
|
|||
|
|
|