feat(catalog): deuxième passe Ciqual — 53 ingrédients supplémentaires

Suite de la première passe (55 ajouts) : relecture complète des 815
concepts restants après élimination du bruit commercial/branded, pour
combler d'autres trous réels du catalogue.

53 nouveaux ingrédients :
- 13 légumes (Chicorée rouge, Chou romanesco, Chou-rave, Chou chinois,
  Céleri-rave, Gombo, Oignon nouveau, Potimarron, Rutabaga, Salicorne,
  Salsifis, Mâche, Scarole).
- 4 fruits (Groseille, Kaki, Nectarine, Tamarin).
- 5 viandes/abats (Cheval, Cœur de bœuf, Foie gras, Museau de bœuf,
  Viande des Grisons).
- 3 volailles/gibier à plumes (Chapon, Pigeon, Faisan).
- 3 poissons — allergène Poissons (Morue, Limande, Rascasse).
- 5 crustacés/mollusques (Écrevisse, Crevette grise — Crustacés ;
  Coque, Escargot, Seiche — Mollusques).
- 7 crémerie (Edam, Gouda, Mimolette, Maroilles, Mont d'or — allergène
  Lait ; Kéfir, Yaourt à la grecque).
- 1 boulangerie (Gressin — allergène Gluten).
- 3 sauces (Aïoli — allergène Œufs ; Sauce vinaigrette ; Houmous —
  allergène Graines de sésame).
- 7 assaisonnements (Huile de maïs/pépins de raisin/palme ; Huile de
  soja — allergène Soja ; Olives noires/vertes ; Vin rosé (cuisine) —
  allergène Sulfites).
- 2 légumineuses (Haricots flageolets, Lentilles blondes).

Mêmes conventions que la première passe : clé anglaise dans
catalog-en-keys.ts, translation.json régénéré via
`tsx scripts/generate-catalog-i18n.ts`, aucune migration nécessaire.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Nicolas 2026-08-19 17:07:34 +02:00
parent 1b787d0cd2
commit 84178a9f5a
3 changed files with 174 additions and 0 deletions

View file

@ -98,6 +98,19 @@ const INGREDIENT_KEYS: Record<string, string> = {
Daikon: "daikon",
"Piment vert frais": "fresh_green_chili",
Cardon: "cardoon",
"Chicorée rouge": "radicchio",
"Chou romanesco": "romanesco",
"Chou-rave": "kohlrabi",
"Chou chinois": "napa_cabbage",
"Céleri-rave": "celeriac",
Gombo: "okra",
"Oignon nouveau": "spring_onion",
Potimarron: "red_kuri_squash",
Rutabaga: "rutabaga",
Salicorne: "samphire",
Salsifis: "salsify",
Mâche: "lambs_lettuce",
Scarole: "escarole",
// --- Produits frais / Fruits -----------------------------------------
Citron: "lemon",
@ -130,6 +143,10 @@ const INGREDIENT_KEYS: Record<string, string> = {
Coing: "quince",
Cassis: "blackcurrant",
Canneberge: "cranberry",
Groseille: "redcurrant",
Kaki: "persimmon",
Nectarine: "nectarine",
Tamarin: "tamarind",
// --- Produits frais / Herbes fraîches ---------------------------------
Basilic: "basil",
@ -191,6 +208,11 @@ const INGREDIENT_KEYS: Record<string, string> = {
Cerf: "venison",
Chevreuil: "roe_deer",
Sanglier: "wild_boar",
Cheval: "horse_meat",
"Cœur de bœuf": "beef_heart",
"Foie gras": "foie_gras",
"Museau de bœuf": "beef_muzzle",
"Viande des Grisons": "grisons_dried_beef",
// --- Boucherie & poissonnerie / Volailles -----------------------------
Poulet: "chicken",
@ -201,6 +223,9 @@ const INGREDIENT_KEYS: Record<string, string> = {
Pintade: "guinea_fowl",
Oie: "goose",
"Foie de volaille": "poultry_liver",
Chapon: "capon",
Pigeon: "pigeon",
Faisan: "pheasant",
// --- Boucherie & poissonnerie / Poissons -------------------------------
Saumon: "salmon",
@ -235,6 +260,9 @@ const INGREDIENT_KEYS: Record<string, string> = {
"Poisson séché": "dried_fish",
Anguille: "eel",
"Carrelet (ou plie)": "plaice",
Morue: "salt_cod",
Limande: "lemon_sole",
Rascasse: "scorpionfish",
// --- Boucherie & poissonnerie / Crustacés & fruits de mer -------------
Crevettes: "shrimp",
@ -251,6 +279,11 @@ const INGREDIENT_KEYS: Record<string, string> = {
Bulots: "whelks",
"Araignée de mer": "spider_crab",
Bigorneau: "periwinkle",
Écrevisse: "crayfish",
"Crevette grise": "grey_shrimp",
Coque: "cockle",
Escargot: "snail",
Seiche: "cuttlefish",
// --- Épicerie sèche / Féculents ----------------------------------------
Semoule: "semolina",
@ -291,6 +324,8 @@ const INGREDIENT_KEYS: Record<string, string> = {
Fèves: "fava_beans",
Edamame: "edamame",
"Haricots pinto": "pinto_beans",
"Haricots flageolets": "flageolet_beans",
"Lentilles blondes": "golden_lentils",
// --- Épicerie sèche / Graines & fruits secs ----------------------------
Cacahuètes: "peanuts_shelled",
@ -343,6 +378,7 @@ const INGREDIENT_KEYS: Record<string, string> = {
Ciabatta: "ciabatta",
"Tortilla de maïs": "corn_tortilla",
"Tortilla de blé": "wheat_tortilla",
Gressin: "breadstick",
// --- Boulangerie / Pâtes à cuire -----------------------------------------
"Pâte feuilletée": "puff_pastry",
@ -397,6 +433,13 @@ const INGREDIENT_KEYS: Record<string, string> = {
"Crottin de Chavignol": "crottin_de_chavignol",
Abondance: "abondance_cheese",
"Carré de l'Est": "carre_de_l_est",
Edam: "edam",
Gouda: "gouda",
Mimolette: "mimolette",
Maroilles: "maroilles",
"Mont d'or": "mont_dor",
Kéfir: "kefir",
"Yaourt à la grecque": "greek_yogurt",
// --- Crémerie & fromage / Œufs -------------------------------------------
Œuf: "egg",
@ -488,6 +531,9 @@ const INGREDIENT_KEYS: Record<string, string> = {
"Pâte de curry rouge (thaï)": "red_curry_paste",
"Pâte de curry vert (thaï)": "green_curry_paste",
Tahini: "tahini",
Aïoli: "aioli",
"Sauce vinaigrette": "vinaigrette",
Houmous: "hummus",
// --- Condiments & épices / Assaisonnements -----------------------------------
"Huile d'olive": "olive_oil",
@ -500,8 +546,11 @@ const INGREDIENT_KEYS: Record<string, string> = {
"Vinaigre balsamique": "balsamic_vinegar",
Câpres: "capers",
Olives: "olives",
"Olives noires": "black_olives",
"Olives vertes": "green_olives",
"Vin blanc (cuisine)": "white_wine",
"Vin rouge (cuisine)": "red_wine",
"Vin rosé (cuisine)": "rose_wine",
"Vinaigre de vin rouge": "red_wine_vinegar",
"Vinaigre de vin blanc": "white_wine_vinegar",
"Vinaigre de xérès": "sherry_vinegar",
@ -509,6 +558,10 @@ const INGREDIENT_KEYS: Record<string, string> = {
"Huile de noisette": "hazelnut_oil",
"Huile d'arachide": "peanut_oil",
"Huile pimentée": "chili_oil",
"Huile de maïs": "corn_oil",
"Huile de pépins de raisin": "grapeseed_oil",
"Huile de soja": "soybean_oil",
"Huile de palme": "palm_oil",
"Vinaigre de riz": "rice_vinegar",
Mirin: "mirin",
"Saké (cuisine)": "sake",

View file

@ -159,6 +159,20 @@ export const INGREDIENT_GROUPS: Array<{
{ name: "Daikon", allergenNames: [] },
{ name: "Piment vert frais", allergenNames: [] },
{ name: "Cardon", allergenNames: [] },
// Second Ciqual pass — see the PR description.
{ name: "Chicorée rouge", allergenNames: [] },
{ name: "Chou romanesco", allergenNames: [] },
{ name: "Chou-rave", allergenNames: [] },
{ name: "Chou chinois", allergenNames: [] },
{ name: "Céleri-rave", allergenNames: ["Céleri"] },
{ name: "Gombo", allergenNames: [] },
{ name: "Oignon nouveau", allergenNames: [] },
{ name: "Potimarron", allergenNames: [] },
{ name: "Rutabaga", allergenNames: [] },
{ name: "Salicorne", allergenNames: [] },
{ name: "Salsifis", allergenNames: [] },
{ name: "Mâche", allergenNames: [] },
{ name: "Scarole", allergenNames: [] },
],
},
{
@ -197,6 +211,11 @@ export const INGREDIENT_GROUPS: Array<{
{ name: "Coing", allergenNames: [] },
{ name: "Cassis", allergenNames: [] },
{ name: "Canneberge", allergenNames: [] },
// Second Ciqual pass.
{ name: "Groseille", allergenNames: [] },
{ name: "Kaki", allergenNames: [] },
{ name: "Nectarine", allergenNames: [] },
{ name: "Tamarin", allergenNames: [] },
],
},
{
@ -276,6 +295,12 @@ export const INGREDIENT_GROUPS: Array<{
{ name: "Cerf", allergenNames: [] },
{ name: "Chevreuil", allergenNames: [] },
{ name: "Sanglier", allergenNames: [] },
// Second Ciqual pass.
{ name: "Cheval", allergenNames: [] },
{ name: "Cœur de bœuf", allergenNames: [] },
{ name: "Foie gras", allergenNames: [] },
{ name: "Museau de bœuf", allergenNames: [] },
{ name: "Viande des Grisons", allergenNames: [] },
],
},
{
@ -293,6 +318,10 @@ export const INGREDIENT_GROUPS: Array<{
{ name: "Pintade", allergenNames: [] },
{ name: "Oie", allergenNames: [] },
{ name: "Foie de volaille", allergenNames: [] },
// Second Ciqual pass.
{ name: "Chapon", allergenNames: [] },
{ name: "Pigeon", allergenNames: [] },
{ name: "Faisan", allergenNames: [] },
],
},
{
@ -334,6 +363,10 @@ export const INGREDIENT_GROUPS: Array<{
// Ciqual 2025 additions.
{ name: "Anguille", allergenNames: ["Poissons"] },
{ name: "Carrelet (ou plie)", allergenNames: ["Poissons"] },
// Second Ciqual pass.
{ name: "Morue", allergenNames: ["Poissons"] },
{ name: "Limande", allergenNames: ["Poissons"] },
{ name: "Rascasse", allergenNames: ["Poissons"] },
],
},
{
@ -357,6 +390,12 @@ export const INGREDIENT_GROUPS: Array<{
// Ciqual 2025 additions.
{ name: "Araignée de mer", allergenNames: ["Crustacés"] },
{ name: "Bigorneau", allergenNames: ["Mollusques"] },
// Second Ciqual pass.
{ name: "Écrevisse", allergenNames: ["Crustacés"] },
{ name: "Crevette grise", allergenNames: ["Crustacés"] },
{ name: "Coque", allergenNames: ["Mollusques"] },
{ name: "Escargot", allergenNames: ["Mollusques"] },
{ name: "Seiche", allergenNames: ["Mollusques"] },
],
},
// =========================================================================
@ -412,6 +451,9 @@ export const INGREDIENT_GROUPS: Array<{
{ name: "Fèves", allergenNames: [] },
{ name: "Edamame", allergenNames: ["Soja"] },
{ name: "Haricots pinto", allergenNames: [] },
// Second Ciqual pass.
{ name: "Haricots flageolets", allergenNames: [] },
{ name: "Lentilles blondes", allergenNames: [] },
],
},
{
@ -498,6 +540,8 @@ export const INGREDIENT_GROUPS: Array<{
{ name: "Ciabatta", allergenNames: ["Gluten"] },
{ name: "Tortilla de maïs", allergenNames: [] },
{ name: "Tortilla de blé", allergenNames: ["Gluten"] },
// Second Ciqual pass.
{ name: "Gressin", allergenNames: ["Gluten"] },
],
},
{
@ -583,6 +627,14 @@ export const INGREDIENT_GROUPS: Array<{
{ name: "Crottin de Chavignol", icon: "CHEESE", allergenNames: ["Lait"] },
{ name: "Abondance", icon: "CHEESE", allergenNames: ["Lait"] },
{ name: "Carré de l'Est", icon: "CHEESE", allergenNames: ["Lait"] },
// Second Ciqual pass.
{ name: "Edam", icon: "CHEESE", allergenNames: ["Lait"] },
{ name: "Gouda", icon: "CHEESE", allergenNames: ["Lait"] },
{ name: "Mimolette", icon: "CHEESE", allergenNames: ["Lait"] },
{ name: "Maroilles", icon: "CHEESE", allergenNames: ["Lait"] },
{ name: "Mont d'or", icon: "CHEESE", allergenNames: ["Lait"] },
{ name: "Kéfir", allergenNames: ["Lait"] },
{ name: "Yaourt à la grecque", allergenNames: ["Lait"] },
],
},
{
@ -751,6 +803,14 @@ export const INGREDIENT_GROUPS: Array<{
{ name: "Pâte de curry rouge (thaï)", allergenNames: [] },
{ name: "Pâte de curry vert (thaï)", allergenNames: [] },
{ name: "Tahini", allergenNames: ["Graines de sésame"] },
// Second Ciqual pass.
{
name: "Aïoli",
allergenNames: ["Œufs"],
dietNames: ["Végétarien", "Pescétarien"],
},
{ name: "Sauce vinaigrette", allergenNames: [] },
{ name: "Houmous", allergenNames: ["Graines de sésame"] },
],
},
{
@ -769,8 +829,11 @@ export const INGREDIENT_GROUPS: Array<{
{ name: "Vinaigre balsamique", allergenNames: ["Sulfites"] },
{ name: "Câpres", icon: "JAR", allergenNames: [] },
{ name: "Olives", icon: "JAR", allergenNames: [] },
{ name: "Olives noires", icon: "JAR", allergenNames: [] },
{ name: "Olives vertes", icon: "JAR", allergenNames: [] },
{ name: "Vin blanc (cuisine)", icon: "DRINK", allergenNames: ["Sulfites"] },
{ name: "Vin rouge (cuisine)", icon: "DRINK", allergenNames: ["Sulfites"] },
{ name: "Vin rosé (cuisine)", icon: "DRINK", allergenNames: ["Sulfites"] },
{ name: "Vinaigre de vin rouge", allergenNames: ["Sulfites"] },
{ name: "Vinaigre de vin blanc", allergenNames: ["Sulfites"] },
{ name: "Vinaigre de xérès", allergenNames: ["Sulfites"] },
@ -779,6 +842,11 @@ export const INGREDIENT_GROUPS: Array<{
{ name: "Huile d'arachide", allergenNames: ["Arachides"] },
{ name: "Huile pimentée", allergenNames: [] },
{ name: "Vinaigre de riz", allergenNames: [] },
// Second Ciqual pass.
{ name: "Huile de maïs", allergenNames: [] },
{ name: "Huile de pépins de raisin", allergenNames: [] },
{ name: "Huile de soja", allergenNames: ["Soja"] },
{ name: "Huile de palme", allergenNames: [] },
{ name: "Mirin", icon: "DRINK", allergenNames: [] },
{ name: "Saké (cuisine)", icon: "DRINK", allergenNames: [] },
{ name: "Jus de citron", icon: "DRINK", allergenNames: [] },

View file

@ -385,6 +385,19 @@
"daikon": "Daikon",
"fresh_green_chili": "Piment vert frais",
"cardoon": "Cardon",
"radicchio": "Chicorée rouge",
"romanesco": "Chou romanesco",
"kohlrabi": "Chou-rave",
"napa_cabbage": "Chou chinois",
"celeriac": "Céleri-rave",
"okra": "Gombo",
"spring_onion": "Oignon nouveau",
"red_kuri_squash": "Potimarron",
"rutabaga": "Rutabaga",
"samphire": "Salicorne",
"salsify": "Salsifis",
"lambs_lettuce": "Mâche",
"escarole": "Scarole",
"lemon": "Citron",
"lime": "Citron vert",
"apple": "Pomme",
@ -415,6 +428,10 @@
"quince": "Coing",
"blackcurrant": "Cassis",
"cranberry": "Canneberge",
"redcurrant": "Groseille",
"persimmon": "Kaki",
"nectarine": "Nectarine",
"tamarind": "Tamarin",
"basil": "Basilic",
"parsley": "Persil",
"thyme": "Thym",
@ -472,6 +489,11 @@
"venison": "Cerf",
"roe_deer": "Chevreuil",
"wild_boar": "Sanglier",
"horse_meat": "Cheval",
"beef_heart": "Cœur de bœuf",
"foie_gras": "Foie gras",
"beef_muzzle": "Museau de bœuf",
"grisons_dried_beef": "Viande des Grisons",
"chicken": "Poulet",
"turkey": "Dinde",
"duck": "Canard",
@ -480,6 +502,9 @@
"guinea_fowl": "Pintade",
"goose": "Oie",
"poultry_liver": "Foie de volaille",
"capon": "Chapon",
"pigeon": "Pigeon",
"pheasant": "Faisan",
"salmon": "Saumon",
"tuna": "Thon",
"cod": "Cabillaud",
@ -512,6 +537,9 @@
"dried_fish": "Poisson séché",
"eel": "Anguille",
"plaice": "Carrelet (ou plie)",
"salt_cod": "Morue",
"lemon_sole": "Limande",
"scorpionfish": "Rascasse",
"shrimp": "Crevettes",
"langoustine": "Langoustines",
"lobster": "Homard",
@ -526,6 +554,11 @@
"whelks": "Bulots",
"spider_crab": "Araignée de mer",
"periwinkle": "Bigorneau",
"crayfish": "Écrevisse",
"grey_shrimp": "Crevette grise",
"cockle": "Coque",
"snail": "Escargot",
"cuttlefish": "Seiche",
"semolina": "Semoule",
"couscous": "Couscous",
"bulgur": "Boulgour",
@ -562,6 +595,8 @@
"fava_beans": "Fèves",
"edamame": "Edamame",
"pinto_beans": "Haricots pinto",
"flageolet_beans": "Haricots flageolets",
"golden_lentils": "Lentilles blondes",
"peanuts_shelled": "Cacahuètes",
"almonds": "Amandes",
"walnuts": "Noix",
@ -609,6 +644,7 @@
"ciabatta": "Ciabatta",
"corn_tortilla": "Tortilla de maïs",
"wheat_tortilla": "Tortilla de blé",
"breadstick": "Gressin",
"puff_pastry": "Pâte feuilletée",
"shortcrust_pastry": "Pâte brisée",
"pizza_dough": "Pâte à pizza",
@ -659,6 +695,13 @@
"crottin_de_chavignol": "Crottin de Chavignol",
"abondance_cheese": "Abondance",
"carre_de_l_est": "Carré de l'Est",
"edam": "Edam",
"gouda": "Gouda",
"mimolette": "Mimolette",
"maroilles": "Maroilles",
"mont_dor": "Mont d'or",
"kefir": "Kéfir",
"greek_yogurt": "Yaourt à la grecque",
"egg": "Œuf",
"coconut_milk": "Lait de coco",
"coconut_cream": "Crème de coco",
@ -742,6 +785,9 @@
"red_curry_paste": "Pâte de curry rouge (thaï)",
"green_curry_paste": "Pâte de curry vert (thaï)",
"tahini": "Tahini",
"aioli": "Aïoli",
"vinaigrette": "Sauce vinaigrette",
"hummus": "Houmous",
"olive_oil": "Huile d'olive",
"sunflower_oil": "Huile de tournesol",
"rapeseed_oil": "Huile de colza",
@ -752,8 +798,11 @@
"balsamic_vinegar": "Vinaigre balsamique",
"capers": "Câpres",
"olives": "Olives",
"black_olives": "Olives noires",
"green_olives": "Olives vertes",
"white_wine": "Vin blanc (cuisine)",
"red_wine": "Vin rouge (cuisine)",
"rose_wine": "Vin rosé (cuisine)",
"red_wine_vinegar": "Vinaigre de vin rouge",
"white_wine_vinegar": "Vinaigre de vin blanc",
"sherry_vinegar": "Vinaigre de xérès",
@ -762,6 +811,10 @@
"peanut_oil": "Huile d'arachide",
"chili_oil": "Huile pimentée",
"rice_vinegar": "Vinaigre de riz",
"corn_oil": "Huile de maïs",
"grapeseed_oil": "Huile de pépins de raisin",
"soybean_oil": "Huile de soja",
"palm_oil": "Huile de palme",
"mirin": "Mirin",
"sake": "Saké (cuisine)",
"lemon_juice": "Jus de citron",