--- 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.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 ./... 通过