feat(教程): 改练一练时可以顺手清空学生的作答——改了答案,按旧答案做对的人不再算做对
Deploy / deploy (push) Canceled after 0s

练一练是原地改的,作答记录跟着题走:改了答案或选项,按旧答案做对的人仍然显示做对、
「最后错在 选了 B」说的也是旧选项。编辑框底下多一个「同时清空学生的作答(N 人做过)」,
没人做过时不出现;勾上保存,学生那边这道题回到没做。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
xuyueandClaude Opus 5.5 committed 2026-10-16 12:28:47 +08:00
1 parent 1ebb23cdac
commit a814776fb9
4 files changed
+79 -22

No files matched your search

+14 -4
View File
@@ -167,6 +167,8 @@ export const adminExerciseSchema = z.object({
type: exerciseTypeSchema,
data: z.record(z.string(), z.unknown()),
order: z.number().int(),
/** 几个人做过(有作答记录)。编辑时据此决定要不要问「清空作答」 */
attemptUsers: z.number().int(),
})
export const createExerciseRequestSchema = z.object({
@@ -176,10 +178,18 @@ export const createExerciseRequestSchema = z.object({
order: z.number().int().default(0),
})
export const updateExerciseRequestSchema = createExerciseRequestSchema.omit({
// 练习不支持改挂到别的教程下 —— 旧 EditExerciseSerializer 也没有 tutorial_id
tutorialId: true,
})
export const updateExerciseRequestSchema = createExerciseRequestSchema
.omit({
// 练习不支持改挂到别的教程下 —— 旧 EditExerciseSerializer 也没有 tutorial_id
tutorialId: true,
})
.extend({
/**
* 同时清空这道题所有人的作答。练习是原地改的,作答记录跟着题 id 走:
* 改了答案或选项,按旧答案做对的人仍然算做对、「最后错在」说的也是旧选项
*/
resetAttempts: z.boolean().default(false),
})
// ---------------------------------------------------------------- AI 报告