package models import ( "time" "gorm.io/gorm" ) // Exam 考试记录 type Exam struct { ID uint `gorm:"primarykey" json:"id"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` UserID uint `json:"user_id"` // 用户ID QuestionIDs string `gorm:"type:text" json:"question_ids"` // 题目ID列表(JSON数组) Answers string `gorm:"type:text" json:"answers"` // 用户答案(JSON对象) Score float64 `json:"score"` // 总分 Status string `gorm:"default:'draft'" json:"status"` // 状态: draft/submitted SubmittedAt *time.Time `json:"submitted_at"` // 提交时间 User User `gorm:"foreignKey:UserID" json:"user,omitempty"` } // ExamQuestionConfig 考试题目配置 type ExamQuestionConfig struct { FillInBlank int `json:"fill_in_blank"` // 填空题数量 TrueFalse int `json:"true_false"` // 判断题数量 MultipleChoice int `json:"multiple_choice"` // 单选题数量 MultipleSelection int `json:"multiple_selection"` // 多选题数量 ShortAnswer int `json:"short_answer"` // 简答题数量 OrdinaryEssay int `json:"ordinary_essay"` // 普通涉密人员论述题数量 ManagementEssay int `json:"management_essay"` // 保密管理人员论述题数量 } // DefaultExamConfig 默认考试配置 var DefaultExamConfig = ExamQuestionConfig{ FillInBlank: 10, // 填空题10道 TrueFalse: 10, // 判断题10道 MultipleChoice: 10, // 单选题10道 MultipleSelection: 10, // 多选题10道 ShortAnswer: 2, // 简答题2道 OrdinaryEssay: 1, // 普通论述题1道 ManagementEssay: 1, // 管理论述题1道 } // ExamScoreConfig 考试分值配置 type ExamScoreConfig struct { FillInBlank float64 `json:"fill_in_blank"` // 填空题分值 TrueFalse float64 `json:"true_false"` // 判断题分值 MultipleChoice float64 `json:"multiple_choice"` // 单选题分值 MultipleSelection float64 `json:"multiple_selection"` // 多选题分值 Essay float64 `json:"essay"` // 论述题分值 } // DefaultScoreConfig 默认分值配置 var DefaultScoreConfig = ExamScoreConfig{ FillInBlank: 2.0, // 填空题每题2分 (共20分) TrueFalse: 2.0, // 判断题每题2分 (共20分) MultipleChoice: 1.0, // 单选题每题1分 (共10分) MultipleSelection: 2.5, // 多选题每题2.5分 (共25分) Essay: 25.0, // 论述题25分 }