feat: 初始化考培练系统项目
- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
This commit is contained in:
43
backend/app/models/exam_mistake.py
Normal file
43
backend/app/models/exam_mistake.py
Normal file
@@ -0,0 +1,43 @@
|
||||
"""
|
||||
错题记录模型
|
||||
"""
|
||||
from sqlalchemy import Column, Integer, ForeignKey, Text, DateTime, func
|
||||
from sqlalchemy.orm import relationship
|
||||
from datetime import datetime
|
||||
from app.models.base import BaseModel
|
||||
|
||||
|
||||
class ExamMistake(BaseModel):
|
||||
"""错题记录表"""
|
||||
__tablename__ = "exam_mistakes"
|
||||
|
||||
# 核心关联字段
|
||||
user_id = Column(Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True, comment="用户ID")
|
||||
exam_id = Column(Integer, ForeignKey("exams.id", ondelete="CASCADE"), nullable=False, index=True, comment="考试ID")
|
||||
question_id = Column(Integer, ForeignKey("questions.id", ondelete="SET NULL"), nullable=True, index=True, comment="题目ID(AI生成的题目可能为空)")
|
||||
knowledge_point_id = Column(Integer, ForeignKey("knowledge_points.id", ondelete="SET NULL"), nullable=True, index=True, comment="关联的知识点ID")
|
||||
|
||||
# 题目核心信息
|
||||
question_content = Column(Text, nullable=False, comment="题目内容")
|
||||
correct_answer = Column(Text, nullable=False, comment="正确答案")
|
||||
user_answer = Column(Text, nullable=True, comment="用户答案")
|
||||
question_type = Column(Text, nullable=True, index=True, comment="题型(single/multiple/judge/blank/essay)")
|
||||
|
||||
# 掌握状态和统计字段
|
||||
mastery_status = Column(Text, nullable=False, default='unmastered', index=True, comment="掌握状态: unmastered-未掌握, mastered-已掌握")
|
||||
difficulty = Column(Text, nullable=False, default='medium', index=True, comment="题目难度: easy-简单, medium-中等, hard-困难")
|
||||
wrong_count = Column(Integer, nullable=False, default=1, comment="错误次数统计")
|
||||
mastered_at = Column(DateTime, nullable=True, comment="标记掌握时间")
|
||||
|
||||
# 审计字段(继承自BaseModel,但这里重写以匹配数据库实际结构)
|
||||
created_at = Column(DateTime, nullable=False, server_default=func.now(), comment="创建时间(北京时间)")
|
||||
updated_at = Column(DateTime, nullable=False, server_default=func.now(), onupdate=func.now(), comment="更新时间(北京时间)")
|
||||
|
||||
# 关系
|
||||
user = relationship("User", backref="exam_mistakes")
|
||||
exam = relationship("Exam", backref="mistakes")
|
||||
question = relationship("Question", backref="mistake_records")
|
||||
knowledge_point = relationship("KnowledgePoint", backref="mistake_records")
|
||||
|
||||
def __repr__(self):
|
||||
return f"<ExamMistake(id={self.id}, user_id={self.user_id}, exam_id={self.exam_id})>"
|
||||
Reference in New Issue
Block a user