=test_update_homework_tests_and_work_log
Some checks failed
CI / build-deploy (push) Has been cancelled

This commit is contained in:
SpecialX
2026-03-19 13:16:49 +08:00
parent eb08c0ab68
commit 99f116cb64
70 changed files with 7470 additions and 20220 deletions

View File

@@ -242,6 +242,35 @@
- **目的**: 创建考试基础信息。
- **关键组件**: `ExamForm`
- **AI 生成执行逻辑**:
- **入口**:
- 选择 `Assembly Mode``AI Generation`
- 表单增加 `aiQuestionCount``aiPrompt`,提交时走 `createAiExamAction`
- **请求数据组装**:
- 复用基础字段:`title``subject``grade``difficulty``totalScore``durationMin``scheduledAt`
- 可选字段:`aiQuestionCount``aiPrompt`
- **服务端校验**:
- `AiExamCreateSchema` 校验基础字段与 AI 字段
- 解析失败直接返回 `Invalid form data`
- **AI 调用**:
- 通过 `createAiChatCompletion` 发送系统提示与用户输入
- 使用 `env.AI_MODEL`,默认 `gpt-4o-mini`
- 期望输出 JSON仅包含 `sections``questions`
- **响应解析**:
- `extractJson` 支持从纯 JSON 或代码块中提取
- `AiExamResponseSchema` 校验题型与字段结构
- 无题目返回 `AI returned no questions`
- **题目裁剪与分值归一化**:
- 若设置题量,按顺序裁剪题目或分组
- `normalizeScores``totalScore` 归一化各题分值
- **题目落库**:
- 将 AI 题目转换为题库格式 `{ text, options }`
- 写入 `questions` 表,并记录 `authorId`
- **结构与关联写入**:
- 生成 `structure`(按分组或平铺题目)
- 写入 `exams` 表,同时写入 `exam_questions`
- **后续跳转**:
- 创建成功后跳转 `/teacher/exams/[id]/build` 继续编辑
### 3.17 组卷 `/teacher/exams/[id]/build`
实现:[exams/[id]/build/page.tsx](file:///e:/Desktop/CICD/src/app/(dashboard)/teacher/exams/%5Bid%5D/build/page.tsx)