QuestionExpansionService: Step1 - 获取直接关联知识点题目
added_count: 20, total_count: 20(expansion 未用 exclude,拿到 20 个 ID)
知识点组卷题池评估: pool_count_after_expand: 20, total_questions: 20
→ basePoolCount >= totalQuestions,mistake_question_ids = [](不传扩展结果)
从 paper_questions 获取学生已做题目: exclude_count: 219
应用知识点筛选: kp_codes 含 7 个(含 typo S06-002_003)
应用学段筛选: grade=11 → stage_grade=3(高中)
应用排除筛选: exclude_count=219
getQuestionsFromBank: 查询完成
raw_count: 7, total_needed: 0, database_query_count: 7
题目数量不足,将使用所有可用题目 (available: 7, requested: 20)
题型分配: choice 7, fill 0, answer 0(全部为选择题,填空/解答无题)
题型缺口补充: deficit=13, 最终仍为 7(无更多题目可补)
| 现象 | 原因 |
|---|---|
| total_needed: 0 | 调用 getQuestionsFromBank 时传入的第 5 参为 poolLimit=0 |
| 智能补充未执行 | 条件 totalNeeded > 0 && count < totalNeeded && grade !== null,因 totalNeeded=0 不成立 |
代码位置:LearningAnalyticsService.php 约 1456 行
$additionalQuestions = $this->getQuestionsFromBank(
...
$poolLimit, // ← 传入 0,导致 totalNeeded=0
...
);
智能补充条件(约 1801 行):
if ($totalNeeded > 0 && count($selectedQuestions) < $totalNeeded && $grade !== null) {
// 智能补充逻辑
}
当 totalNeeded=0 时,永远不进入智能补充。
S06-002_003(连字符),应为 S06_002_003(下划线)已修改:调用 getQuestionsFromBank 时传入 $needCount = $totalQuestions - count($priorityQuestions),使 totalNeeded > 0,从而在题目不足时触发智能补充。
S06-002_003 类 typoS06-002_003 自动规范为 S06_002_003