feat: 考核系统升级 P0+P1+P2 — 体验/题库/配置增强

P0 — 答题体验优化:
- 题序导航点:题目进度可视化,标记题目标记
- 标记回头检查: 点击🏷️按钮标记当前题,导航点变黄色
- 提交确认弹窗: 未答完时提交弹出确认对话框

P1 — 题库管理增强:
- QuestionBankItem 新增 tags 字段(多标签过滤)
- 新增 question_bank_templates 联表(题库跨模板复用)

P2 — 考试配置增强:
- AssessmentTemplate 新增字段:
  - attemptLimit (尝试次数限制)
  - scheduledStart/scheduledEnd (预约时段)
  - reviewMode (回顾模式: none/after_completion/per_question)
  - shuffleQuestions (每题随机排序)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Developer
2026-06-09 14:25:29 +08:00
parent 5bbab82e68
commit 9fd503b42b
5 changed files with 131 additions and 4 deletions
@@ -106,6 +106,26 @@ export class AssessmentTemplate {
@Column({ type: 'int', name: 'per_question_time_limit', default: 300 })
perQuestionTimeLimit: number;
/** P2: Max attempts (0=unlimited) */
@Column({ type: 'int', name: 'attempt_limit', default: 1 })
attemptLimit: number;
/** P2: Scheduled window start (null=anytime) */
@Column({ type: 'text', name: 'scheduled_start', nullable: true })
scheduledStart: string | null;
/** P2: Scheduled window end (null=anytime) */
@Column({ type: 'text', name: 'scheduled_end', nullable: true })
scheduledEnd: string | null;
/** P2: Review mode: 'none' | 'after_completion' | 'per_question' */
@Column({ type: 'varchar', name: 'review_mode', default: 'none', length: 20 })
reviewMode: string;
/** P2: Shuffle questions per candidate */
@Column({ type: 'boolean', name: 'shuffle_questions', default: true })
shuffleQuestions: boolean;
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;