68 lines
1.7 KiB
Python
68 lines
1.7 KiB
Python
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 CorrectionItemPayload(BaseModel):
|
|
original_line: str
|
|
corrected_line: str
|
|
|
|
|
|
class CorrectionSubmitPayload(BaseModel):
|
|
items: list[CorrectionItemPayload]
|
|
|
|
|
|
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)
|