feat: initialize AutoTeacher Next.js project structure
This commit is contained in:
71
src/lib/validators.ts
Normal file
71
src/lib/validators.ts
Normal file
@ -0,0 +1,71 @@
|
||||
import { z } from "zod";
|
||||
|
||||
export const courseSchema = z.object({
|
||||
name: z.string().min(1, "课程名称不能为空"),
|
||||
description: z.string().optional(),
|
||||
});
|
||||
|
||||
export const classroomSchema = z.object({
|
||||
name: z.string().min(1, "班级名称不能为空"),
|
||||
description: z.string().optional(),
|
||||
courseId: z.number().int().positive(),
|
||||
});
|
||||
|
||||
export const assignmentSchema = z.object({
|
||||
title: z.string().min(1, "作业标题不能为空"),
|
||||
description: z.string().optional(),
|
||||
courseId: z.number().int().positive(),
|
||||
classroomId: z.number().int().positive(),
|
||||
gradingCriteria: z.string().optional(),
|
||||
autoEvaluate: z.boolean().optional(),
|
||||
formSchema: z
|
||||
.object({
|
||||
fields: z
|
||||
.array(
|
||||
z.object({
|
||||
name: z.string().min(1),
|
||||
label: z.string().min(1),
|
||||
type: z.enum(["text", "textarea"]).default("text"),
|
||||
placeholder: z.string().optional(),
|
||||
required: z.boolean().optional(),
|
||||
}),
|
||||
)
|
||||
.default([]),
|
||||
file_upload: z
|
||||
.object({
|
||||
accept: z.array(z.string()).default([".pdf"]),
|
||||
label: z.string().optional(),
|
||||
})
|
||||
.default({ accept: [".pdf"], label: "上传 PDF 文件" }),
|
||||
})
|
||||
.default({
|
||||
fields: [
|
||||
{
|
||||
name: "student_id",
|
||||
label: "学号",
|
||||
type: "text",
|
||||
placeholder: "请输入学号",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: "student_name",
|
||||
label: "姓名",
|
||||
type: "text",
|
||||
placeholder: "请输入姓名",
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
file_upload: { accept: [".pdf"], label: "上传 PDF 文件" },
|
||||
}),
|
||||
});
|
||||
|
||||
export const submissionSchema = z.object({
|
||||
formPayload: z.record(z.any()).optional(),
|
||||
studentId: z.string().min(1, "学号不能为空"),
|
||||
studentName: z.string().min(1, "姓名不能为空"),
|
||||
});
|
||||
|
||||
export const assignmentUpdateSchema = z.object({
|
||||
gradingCriteria: z.string().nullable().optional(),
|
||||
autoEvaluate: z.boolean().optional(),
|
||||
});
|
||||
Reference in New Issue
Block a user