groupe-meditation/backend/app/schemas/phase4.py
2026-03-04 14:01:00 -05:00

91 lines
2 KiB
Python

"""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
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
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
# ── 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}