mirror of
https://github.com/R0m1k3/Reviflow.git
synced 2026-10-16 03:38:52 +02:00
51 lines
1.3 KiB
Python
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
|