| from typing import Literal, Any, List, Optional |
| from pydantic import BaseModel, Field |
|
|
| |
| class DiagnosticQuestion(BaseModel): |
| id: str |
| question: str |
| options: List[str] |
| correct_answer_index: int |
| category: Literal["concept", "memory", "diagram", "answer_writing", "problem_solving"] |
|
|
| class DiagnosticQuiz(BaseModel): |
| id: str |
| document_id: str |
| questions: List[DiagnosticQuestion] |
|
|
| class DiagnosticAnswer(BaseModel): |
| question_id: str |
| answer_index: int |
|
|
| class DiagnosticResultRequest(BaseModel): |
| document_id: str |
| answers: List[DiagnosticAnswer] |
|
|
| class DiagnosticResultResponse(BaseModel): |
| student_level: Literal["beginner", "intermediate", "advanced"] |
| weak_areas: List[str] |
| analysis: str |
|
|
| |
| class TopicItem(BaseModel): |
| topic: str |
| reason: str |
|
|
| class WhatToStudyResponse(BaseModel): |
| must_study_topics: List[TopicItem] |
| high_weightage_topics: List[TopicItem] |
| repeated_pyq_topics: List[TopicItem] |
| low_priority_topics: List[TopicItem] |
| skip_for_now_topics: List[TopicItem] |
| revision_keywords: List[str] |
| easy_marks: List[TopicItem] |
| danger_areas: List[TopicItem] |
| study_order: List[str] |
|
|
| |
| class StudyTimeBlock(BaseModel): |
| time_block: str |
| topic: str |
| reason: str |
| task: str |
| output_expected: str |
| revision_checkpoint: str |
|
|
| class StudyPathResponse(BaseModel): |
| plan_type: Literal["1h", "3h", "5h", "7d", "30d"] |
| blocks: List[StudyTimeBlock] |
| total_estimated_coverage: str |
|
|
| |
| class MarkWiseAnswer(BaseModel): |
| question: str |
| marks: int |
| answer_structure: str |
| key_points: List[str] |
| diagram_suggested: bool |
|
|
| class ExamIntelligenceResponse(BaseModel): |
| chapter: str |
| topic_importance: str |
| pyq_pattern: str |
| likely_question_types: List[str] |
| answers: List[MarkWiseAnswer] |
| common_mistakes: List[str] |
| keywords_to_underline: List[str] |
|
|
| |
| class VideoScene(BaseModel): |
| scene_number: int |
| label: str |
| script_text: str = "" |
| visual_suggestion: str |
|
|
| class VideoPlanResponse(BaseModel): |
| title: str |
| duration_type: Literal["quick_concept", "exam_focus", "deep_masterclass", "full_chapter_war_mode"] |
| style: Literal["normal_teacher", "visual_tutor", "anime_tutor", "malayalam_english_tutor", "exam_war_mode"] |
| hook: str |
| analogy: str |
| sections: List[VideoScene] |
| mini_quiz: List[DiagnosticQuestion] |
| recap: str |
|
|