fix(M3): immuabilité et validation des modèles — correction des écarts FIXME_M3
Immuabilité : - Collections des modèles frozen : list → tuple (Lesson, TheoreticalLesson, SchoolEvent, AgendaDiff, Homework, XmppMessage, ExternalInfo) - Gel de HomeworkBlock et ExternalInfo (sous-modèles imbriqués dans contrats) - Valeurs par défaut immuables : Field(default=(), ...) Validation de domaine : - TheoreticalLesson.day_of_week : Field(ge=0, le=6) - Lesson/TheoreticalLesson : start < end (validateur de modèle) - SchoolEvent : from_date <= to_date - AgendaChange : cohérence type/payload (ADDED/MODIFIED → lesson, REMOVED → theoretical_lesson) - CalDAVSyncResult : compteurs Field(ge=0) sur added/updated/removed Tests : 66 tests (construction/sérialisation, immuabilité, invariants) couvrant le gel, la mutabilité légitime, et les cas invalides par invariant. Co-authored-by: opencode/coder <coder@agents.invalid> Co-authored-by: opencode/test-engineer <test-engineer@agents.invalid>
This commit is contained in:
@@ -19,13 +19,11 @@ class XmppMessage(BaseModel):
|
||||
|
||||
target_date: date = Field(..., description="Date cible")
|
||||
synthesis: str | None = Field(None, description="Synthèse IA (optionnelle, 3-5 phrases)")
|
||||
homeworks: list[Homework] = Field(default_factory=list, description="Liste brute des devoirs")
|
||||
changes: list[AgendaChange] = Field(
|
||||
default_factory=list, description="Liste des changements d'agenda"
|
||||
)
|
||||
messages: list[Message] = Field(
|
||||
default_factory=list, description="Liste des messages/informations"
|
||||
homeworks: tuple[Homework, ...] = Field(default=(), description="Liste brute des devoirs")
|
||||
changes: tuple[AgendaChange, ...] = Field(
|
||||
default=(), description="Liste des changements d'agenda"
|
||||
)
|
||||
messages: tuple[Message, ...] = Field(default=(), description="Liste des messages/informations")
|
||||
external_info: ExternalInfo | None = Field(
|
||||
None, description="Informations externes (blog, messages Pronote)"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user