File size: 1,687 Bytes
7c6ffa6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | 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)
|