UI web d'admin + garde-fou recettes premium (supplément hors abonnement)
- Refus des recettes payantes (chargeSetting) à la sélection, override allow_premium - Recipe.surcharge_cents/is_premium exposés dans summary(); propose() les exclut - hellofresh/webui.py : page d'admin + API JSON montées sur FastMCP (/, /api/*) édition à chaud des excludes et préférences (liked/disliked)
This commit is contained in:
@@ -52,12 +52,20 @@ class Recipe:
|
||||
image_url: str = ""
|
||||
prep_time: str = ""
|
||||
course_index: int | None = None # index du course dans le menu (sert à l'écriture)
|
||||
# Supplément hors abonnement (rempli depuis le menu) : 0 = inclus, >0 = surcoût en centimes
|
||||
surcharge_cents: int = 0
|
||||
surcharge_reason: str = "" # ex. "premium" (motif renvoyé par chargeSetting)
|
||||
# Champs calculés par le filtre (remplis plus tard)
|
||||
contains_excluded: bool = False
|
||||
matched_excludes: list[str] = field(default_factory=list)
|
||||
score: float = 0.0
|
||||
is_favorite: bool = False # rempli par api (best-effort) depuis le service favoris
|
||||
|
||||
@property
|
||||
def is_premium(self) -> bool:
|
||||
"""True si la recette coûte un supplément (non incluse dans l'abonnement)."""
|
||||
return self.surcharge_cents > 0
|
||||
|
||||
@classmethod
|
||||
def from_api(cls, raw: dict[str, Any]) -> "Recipe":
|
||||
"""Construit une Recipe depuis un objet recette brut de l'API gateway.
|
||||
@@ -123,6 +131,9 @@ class Recipe:
|
||||
"image_url": fix_image_url(self.image_url),
|
||||
"prep_time": self.prep_time,
|
||||
"prep_minutes": _iso_duration_to_minutes(self.prep_time),
|
||||
"is_premium": self.is_premium,
|
||||
"surcharge_eur": round(self.surcharge_cents / 100, 2) if self.surcharge_cents else 0,
|
||||
"surcharge_reason": self.surcharge_reason,
|
||||
"allergens": self.allergens,
|
||||
"contains_excluded": self.contains_excluded,
|
||||
"matched_excludes": self.matched_excludes,
|
||||
|
||||
Reference in New Issue
Block a user