63 lines
1.4 KiB
Python
63 lines
1.4 KiB
Python
"""Schémas Phase 2 — Consultation."""
|
|
from pydantic import BaseModel
|
|
from datetime import date, datetime
|
|
from uuid import UUID
|
|
from typing import Optional
|
|
|
|
|
|
# ── C5 Décisions ──
|
|
class DecisionCreate(BaseModel):
|
|
sujet: str
|
|
description: Optional[str] = None
|
|
statut: str = "en_attente"
|
|
responsable_id: Optional[UUID] = None
|
|
proposeur: Optional[str] = None
|
|
secondeur: Optional[str] = None
|
|
date_decision: date
|
|
reunion_id: Optional[UUID] = None
|
|
|
|
|
|
class DecisionOut(BaseModel):
|
|
id: UUID
|
|
sujet: str
|
|
description: Optional[str] = None
|
|
statut: str
|
|
responsable_prenom: Optional[str] = None
|
|
proposeur: Optional[str] = None
|
|
secondeur: Optional[str] = None
|
|
date_decision: date
|
|
date_completion: Optional[date] = None
|
|
cree_le: datetime
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class DecisionUpdate(BaseModel):
|
|
statut: Optional[str] = None
|
|
description: Optional[str] = None
|
|
responsable_id: Optional[UUID] = None
|
|
date_completion: Optional[date] = None
|
|
|
|
|
|
# ── C2 Calendrier district ──
|
|
class CalendrierEntry(BaseModel):
|
|
groupe_nom: str
|
|
groupe_id: UUID
|
|
jour_reunion: Optional[str] = None
|
|
poste_nom: str
|
|
membre_prenom: str
|
|
date_debut: date
|
|
|
|
|
|
# ── C1 Rapports PDF ──
|
|
class RapportRequest(BaseModel):
|
|
type: str # finances, pv, rsg
|
|
mois: int
|
|
annee: int
|
|
|
|
|
|
class RapportOut(BaseModel):
|
|
type: str
|
|
mois: int
|
|
annee: int
|
|
url: str
|