题库质检方案.md 2.8 KB

题库质检方案

一、背景

questions_tem 表预期结构(与 questions 对齐)

字段 说明
id 主键
stem / content 题干
answer / correct_answer 答案
solution 解析
question_type / tags 题型
options 选项(JSON)
kp_code 知识点
  • 待入库题目在 questions_tem 中,约 2 万道
  • 需与 questions 正式表比对,确保不重复
  • 入库前严格校验,以学案/PDF 导出场景验证

二、质检机制

2.1 题目质检(自动 + 人工)

校验项 说明 自动 人工
缺题干 stem 题干为空或过短
缺答案 answer 答案为空
缺解析 solution 解答题为空需标记
选择题缺选项 choice 题型 options 为空或不足
公式乱码 LaTeX 解析失败、出现未渲染符
PDF 呈现 实际导出 PDF 是否乱码/错位

2.2 学案质检(可撤销)

  • 学案使用场景:PDF 导出验证
  • 连续 10000 份 无误 → 可撤销该环节以节省成本

2.3 结果记录

  • 质检结果由命令输出,不落库(避免本地库覆盖导致表丢失)
  • 后续可接入 question_qc_results 等表做持久化

三、校验规则清单(可扩展)

rule_code 名称 说明
STEM_EMPTY 题干为空 stem 为空或 trim 后长度 < 5
ANSWER_EMPTY 答案为空 answer 为空
SOLUTION_EMPTY 解析为空 solution 为空(解答题强校验)
CHOICE_OPTIONS_MISSING 选择题缺选项 question_type=choice 时 options 为空或非数组
FORMULA_INVALID 公式异常 LaTeX 定界符不匹配、无法解析
PDF_RENDER_FAIL PDF 渲染失败 导出 PDF 后检测乱码/空白

四、筛选逻辑(从下学期章节开始)

  1. 获取下学期教材章节(textbooks.semester_code 或类似)
  2. 通过 textbook_chapter_knowledge_relation 得到章节关联的 kp_code
  3. 统计 questions 中每个 kp_code 的题目数量
  4. 按题数升序:优先选「题少的 KP」补充
  5. questions_tem 中筛选该 KP 的题目 → 质检 → 合格后入库

五、命令用法

# 按下学期题少 KP 筛选,质检 100 题
php artisan question:qc

# 指定知识点
php artisan question:qc --kp=S01

# 仅筛选不质检
php artisan question:qc --dry-run

# 指定教材、学期
php artisan question:qc --textbook=1 --semester=2 --limit=50

六、流程

questions_tem 选题(按下学期 KP 题少优先)
    → 自动质检(规则引擎)
    → 记录 auto_result
    → (可选)PDF 导出预演,检测渲染
    → 人工复核,记录 manual_result
    → 全部通过 → 入库 questions