"""Schémas Phase 5 — Jetons, Anniversaires, Commande jetons.""" from pydantic import BaseModel from datetime import date, datetime from uuid import UUID from typing import Optional # ── S2 Remise de jeton ── class JetonCreate(BaseModel): membre_id: Optional[UUID] = None # None pour jeton de désir anonyme reunion_id: Optional[UUID] = None type_jeton: str # desir, 24h, 1mois, 2mois, 3mois, 6mois, 9mois, 1an, multiple date_remise: date annees: Optional[int] = None # requis si type_jeton='multiple' class VenteJetonCreate(BaseModel): reunion_id: Optional[UUID] = None type_jeton: str quantite: int montant: float date_vente: date vendu_par_id: Optional[UUID] = None class JetonOut(BaseModel): id: UUID membre_prenom: Optional[str] = None type_jeton: str date_remise: date annees: Optional[int] = None remis_par_prenom: Optional[str] = None cree_le: datetime model_config = {"from_attributes": True} # ── C3 Anniversaires district ── class AnniversaireOut(BaseModel): membre_prenom: str groupe_nom: str date_abstinence: date annees_sobriete: int prochain_anniversaire: date jours_restants: int # ── M6 Commande de jetons ── class StockJetonsOut(BaseModel): type_jeton: str label: str remis_dernier_mois: int stock_suggestion: str # "OK" ou "Bas — commander" TYPES_JETONS = [ {"value": "desir", "label": "Désir", "emoji": "💫", "ordre": 1}, {"value": "24h", "label": "24 heures", "emoji": "🌅", "ordre": 2}, {"value": "1mois", "label": "1 mois", "emoji": "🥉", "ordre": 3}, {"value": "2mois", "label": "2 mois", "emoji": "🥉", "ordre": 4}, {"value": "3mois", "label": "3 mois", "emoji": "🥈", "ordre": 5}, {"value": "6mois", "label": "6 mois", "emoji": "🥈", "ordre": 6}, {"value": "9mois", "label": "9 mois", "emoji": "🥇", "ordre": 7}, {"value": "1an", "label": "1 an", "emoji": "⭐", "ordre": 8}, {"value": "multiple", "label": "Multiple", "emoji": "🏆", "ordre": 9}, ]