batchCooking/apps/api/test
kyuno053 520e539fe6
fix(recipes): active le matching ingredients/unites pour les sources en francais (#72)
Cause racine du signalement "beaucoup d'ingredients ne sont pas linkes,
de meme pour les unites et les quantites" sur Marmiton/750g/Manger
Bouger : translateRecipe (recipe-translation.ts) ET previewSourceItem
(sources.service.ts) sautaient integralement loadIngredientCatalog/
loadUnitCatalog/translateRecipeIngredients des que locale !== "en" —
aucune tentative de matching n'etait jamais faite pour une source
francaise, pas un probleme de qualite de matching. Les trois sources
ajoutees dans cette session sont toutes locale: "fr".

Corrige en trois temps :

- packages/shared/src/data/catalog-labels-fr.ts (nouveau) :
  INGREDIENT_LABELS_FR (554 entrees, copiees depuis
  apps/web/src/locales/fr/translation.json qui les avait deja pour
  l'UI — pas une nouvelle redaction), INGREDIENT_LABEL_SYNONYMS_FR
  (mecanisme existant, pour patcher au cas par cas les libelles dont le
  phrasage "affichage" ne correspond pas a l'ordre naturel d'un texte
  de recette — ex. vanillaBean), UNIT_LABELS_FR (17 entrees,
  redigees a la main comme UNIT_LABELS_EN — abreviations/variantes
  reellement utilisees en francais : cuillere a soupe/cas/c.a.s...).

- ingredient-matcher.ts : stemWord se scinde en stemWordEn/stemWordFr
  (locale parametrable, defaut "en" pour ne rien casser) — le stemmer
  anglais appliquait sa regle "es" -> "" a des pluriels francais
  reguliers ("carottes" -> "carott" au lieu de "carotte"), cassant
  silencieusement le matching pour la quasi-totalite des ingredients
  francais dont le singulier se termine par une voyelle. matchUnit est
  reecrit pour chercher une sous-sequence ordonnee (comme
  matchIngredientName) plutot qu'une egalite du seul premier mot : un
  synonyme francais peut etre multi-mots ("cuillere a soupe"), une
  phrase entiere ne pouvant jamais egaler un seul mot extrait.
  loadIngredientCatalog/loadUnitCatalog prennent un parametre locale.

- recipe-translation.ts/sources.service.ts : suppression du
  if (locale !== "en") qui court-circuitait tout — les catalogues sont
  desormais toujours charges avec la locale de la source ; une locale
  sans table de libelles recoit simplement des catalogues vides (degrade
  gracieusement, ne plante pas).

Tests : 14 nouveaux tests purs (matchIngredientName/matchUnit fr,
stemmer, regression), 3 nouveaux tests DB (loadIngredientCatalog/
loadUnitCatalog fr + locale inconnue), 3 nouveaux tests
recipe-translation remplacant un test qui figeait l'ancien comportement
cassé, 1 nouveau test d'integration HTTP (sources.test.ts) avec un
adaptateur factice francais bout en bout. Les tests DB n'ont pas pu
etre executes localement (pas de Postgres/Docker dans cet environnement
sandbox) — a verifier en CI.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-22 20:34:32 +02:00
..
internal feat(tech-steps): fiabilise la détection des tech steps (corpus + LLM + corrections utilisateur) (#66) 2026-08-22 15:57:57 +02:00
recipe feat(tech-steps): fiabilise la détection des tech steps (corpus + LLM + corrections utilisateur) (#66) 2026-08-22 15:57:57 +02:00
recipe-matching fix(recipes): active le matching ingredients/unites pour les sources en francais (#72) 2026-08-22 20:34:32 +02:00
recipe-sources fix(recipes): corrige la liste vide de sevenFiftyGAdapter quand le filtre est vide (#68) 2026-08-22 20:08:28 +02:00
sources fix(recipes): active le matching ingredients/unites pour les sources en francais (#72) 2026-08-22 20:34:32 +02:00
auth.test.ts Tests API: couverture Mocha + Cucumber pour le foyer et la suppression de compte (step 4/8) 2026-08-17 10:40:23 +02:00
health.test.ts Scaffold generic pnpm monorepo (api + web + shared) (#1) 2026-08-16 10:55:13 +02:00
house.test.ts fix: corrige les bugs ouverts du repo (import TheMealDB, sidebar mobile) + doc (#59) 2026-08-21 12:16:22 +02:00
logger.service.test.ts fix: corrige les bugs ouverts du repo (import TheMealDB, sidebar mobile) + doc (#59) 2026-08-21 12:16:22 +02:00
planning.test.ts feat(recipes): ajouter le nombre de portions couvertes par une recette 2026-08-19 21:44:01 +02:00
preferences.test.ts API: module preferences — GET/PATCH /preferences (step 2/4) 2026-08-17 15:55:45 +02:00
profile.test.ts refactor(catalog): authoring 100% anglais — uid camelCase, plus de français dans le code 2026-08-19 20:40:55 +02:00
recipe.test.ts fix: corrige les bugs ouverts du repo (import TheMealDB, sidebar mobile) + doc (#59) 2026-08-21 12:16:22 +02:00
reference.test.ts feat(api): remplace la détection des tech steps par un pipeline NLP (node-nlp) (#63) 2026-08-22 00:17:39 +02:00