from __future__ import annotations from pydantic import BaseModel, Field class RegisterLinesPayload(BaseModel): line: str | None = Field(default=None, description="单条原始登记文本") lines: list[str] | None = Field(default=None, description="多条原始登记文本") class PaymentPayload(BaseModel): date: str hours: float class AccountPayload(BaseModel): student_id: str = "" student: str payments: list[PaymentPayload] = Field(default_factory=list) remaining: float = 0 account_status: str = "正常" note: str = "" class TeacherPayload(BaseModel): teacher_id: str = "" name: str alias: str = "" subjects: list[str] = Field(default_factory=list) status: str = "在岗" note: str = "" class CorrectionItemPayload(BaseModel): record_id: str date: str time: str student: str teacher: str subject: str class CorrectionSubmitPayload(BaseModel): items: list[CorrectionItemPayload] class DeletionItemPayload(BaseModel): record_id: str class DeletionSubmitPayload(BaseModel): items: list[DeletionItemPayload] class CourseSummaryPayload(BaseModel): source_id: str = "" student: str date_iso: str = "" date: str = "" time_range: str = "" raw_time: str = "" duration: str = "" duration_hours: float | None = None duration_minutes: int | None = None teacher: str = "" subject: str = "" group: str = "" sender: str = "" sender_name: str = "" sender_id: str = "" message_time: str = "" message_date: str = "" db: str = "" local_id: str | int | None = "" title: str = "" body: str recognition_source: str = "" confidence: str = "" teacher_trusted: bool = False sender_teacher_trusted: bool = False remark: str = "" class CourseSummaryIngestPayload(BaseModel): batch_id: str window: dict = Field(default_factory=dict) students: list[str] = Field(default_factory=list) summaries: list[CourseSummaryPayload] = Field(default_factory=list)