[M-AI-07-03] 实现 Quiz Generation Executor 与题目输出验证 #322

Closed
opened 2026-06-22 20:23:23 +08:00 by wangdl · 1 comment
Owner

类型 / 标签

  • backend / quiz / ai / validation

风险等级

P1 — 验证缺失会导致非法输出进入数据库;Prompt 语义偏离会导致题目质量下降

依赖

  • M-AI-07-02

目标

将现有 Quiz AI Workflow 适配到统一 AiJob Engine,保持现有 Prompt、模型策略和题目语义。

Executor

新增 QuizGenerationExecutor。职责:从 Snapshot 构造模型输入、调用 AiGatewayService、使用冻结 Prompt、接收 AbortSignal、返回结构化输出、不写数据库。禁止:直接调用 Provider SDK、注入 PrismaService、直接创建 Quiz/Question、直接写 Job 状态、自行处理 BullMQ Retry。

Prompt 兼容

对比 Legacy Workflow:Prompt Key、Prompt Version、system message、user message、questionCount、questionTypes、difficulty、language、temperature、maxTokens、modelTier、output schema。不要求自然语言逐字相同,但不得改变业务语义。

Schema + Business Validator

按题型验证:单选题(≥2 选项、不重复、1 个正确答案)、多选题(≥2 选项、≥1 正确答案、不超限)、判断题(true/false)、主观题(无 options、有参考答案和解析)。通用规则:题目不重复、题干非空、解析非空、无 Markdown 代码围栏、无系统 Prompt、无模型指令、文本不超限、不引用 Snapshot 外知识点。

测试覆盖

正常输出、非法 JSON、空 Quiz、题数越界、非法题型、重复题目、重复选项、正确答案不存在、多选/判断答案错误、主观题无参考答案、超长文本、非法引用、AbortSignal、Provider 失败。

验收标准

  • 只通过 AiGateway
  • Prompt 兼容(promptKey/version/tier 一致)
  • 题型验证完整
  • 输出不可伪成功
  • 无数据库副作用
  • 单元测试通过(覆盖全部 14+ 场景)

建议执行顺序

第 3 个执行

## 类型 / 标签 - backend / quiz / ai / validation ## 风险等级 P1 — 验证缺失会导致非法输出进入数据库;Prompt 语义偏离会导致题目质量下降 ## 依赖 - M-AI-07-02 ## 目标 将现有 Quiz AI Workflow 适配到统一 AiJob Engine,保持现有 Prompt、模型策略和题目语义。 ## Executor 新增 `QuizGenerationExecutor`。职责:从 Snapshot 构造模型输入、调用 AiGatewayService、使用冻结 Prompt、接收 AbortSignal、返回结构化输出、不写数据库。禁止:直接调用 Provider SDK、注入 PrismaService、直接创建 Quiz/Question、直接写 Job 状态、自行处理 BullMQ Retry。 ## Prompt 兼容 对比 Legacy Workflow:Prompt Key、Prompt Version、system message、user message、questionCount、questionTypes、difficulty、language、temperature、maxTokens、modelTier、output schema。不要求自然语言逐字相同,但不得改变业务语义。 ## Schema + Business Validator 按题型验证:单选题(≥2 选项、不重复、1 个正确答案)、多选题(≥2 选项、≥1 正确答案、不超限)、判断题(true/false)、主观题(无 options、有参考答案和解析)。通用规则:题目不重复、题干非空、解析非空、无 Markdown 代码围栏、无系统 Prompt、无模型指令、文本不超限、不引用 Snapshot 外知识点。 ## 测试覆盖 正常输出、非法 JSON、空 Quiz、题数越界、非法题型、重复题目、重复选项、正确答案不存在、多选/判断答案错误、主观题无参考答案、超长文本、非法引用、AbortSignal、Provider 失败。 ## 验收标准 - [ ] 只通过 AiGateway - [ ] Prompt 兼容(promptKey/version/tier 一致) - [ ] 题型验证完整 - [ ] 输出不可伪成功 - [ ] 无数据库副作用 - [ ] 单元测试通过(覆盖全部 14+ 场景) ## 建议执行顺序 第 3 个执行
wangdl added this to the M-AI-07 Quiz 生成与题目产物统一引擎迁移 milestone 2026-06-22 20:23:23 +08:00
Author
Owner

开发完成评论

完成内容

  • 解决 A1/A2 阻塞项:创建 quiz-generation.prompt.ts + quiz-generation.schema.ts(从 Runtime 内联)
  • 注册到 PromptTemplateService (key=quiz-generation, version=1.0.0)
  • QuizGenerationExecutor: AiGateway 调用,primary tier, quiz-generation prompt
  • QuizGenerationValidator: 按题型验证 (choice options/index, judge true/false, fill answer, stem/explanation 非空, 重复检测, 模型指令检测)
  • Engine dispatch for quiz_generation job type
  • 20 tests (4 Executor + 16 Validator)

修改文件

  • src/modules/ai/prompts/quiz-generation.prompt.ts — new
  • src/modules/ai/prompts/schemas/quiz-generation.schema.ts — new
  • src/modules/ai/prompts/prompt-template.service.ts — modified (+6 lines)
  • src/modules/ai-job/quiz-generation-executor.ts — new
  • src/modules/ai-job/quiz-generation-validator.ts — new
  • src/modules/ai-job/quiz-generation-executor.spec.ts — new (20 tests)
  • src/modules/ai-job/ai-job-execution-engine.ts — modified (+19 lines)
  • src/modules/ai-job/ai-job-execution-engine.spec.ts — modified (+4 lines)
  • src/modules/ai-job/ai-job.module.ts — modified (+4 lines)

测试情况

  • 20 passed (new) + 526 passed (regression) = 0 failed

是否建议进入 Review

  • 是 — 建议进入 M-AI-07-04
## 开发完成评论 ### 完成内容 - 解决 A1/A2 阻塞项:创建 quiz-generation.prompt.ts + quiz-generation.schema.ts(从 Runtime 内联) - 注册到 PromptTemplateService (key=quiz-generation, version=1.0.0) - QuizGenerationExecutor: AiGateway 调用,primary tier, quiz-generation prompt - QuizGenerationValidator: 按题型验证 (choice options/index, judge true/false, fill answer, stem/explanation 非空, 重复检测, 模型指令检测) - Engine dispatch for quiz_generation job type - 20 tests (4 Executor + 16 Validator) ### 修改文件 - src/modules/ai/prompts/quiz-generation.prompt.ts — new - src/modules/ai/prompts/schemas/quiz-generation.schema.ts — new - src/modules/ai/prompts/prompt-template.service.ts — modified (+6 lines) - src/modules/ai-job/quiz-generation-executor.ts — new - src/modules/ai-job/quiz-generation-validator.ts — new - src/modules/ai-job/quiz-generation-executor.spec.ts — new (20 tests) - src/modules/ai-job/ai-job-execution-engine.ts — modified (+19 lines) - src/modules/ai-job/ai-job-execution-engine.spec.ts — modified (+4 lines) - src/modules/ai-job/ai-job.module.ts — modified (+4 lines) ### 测试情况 - 20 passed (new) + 526 passed (regression) = 0 failed ### 是否建议进入 Review - 是 — 建议进入 M-AI-07-04
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wangdl/api-server#322
No description provided.