以复杂数据结构自动化试卷与答案生成的英语测验制作工具。
- 框架:
Next.js
- 组件库:
NextUI
- 数据库:
Xata
- 用户管理:
Clerk
按照 @/schema.json
初始化 Xata 数据库并填充环境变量后运行:
npm install
npm run dev
/components
/editory
— 编辑界面/editor
— 编辑器-
/fishing
— 小猫钓鱼题 -
/cloze
— 完形填空 -
/grammar
— 语法填空 -
/sentence
— 六选四 -
/reading
— 阅读理解 -
/listening
— 听力 -
/custom
— 自定义文本块
-
/paper
— 试卷展示/key
— 答案展示
/utils
/generators
— 生成试卷、答案、可导出 Word 格式/types
— 类型声明
export type Question = {
q: string
a: string[]
correct: number // index of the correct answer
}
export type ListeningQuestion = Question & {
transcript: string
}
export type ListeningData = {
id: string
type: 'listening'
questions: ListeningQuestion[]
}
export type GrammarData = {
id: string
text: string
type: 'grammar'
hints: Record<string, string | undefined>
}
export type FishingData = {
id: string
text: string
type: 'fishing'
distractors: string[]
markerSet: string[] // 字母记号集,可应对仅ABCD的答题卡
}
注:挖空部分在 text
中以 <code></code>
包裹,下同。
export type ClozeData = {
id: string
text: string
type: 'cloze'
distractors: Record<string, string[]> // { '被挖空词': ['干扰项1'. '干扰项2', '干扰项3'] }
}
export type ReadingQuestion = Question
export type ReadingData = {
id: string
text: string
type: 'reading'
questions: ReadingQuestion[]
}
export type SentenceChoiceData = {
id: string
text: string
type: '4/6'
distractors: string[]
}
export type CustomData = {
id: string
type: 'custom'
paper: string
key: string
}
- 导出 Word UI 优化
- 去除挖空词内部格式
- 添加听力的
4x1
、2x2
、1x4
排版模式 - 全局
directions
显示开关 - 全局
I. Listening Comprehension
、Section A
等格式开关 - 多题块分离渲染