Jusqu'ici, submitTechStepCorrectionSchema (POST /recipes/:id/steps/:stepId/
corrections) acceptait ingredients/utensils pour compléter les métadonnées
d'une technique corrigée, mais aucun champ temperatures — StepTechStepTemperature
n'était jamais écrit que par toStepTechStepCreateInputs, lors d'un create/update
complet de recette. La température ajoutée en #22 n'avait jamais eu son
propre circuit de correction manuelle.
- packages/shared/src/schemas/recipe.ts : nouveau
manualStepTechStepTemperatureInputSchema (celsius/gasMark/qualitative
mutuellement exclusifs — exactement un des trois — même span start/end
que ingredients/utensils). Le champ temperatures rejoint ingredients/
utensils dans le même lot combiné (les trois voyagent ensemble : dès que
l'un est présent, les trois sont résolus, un absent devient [] donc
effacé — jamais une fusion partielle catégorie par catégorie).
- recipe-tech-step-correction.service.ts : applyManualCorrection écrit
désormais StepTechStepTemperature (delete+recreate, même logique "le
manuel remplace tout" que les deux autres tables). raw n'est jamais
envoyé par le client — dérivé de description.slice(start, end), pour ne
pas faire confiance à une copie cliente qui pourrait diverger du texte
réel. loadVisibleStepOrThrow retourne désormais le texte complet de la
description (pas seulement sa longueur), nécessaire pour cette dérivation.
- specs/backend-architecture.md + specs/batch-cooking-modele.md : les deux
routes de correction et step_tech_step_temperature n'étaient documentées
nulle part — comblé au passage.
- Tests Mocha ajoutés (celsius/gasMark/qualitative, rejet si zéro ou
plusieurs champs renseignés, remplacement sans accumulation, dérivation
de raw, span hors limites).
Périmètre : back-end uniquement (voir la maquette proposée précédemment).
Le popover de correction (apps/web) ne sera mis à jour que dans une PR
suivante, empilée sur celle-ci.
Vérifié : pnpm lint + build (shared, api) clean. Mocha non exécuté — pas
de Postgres/Docker accessible dans cette session (ni Bash ni PowerShell).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>