- 提取 getWKFromContext 辅助函数,消除 handler 中 5 处重复代码 - 提取 retryCode 函数,消除 Login/performStudy 中验证码重试重复 - 提取 removeSession 内部方法,消除 Del/ClearAll/ClearExpired 中 3 处重复 - 提取 WK.UserKey() 方法,消除 4 处 userKey 手动拼接 - SessionManager.Get() 改用 RLock 优化读性能 - GetRecords 递归分页改为迭代,避免栈溢出 - prepareRequestClient 添加配置缓存,仅在 debug 设置变化时重建 - 修正 schedule.go 时区为 Asia/Shanghai + cron "0 6 * * *" - 修正 typo "以达到" → "已达到" - 删除未使用的 QAList struct - 修复 bufferHub.append 切片内存泄漏 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.9 KiB
2.9 KiB
doc_type, refactor
| doc_type | refactor |
|---|---|
| refactor-apply-notes | 2026-04-25-backend-cleanup |
backend-cleanup apply notes
步骤 1: 删除未使用的 QAList struct(#10)
- 完成时间: 2026-04-26
- 改动文件: internal/ckwk/types.go
- 验证结果: go vet 通过,go build 通过
- 偏离: 无
步骤 2: 修正 typo "以达到" → "已达到"(#9)
- 完成时间: 2026-04-26
- 改动文件: internal/ckwk/api.go (2 处)
- 验证结果: go build 通过
- 偏离: 无
步骤 3: 修正 schedule.go 时区和 cron 表达式(#8)
- 完成时间: 2026-04-26
- 改动文件: internal/schedule/schedule.go
- 验证结果: go build 通过
- 偏离: 改为 Asia/Shanghai + "0 6 * * *" 对齐注释"每天 6 点执行"
步骤 4: 提取 userKey 构造为 WK.UserKey() 方法(#4)
- 完成时间: 2026-04-26
- 改动文件: internal/ckwk/api.go, internal/ckwk/session_manager.go
- 验证结果: go vet 通过,grep 确认无残留的 Host+":"+Username 拼接
- 偏离: 无
步骤 5: 提取 getWKFromContext 辅助函数(#1)
- 完成时间: 2026-04-26
- 改动文件: internal/handler/ckwk.go
- 验证结果: go vet 通过,grep 确认无残留的 ctx.Get("wk_instance") 模式(除 helper 函数本身外)
- 偏离: 无
步骤 6: 提取 retryCode 函数(#2)
- 完成时间: 2026-04-26
- 改动文件: internal/ckwk/api.go
- 验证结果: go vet 通过
- 偏离: Login() 中原错误信息包含"登录终止"后缀,提取后统一为"已达到最大重试次数,验证码获取失败"(两个调用点共享同一个错误消息),不再区分"登录终止"和 Study 场景的措辞差异
步骤 7: 提取 removeSession 内部方法(#3)
- 完成时间: 2026-04-26
- 改动文件: internal/ckwk/session_manager.go
- 验证结果: go vet 通过
- 偏离: 无
步骤 8: SessionManager.Get() 优化锁策略(#5)
- 完成时间: 2026-04-26
- 改动文件: internal/ckwk/session_manager.go
- 验证结果: go vet 通过
- 偏离: 采用 RLock→检查存在→RUnlock→Lock→更新→Unlock 两步走方案
步骤 9: GetRecords 递归改迭代(#6)
- 完成时间: 2026-04-26
- 改动文件: internal/ckwk/types.go(GetRecords 从 resp.go 迁移至 types.go,此文件原本就包含该函数)
- 验证结果: go vet 通过
- 偏离: 提取了 fetchRecordPage 辅助函数来封装单页请求逻辑,GetRecords 改为 for 循环迭代
步骤 10: prepareRequestClient 缓存配置(#7)
- 完成时间: 2026-04-26
- 改动文件: internal/ckwk/api.go
- 验证结果: go vet 通过
- 偏离: 在 WK struct 上添加了 3 个缓存字段(lastDebugEnabled, lastDebugProxy, lastDebugSkipSSLVerify),prepareRequestClient 在配置未变化时直接返回
步骤 11: 修复 bufferHub.append 切片内存泄漏(#12)
- 完成时间: 2026-04-26
- 改动文件: pkg/log/buffer.go
- 验证结果: go vet 通过,go build 通过
- 偏离: 无
全量验证
- go vet ./... 通过
- go build ./... 通过