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

56 lines
1.8 KiB
Python

"""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
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 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},
]