Dédoublonnage des variantes de recettes (même nom) dans get_menu

This commit is contained in:
2026-06-15 22:30:34 +02:00
parent ef6bf9813a
commit 30b950ec41

View File

@@ -62,6 +62,23 @@ def current_week(offset: int = 0) -> str:
return f"{y}-W{w:02d}" return f"{y}-W{w:02d}"
def _dedupe_by_name(recipes: list[Recipe]) -> list[Recipe]:
"""Fusionne les variantes du même plat (même nom, ids différents : 2/4 pers., etc.).
On garde la première occurrence ; les ids des variantes restent valides pour la
sélection puisqu'ils pointent vers la même recette.
"""
seen: set[str] = set()
out: list[Recipe] = []
for r in recipes:
key = " ".join((r.name or "").lower().split())
if key in seen:
continue
seen.add(key)
out.append(r)
return out
class HelloFreshClient: class HelloFreshClient:
def __init__(self, token: str | None = None): def __init__(self, token: str | None = None):
self._ep = _load_endpoints() self._ep = _load_endpoints()
@@ -129,7 +146,7 @@ class HelloFreshClient:
rid = (c.get("recipe") or {}).get("id") rid = (c.get("recipe") or {}).get("id")
if rid and rid not in ids: if rid and rid not in ids:
ids.append(rid) ids.append(rid)
return self._fetch_details(ids) return _dedupe_by_name(self._fetch_details(ids))
def _fetch_details(self, ids: list[str]) -> list[Recipe]: def _fetch_details(self, ids: list[str]) -> list[Recipe]:
"""Récupère les recettes complètes par batch d'ids.""" """Récupère les recettes complètes par batch d'ids."""