""" Pydantic model representing a structured assignment card. Fields: - title: short title of the task (string) - subject: main topic or subject area (string, optional) - deadline_hint: free‑form hint about due date (string, optional) - deliverable_type: what is expected to be submitted (string, optional) - grading_hints: list of strings describing evaluation criteria (list[str], optional) """ from __future__ import annotations from typing import List, Optional from pydantic import BaseModel, Field class AssignmentCard(BaseModel): """Structured representation of an informal assignment description.""" title: str = Field(..., description="Short title or main action of the task") subject: Optional[str] = Field(None, description="Primary subject or topic of the task") deadline_hint: Optional[str] = Field( None, description="Free‑form hint about when the task is due (e.g., 'к пятнице')", ) deliverable_type: Optional[str] = Field( None, description="What should be submitted: report, code, presentation, etc." ) grading_hints: List[str] = Field( default_factory=list, description="List of evaluation criteria mentioned in the text", ) class Config: arbitrary_types_allowed = True json_schema_extra = { "example": { "title": "Мини‑отчёт по LangChain", "subject": "LangChain", "deadline_hint": "к пятнице", "deliverable_type": "отчёт", "grading_hints": ["полнота", "пример кода"], } }