| 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) | |