Files
wk-backend/codestable/refactors/2026-04-25-backend-cleanup/2026-04-25-backend-cleanup-apply-notes.md
zhilv 536aa506f9 refactor: 后端代码优化 11 项(codestable/refactors/2026-04-25-backend-cleanup)
- 提取 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>
2026-04-26 13:07:45 +08:00

77 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
doc_type: refactor-apply-notes
refactor: 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.goGetRecords 从 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, lastDebugSkipSSLVerifyprepareRequestClient 在配置未变化时直接返回
## 步骤 11: 修复 bufferHub.append 切片内存泄漏(#12
- 完成时间: 2026-04-26
- 改动文件: pkg/log/buffer.go
- 验证结果: go vet 通过go build 通过
- 偏离: 无
## 全量验证
- go vet ./... 通过
- go build ./... 通过