batchCooking/apps/api/prisma/migrations
Nicolas ec01fc0107
All checks were successful
CI / build (push) Successful in 2m44s
CI / lint (push) Successful in 2m50s
CI / intent-service-test (push) Successful in 4m36s
CI / e2e (push) Successful in 8m12s
CI / test (push) Successful in 14m57s
fix(recipes): persiste les métadonnées de clause des tech-steps à l'édition
`createRecipeInternal` écrivait, pour chaque technique détectée, ses
ingrédients / ustensiles / températures de clause ; `updateRecipe` et le
script `backfill-tech-steps.ts` n'écrivaient que le span de la technique.
Toute recette ré-enregistrée via l'UI (ou touchée par le backfill) perdait
donc silencieusement ces métadonnées — et `cooking-optimizer.ts` ne pouvait
plus détecter de conflit de four entre deux préchauffages dès qu'une recette
avait été éditée une fois (ni sur les imports antérieurs à la détection des
températures, jamais ré-enregistrés).

- `toStepTechStepCreateInputs` (nouveau, `lib/recipe-matching/`) : seule
  source de vérité du payload `techSteps.create`, utilisée par les trois
  appelants pour qu'ils ne divergent plus.
- `backfill-tech-steps.ts` : `createMany` -> `create` par ligne (createMany
  ne fait pas les écritures imbriquées) + doc à jour.
- Rattrapage automatique au déploiement : `model BackfillState` + migration
  `backfill_state`, script `backfill-runtime.ts` ajouté au CMD Docker après
  `seed-runtime`. Gardé par un marqueur (tourne une seule fois), n'échoue
  jamais le boot (une panne du backfill est loggée, le serveur démarre
  quand même, retente au prochain start).
- Test `PATCH /recipes/:id` : une température de clause survit à l'édition.
- `reset-db.ts` : `backfill_state` ajouté au TRUNCATE.

Vérifié : `tsc --noEmit` + `pnpm --filter api build` + `pnpm lint` OK ;
migration = SQL généré par Prisma pour le modèle, à l'identique. Mocha
`recipe.test.ts` non lancé (Postgres + intent-service requis, indisponibles
ici) — à jouer en CI / sur la machine de dev.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 09:08:15 +02:00
..
20260816100611_init Add specs + Prisma schema for the documented data model (#3) 2026-08-16 12:23:59 +02:00
20260816105101_add_user_auth_fields API: signup/login (profile creation + JWT auth) (#4) 2026-08-16 13:45:23 +02:00
20260816230050_unique_diet_category_name API: seed régimes/allergènes + GET /reference/diets, /reference/allergies (step 1/6) 2026-08-16 23:09:02 +02:00
20260816235436_add_category_kind API: séparer allergies et intolérances (kind sur Category) (step 7/8) 2026-08-17 00:01:19 +02:00
20260817093000_add_house_admin_invite_code API: administrateur de foyer, code d'invitation, créer/rejoindre/quitter/supprimer (step 2/8) 2026-08-17 10:38:16 +02:00
20260817120000_add_user_preference Shared + migration: table user_preference (thème clair/sombre/système) (step 1/4) 2026-08-17 15:55:18 +02:00
20260817220730_ingredient_allergies feat(recipes): catalogue v2 - visibilité, favoris, régimes et catalogue d'ingrédients exhaustif 2026-08-18 09:29:11 +02:00
20260818054828_recipe_visibility_favorites_diets_dislikes feat(recipes): catalogue v2 - visibilité, favoris, régimes et catalogue d'ingrédients exhaustif 2026-08-18 09:29:11 +02:00
20260818081109_ingredient_category feat(recipes): catégories d'ingrédients + nouveau sélecteur 2026-08-18 10:24:12 +02:00
20260818104845_ingredient_diet fix(recipes): overflow des préférences + régimes liés aux ingrédients 2026-08-18 11:01:57 +02:00
20260818113250_ingredient_taxonomy_rework fix(migrations): rend la migration ingredient_taxonomy_rework safe sur des données existantes 2026-08-18 12:47:14 +02:00
20260818121549_ingredient_icon_type feat(recipes): remplace les emoji par des icônes SVG épurées 2026-08-18 12:30:25 +02:00
20260818190000_catalog_labels_to_keys chore(web): session de polish global — version, checkbox, danger zone, icônes (#20) 2026-08-18 20:52:12 +02:00
20260818193000_catalog_keys_to_english chore(web): session de polish global — version, checkbox, danger zone, icônes (#20) 2026-08-18 20:52:12 +02:00
20260819064721_planning_item_portions feat(planning): dialog de sélection de recette, création de planning, assignation avec portions 2026-08-19 14:44:02 +02:00
20260819165510_ingredient_reproducible_flag feat(recipes): flag les ingrédients faisables maison + suggestion de recherche 2026-08-19 19:09:39 +02:00
20260819180000_catalog_camel_case_uids refactor(catalog): authoring 100% anglais — uid camelCase, plus de français dans le code 2026-08-19 20:40:55 +02:00
20260819192851_recipe_portions feat(recipes): ajouter le nombre de portions couvertes par une recette 2026-08-19 21:44:01 +02:00
20260819201838_ingredient_unit_catalog feat(recipes): catalogue de référence pour les unités d'ingrédients 2026-08-19 22:34:57 +02:00
20260819210000_tech_step_catalog_key feat(recipes): catalogue de techniques culinaires (tech steps) 2026-08-19 23:29:46 +02:00
20260820100000_recipe_source_linking feat(recipes): relie les recettes à leur source (sourceId + externalId) 2026-08-20 07:43:51 +02:00
20260820110000_step_tech_step_sequence fix(recipes): une étape peut porter une séquence de tech steps 2026-08-20 07:58:29 +02:00
20260820120000_house_source_preferences feat(recipes): préférences de sources par foyer + distinction officielle/non-officielle 2026-08-20 09:22:54 +02:00
20260820130000_source_icon_url feat(recipes): première source concrète (TheMealDB) + icône de source 2026-08-20 11:16:13 +02:00
20260820140000_step_tech_step_span feat(recipes): surligne les tech steps détectés dans les étapes, avec tooltip 2026-08-20 14:46:15 +02:00
20260821130000_drop_tech_step_mapping feat(api): remplace la détection des tech steps par un pipeline NLP (node-nlp) (#63) 2026-08-22 00:17:39 +02:00
20260821140000_step_tech_step_context feat(api): remplace la détection des tech steps par un pipeline NLP (node-nlp) (#63) 2026-08-22 00:17:39 +02:00
20260822090000_tech_step_correction_and_suggestion feat(tech-steps): fiabilise la détection des tech steps (corpus + LLM + corrections utilisateur) (#66) 2026-08-22 15:57:57 +02:00
20260822092528_step_tech_step_source feat(tech-steps): fiabilise la détection des tech steps (corpus + LLM + corrections utilisateur) (#66) 2026-08-22 15:57:57 +02:00
20260826120000_utensil_catalog feat(recipes): associe ingredients, quantites et ustensiles aux techniques detectees (#75) 2026-08-26 19:50:52 +02:00
20260826121000_step_tech_step_metadata feat(recipes): associe ingredients, quantites et ustensiles aux techniques detectees (#75) 2026-08-26 19:50:52 +02:00
20260828120000_admin_user feat(admin): fondation auth de l'application d'administration 2026-08-28 23:36:29 +02:00
20260828130000_admin_metrics feat(admin): metriques d'utilisation (derive DB + AnalyticsEvent) 2026-08-28 23:36:31 +02:00
20260828140000_ingredient_placeholder feat(recipes): permet d'ajouter des ingredients hors-catalogue 2026-08-28 23:36:42 +02:00
20260829120000_step_tech_step_temperature feat(tech-steps): detecte les temperatures dans les etapes 2026-08-29 19:29:03 +02:00
20260904120000_backfill_state fix(recipes): persiste les métadonnées de clause des tech-steps à l'édition 2026-09-04 09:08:15 +02:00
migration_lock.toml Add specs + Prisma schema for the documented data model (#3) 2026-08-16 12:23:59 +02:00