Files
xyzw_web_helper/MD说明文件夹/BUG修复-答题日志开关失效v3.13.5.6.md
2025-10-17 20:56:50 +08:00

4.5 KiB
Raw Blame History

🐛 BUG修复 - 答题日志开关失效 v3.13.5.6

📋 问题描述

用户在"日志打印控制"中关闭了"一键答题"的日志开关,但控制台仍然显示大量答题相关的日志信息,例如:

  • 📚 正在加载答题数据...
  • 📖 成功加载 XXX 道题目
  • ✅ 找到匹配题目: "..." -> 答案: X
  • ⚠️ 未找到题目匹配: "..."
  • 🔄 答题数据缓存已清除

🔍 问题原因

答题功能的日志有两个来源:

  1. batchTaskStore.js - 批量任务执行逻辑

    • 已使用 taskLog('autoStudy', ...) 正确控制日志
  2. 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
...

修复后

关闭答题日志开关 ✅
↓
控制台清爽无日志 🎉

📍 如何使用

在批量任务面板中:

  1. 点击 "自定义模板" 按钮
  2. 在弹窗底部找到 "日志打印控制"
  3. 找到 "一键答题" 开关
  4. 关闭开关即可隐藏所有答题相关日志

📂 修改的文件

  • src/utils/studyQuestionsFromJSON.js
    • 新增 shouldLog() 函数第13-24行
    • 所有 console.log/warn/error 改为条件日志13处

测试建议

  1. 关闭答题日志开关

  2. 执行一键答题任务

  3. 打开控制台F12

  4. 确认没有答题相关的日志输出

  5. 再次打开答题日志开关

  6. 执行一键答题任务

  7. 确认答题日志正常显示


💡 技术说明

为什么不导入 batchTaskStore

考虑过直接导入 batchTaskStore 来访问 logConfig,但这会造成:

  1. 循环依赖风险(如果 batchTaskStore 引用了这个工具)
  2. Store 初始化时序问题(工具可能在 Store 之前加载)
  3. 模块耦合度增加

因此采用直接读取 localStorage 的方式,优点:

  • 无依赖,独立运行
  • 配置实时生效
  • 读取失败时有默认值(不输出日志)
  • 性能影响极小(只在日志时读取一次)

📌 版本信息

  • 版本号v3.13.5.6
  • 修复日期2025-10-11
  • 影响范围:一键答题功能的日志输出
  • 向后兼容:是

🚀 相关问题

如果发现其他任务(如爬塔、补差等)也有类似的日志开关失效问题,请反馈,我们会统一修复。