Import TheMealDB : "Importer" reste bloqué sans explication pour les ingrédients comptés sans unité (ex. œufs) #5
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
En important une recette depuis TheMealDB dont au moins un ingrédient est compté à l'unité sans mot d'unité dans le texte source (ex. "4 Egg Yolks", "2 Egg", "1 onion" — très courant), le bouton "Importer" du formulaire "Revoir l'import" reste indéfiniment désactivé, sans aucun message d'erreur ni indication visuelle de la ligne en cause. L'utilisateur n'a aucun moyen de comprendre pourquoi le formulaire est bloqué, ni de le débloquer (il n'y a pas de champ "unité" vide visible à corriger — voir "Détail" ci-dessous).
Reproduit avec la recette "Flan" (
externalId53322, https://www.themealdb.com/meal/53322), dont les ingrédients "4 Egg Yolks" / "2 Egg" sont bien reconnus comme l'ingrédient "Œuf" mais avecunit: null.Cause
Deux endroits :
apps/api/src/lib/ingredient-matcher.ts(matchUnit) — n'a aucune valeur de repli quand le texte restant après extraction de la quantité (extractQuantity) ne contient aucun mot d'unité (ex."4 Egg Yolks"→ quantité4, reste"Egg Yolks": aucun token ne correspond à une unité du catalogue). Pour un ingrédient dont l'unité est de typeCOUNT(piece, "unité"), ce cas devrait pouvoir retomber surpiecepar défaut plutôt que surnull— une quantité comptée sans mot d'unité explicite (juste "4 œufs") est le cas le plus courant, pas un cas limite.apps/web/src/features/recipes/RecipeImportForm.tsx:215-223(canSubmit) — exigeunitId !== nullpour chaque ligne d'ingrédient résolue avant d'activer "Importer" :Rien dans l'UI (
IngredientRow) ne signale visuellement qu'une ligne précise a une unité manquante (pas de bordure/erreur sur le<select>"Choisir une unité"), et aucun message n'explique pourquoi le bouton "Importer" est désactivé — contrairement à la section "Ingrédients à compléter" qui, elle, a un traitement explicite pour les ingrédients non reconnus. Un ingrédient reconnu mais avec unité manquante n'a aucun traitement équivalent.Reproduction
<select>"Œuf", il faut deviner que c'est ça qui bloquait.Impact
Étant donné que la quasi-totalité des recettes réelles contiennent au moins un ingrédient compté à l'unité (œufs, oignons, gousses d'ail non suivies du mot "clove", etc.), ce bug bloque silencieusement l'import d'une grande partie du catalogue TheMealDB — sans qu'aucun message n'oriente l'utilisateur vers la correction (choisir manuellement "unité" sur la ligne concernée).
Pistes de correction
matchUnit(ou son appelanttranslateRecipeIngredients) sur l'unitépiecepar défaut quand l'ingrédient matché est de typeCOUNTet qu'aucune unité n'a pu être extraite du texte.IngredientRow/RecipeImportFormla ou les lignes dont l'unité est manquante (et pourquoi "Importer" est désactivé), au même titre que la section "Ingrédients à compléter" pour les ingrédients non reconnus.🤖 Filed by Claude Code