Files
Reviflow/backend/app/modules/quiz/schemas.py
T

51 lines
1.3 KiB
Python

from pydantic import BaseModel
from typing import List, Optional
from datetime import datetime
import uuid
class QuizRequest(BaseModel):
text_content: str
title: Optional[str] = None
subject: Optional[str] = None
difficulty: str = "medium"
learner_id: Optional[uuid.UUID] = None # To link revision
synthesis: Optional[str] = None
study_tips: Optional[List[str]] = None
class Question(BaseModel):
id: int
question: str
options: List[str]
correct_answer: int # Index of the correct option (0-3)
explanation: str
class QuizResponse(BaseModel):
topic: str
questions: List[Question]
revision_id: Optional[uuid.UUID] = None
class QuestionResult(BaseModel):
question: str
user_answer: str
correct_answer: str
is_correct: bool
original_content: Optional[str] = None # To trace back to source text
class ScoreCreate(BaseModel):
topic: str
score: int
total_questions: int
learner_id: Optional[uuid.UUID] = None
details: List[QuestionResult] = []
revision_id: Optional[uuid.UUID] = None
class ScoreResponse(BaseModel):
id: uuid.UUID
topic: str
score: int
total_questions: int
created_at: datetime
learner_id: Optional[uuid.UUID] = None
new_badges: List[str] = []
revision_id: Optional[uuid.UUID] = None