DocDoeAI / app /schemas /study_path.py
asnannp's picture
Deploy backend cd4237ff: support routes + rate limit + exam_date nullable + upload 413 fix
7c6ffa6
Raw
History Blame Contribute Delete
1.69 kB
from __future__ import annotations
from typing import Any
from pydantic import BaseModel, Field
class StudyPathRequest(BaseModel):
raw_text: str | None = None
syllabus_text: str | None = None
source_id: str | None = None
source_ids: list[str] | None = None
study_profile_id: str | None = None
use_my_profile: bool = True
topic: str | None = None
subject: str | None = None
exam: str | None = None
goal: str | None = None
time_left: str | None = None
level: str | None = None
language_preference: str | None = None
class TimelineItem(BaseModel):
order: int
title: str
duration_minutes: int
reason: str
reason_type: str
task: str
expected_output: str
actions: list[str] = Field(default_factory=list)
source_basis: str
day_block: str | None = None
class StudyPathResult(BaseModel):
title: str
exam: str | None
subject: str | None
topic: str | None
goal: str | None
time_left: str | None
level: str | None
plan_type: str = "standard"
plan_label: str = "Study plan"
plan_tip: str | None = None
readiness_score: float
next_best_action: str
study_timeline: list[TimelineItem] = Field(default_factory=list)
weak_areas: list[str] = Field(default_factory=list)
easy_marks: list[str] = Field(default_factory=list)
danger_areas: list[str] = Field(default_factory=list)
revision_keywords: list[str] = Field(default_factory=list)
source_basis: str = "generic_topic_template"
trust_notes: list[str] = Field(default_factory=list)
evidence_label: str | None = None
analysis: dict[str, Any] = Field(default_factory=dict)