# Log 清理说明

## 原则

- **保留**：错误、警告、关键流程节点（组卷完成、试卷保存、PDF 生成成功）
- **降为 DEBUG**：步骤明细、中间状态、每题/每请求的调试信息

## 主要改动

### LearningAnalyticsService

| 原级别 | 现级别 | 说明 |
|--------|--------|------|
| INFO 应用知识点/学段/排除/题目分类筛选 | 移除 | 每步筛选冗余 |
| INFO getQuestionsFromBank: 从本地数据库查询题目 | 移除 | 与「查询完成」重复 |
| INFO 题目筛选过程详情 | 移除 | 与「查询完成」合并 |
| INFO 开始/返回 getQuestionsFromBank | 合并为一条「完成」 | 减少重复 |
| INFO 难度分布检查/应用/完成 | 部分移除，完成降为 DEBUG | 步骤过多 |
| INFO selectQuestionsByMastery 各阶段 | 降为 DEBUG | 步骤明细 |
| INFO 准备调用/开始调用 getQuestionsFromBank | 降为 DEBUG | 与主流程重复 |
| INFO 薄弱点、教材出卷等 | 降为 DEBUG | 非关键路径 |

### ExamTypeStrategy

| 原级别 | 现级别 | 说明 |
|--------|--------|------|
| INFO 构建组卷参数、assembleType 映射 | 降为 DEBUG | 每次请求 |
| INFO 知识点组卷/教材组卷参数构建 | 降为 DEBUG | 步骤明细 |
| INFO 从 paper_questions 获取学生已做题目 | 降为 DEBUG | 与 exclude_count 重复 |
| INFO 应用难度系数分布 | 降为 DEBUG | 步骤明细 |

### ExamPdfController

| 原级别 | 现级别 | 说明 |
|--------|--------|------|
| INFO paper_questions表原始数据（含 sample_questions） | 降为 DEBUG，仅 question_count | 避免泄露题目内容 |
| INFO 题目类型判断 | 降为 DEBUG | 每题一条，量过大 |

### PdfMerger

| 原级别 | 现级别 | 说明 |
|--------|--------|------|
| INFO 检测到pdfunite | 降为 DEBUG | 每次 PDF 合并 |

### IntelligentExamController

| 原级别 | 现级别 | 说明 |
|--------|--------|------|
| INFO adjustQuestionScores、题目已按题型内难度排序 | 降为 DEBUG | 步骤明细 |

## 保留的 INFO 日志（示例）

- `generateIntelligentExam 开始`（精简版）
- `getQuestionsFromBank: 查询完成`
- `getQuestionsFromBank: 指定知识点题目不足，尝试智能补充`（WARNING）
- `getSupplementaryQuestionsForGrade: 开始智能补充`
- `getQuestionsFromBank: 智能补充完成`
- `getQuestionsFromBank 完成`
- `selectQuestionsByMastery 完成`
- `试卷保存成功`
- `generateUnifiedPdf 全部完成`
- 所有 ERROR、关键 WARNING

## 查看调试日志

需要排查问题时，将 `.env` 中 `LOG_LEVEL=debug` 即可恢复上述 DEBUG 日志。
