4.5 KiB
4.5 KiB
🐛 BUG修复 - 答题日志开关失效 v3.13.5.6
📋 问题描述
用户在"日志打印控制"中关闭了"一键答题"的日志开关,但控制台仍然显示大量答题相关的日志信息,例如:
📚 正在加载答题数据...📖 成功加载 XXX 道题目✅ 找到匹配题目: "..." -> 答案: X⚠️ 未找到题目匹配: "..."🔄 答题数据缓存已清除
🔍 问题原因
答题功能的日志有两个来源:
-
batchTaskStore.js- 批量任务执行逻辑- ✅ 已使用
taskLog('autoStudy', ...)正确控制日志
- ✅ 已使用
-
studyQuestionsFromJSON.js- 答题数据加载和匹配逻辑- ❌ 直接使用
console.log()输出日志,不受日志配置控制
- ❌ 直接使用
根本原因:studyQuestionsFromJSON.js 是一个独立的工具模块,没有接入批量任务的日志配置系统。
✅ 修复方案
在 studyQuestionsFromJSON.js 中添加日志配置检查函数:
/**
* 🔧 v3.13.5.6: 获取日志配置
* 检查是否启用答题日志
*/
const shouldLog = () => {
try {
const config = localStorage.getItem('batchTaskLogConfig')
if (config) {
const logConfig = JSON.parse(config)
return logConfig.autoStudy === true
}
} catch (e) {
// 如果读取失败,默认不输出日志
}
return false
}
然后将所有的 console.log/warn/error 改为条件日志:
// 修改前
console.log('📚 正在加载答题数据...')
// 修改后
if (shouldLog()) console.log('📚 正在加载答题数据...')
📊 修改的日志
修改了以下13处日志输出:
| 类型 | 原日志内容 | 位置 |
|---|---|---|
console.log |
📚 正在加载答题数据... |
loadQuestionsData() |
console.warn |
标准 JSON.parse 失败,尝试转换... |
loadQuestionsData() |
console.warn |
JSON 转换失败,尝试使用 eval 解析 |
loadQuestionsData() |
console.error |
所有解析方法都失败了 |
loadQuestionsData() |
console.log |
📖 成功加载 X 道题目 |
loadQuestionsData() |
console.error |
❌ 加载答题数据失败 |
loadQuestionsData() |
console.warn |
⚠️ 题目数据为空 |
findAnswer() |
console.log |
✅ 找到匹配题目... |
findAnswer() |
console.log |
⚠️ 未找到题目匹配 |
findAnswer() |
console.error |
❌ 查找答案时出错 |
findAnswer() |
console.log |
📚 答题数据预加载完成 |
preloadQuestions() |
console.error |
❌ 答题数据预加载失败 |
preloadQuestions() |
console.log |
🔄 答题数据缓存已清除 |
clearCache() |
🎯 修复效果
修复前
关闭答题日志开关 ❌
↓
控制台仍然显示:
📚 正在加载答题数据...
📖 成功加载 1500 道题目
✅ 找到匹配题目: "..." -> 答案: 1
✅ 找到匹配题目: "..." -> 答案: 2
...
修复后
关闭答题日志开关 ✅
↓
控制台清爽无日志 🎉
📍 如何使用
在批量任务面板中:
- 点击 "自定义模板" 按钮
- 在弹窗底部找到 "日志打印控制"
- 找到 "一键答题" 开关
- 关闭开关即可隐藏所有答题相关日志
📂 修改的文件
src/utils/studyQuestionsFromJSON.js- 新增
shouldLog()函数(第13-24行) - 所有
console.log/warn/error改为条件日志(13处)
- 新增
✅ 测试建议
-
关闭答题日志开关
-
执行一键答题任务
-
打开控制台(F12)
-
确认没有答题相关的日志输出
-
再次打开答题日志开关
-
执行一键答题任务
-
确认答题日志正常显示
💡 技术说明
为什么不导入 batchTaskStore?
考虑过直接导入 batchTaskStore 来访问 logConfig,但这会造成:
- 循环依赖风险(如果 batchTaskStore 引用了这个工具)
- Store 初始化时序问题(工具可能在 Store 之前加载)
- 模块耦合度增加
因此采用直接读取 localStorage 的方式,优点:
- ✅ 无依赖,独立运行
- ✅ 配置实时生效
- ✅ 读取失败时有默认值(不输出日志)
- ✅ 性能影响极小(只在日志时读取一次)
📌 版本信息
- 版本号:v3.13.5.6
- 修复日期:2025-10-11
- 影响范围:一键答题功能的日志输出
- 向后兼容:是
🚀 相关问题
如果发现其他任务(如爬塔、补差等)也有类似的日志开关失效问题,请反馈,我们会统一修复。