"""Schémas Phase 4 — PV, Présences, Rapport RSG.""" from pydantic import BaseModel from datetime import date, datetime from uuid import UUID from typing import Optional # ── M2 Présences (réunion d'affaires) ── class PresenceItem(BaseModel): membre_id: UUID present: bool = True class PresencesBatch(BaseModel): reunion_id: UUID presences: list[PresenceItem] class PresenceOut(BaseModel): membre_id: UUID membre_prenom: str present: bool class ReunionAffairesCreate(BaseModel): """Créer une réunion d'affaires (pour les présences et le PV).""" date_reunion: datetime note: Optional[str] = None class ReunionAffairesOut(BaseModel): id: UUID date_reunion: datetime note: Optional[str] = None modifie_le: Optional[datetime] = None presences: list[PresenceOut] = [] model_config = {"from_attributes": True} # ── M1 Procès-verbal ── class DecisionPV(BaseModel): sujet: str decision: str proposeur: Optional[str] = None secondeur: Optional[str] = None statut: str = "en_attente" class PvCreate(BaseModel): reunion_id: UUID contenu: str decisions: Optional[list[DecisionPV]] = None class PvOut(BaseModel): id: UUID reunion_id: UUID redacteur_prenom: str contenu: str decisions: Optional[list[dict]] = None approuve: bool cree_le: datetime modifie_le: datetime date_reunion: Optional[datetime] = None model_config = {"from_attributes": True} class PvUpdate(BaseModel): contenu: Optional[str] = None decisions: Optional[list[DecisionPV]] = None approuve: Optional[bool] = None class PvAdoption(BaseModel): proposeur_id: UUID secondeur_id: UUID contenu: Optional[str] = None # ── M3 Rapport RSG ── class RapportRsgCreate(BaseModel): reunion_dist: date decisions: Optional[list[str]] = None infos_region: Optional[str] = None sujets_groupe: Optional[str] = None class RapportRsgOut(BaseModel): id: UUID reunion_dist: date redacteur_prenom: str decisions: Optional[list[str]] = None infos_region: Optional[str] = None sujets_groupe: Optional[str] = None cree_le: datetime model_config = {"from_attributes": True}