Commit graph

2 commits

Author SHA1 Message Date
ea1dfc5ad7 test(recipes): couverture Mocha complète pour les tech steps
Étend les tests ajoutés pour le catalogue de techniques culinaires :

- tech-step-matcher.test.ts : normalizeText (cédille/ligature, texte
  déjà normalisé, chaîne vide), matchTechStep (listes/description
  vides, plusieurs mappings pointant vers le même techStep, respect
  des frontières de mot — évite les faux positifs type "recuire"/
  "précuit"), et loadTechStepMappingRules (filtrage par locale contre
  une vraie base, locale sans mapping).
- reference.test.ts : ordre alphabétique par key, idempotence du
  reseed (pas de doublon en rappelant seedReferenceData sans
  truncate).
- recipe.test.ts : détection indépendante par étape sur une recette à
  plusieurs étapes (ordre préservé, y compris une étape sans match),
  et résolution de bout en bout du mapping le plus spécifique quand
  une description matche plusieurs techniques.

129 tests passent (13 nouveaux).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-20 06:38:00 +02:00
5026a23bd5 feat(recipes): catalogue de techniques culinaires (tech steps)
Rend opérationnel le squelette TechStep/TechStepMapping/Step.techStepId
présent dans le schéma depuis le premier commit mais jamais implémenté :

- TechStep gagne un `key` unique (camelCase, même convention que
  Diet/Unit) ; TechStepMapping gagne un `locale` pour pouvoir porter
  plusieurs jeux de règles de matching par langue.
- Catalogue statique de 25 techniques françaises courantes (Cuire,
  Frire, Déglacer, Mijoter, ...), chacune associée à une ou plusieurs
  expressions régulières + un poids, seedées de façon idempotente dans
  reference-seed-data.ts.
- Nouveau moteur de matching (apps/api/src/lib/tech-step-matcher.ts) :
  normalisation accents/casse (NFD) puis test des expressions,
  résolution du meilleur match par poids. Pur et testé unitairement.
- Câblé dans recipe.service.ts : à la création/modification d'une
  recette, chaque étape voit son techStepId calculé automatiquement à
  partir de sa description (locale "fr" en dur pour l'instant, faute
  de préférence de langue utilisateur dans l'app).
- Reste backend-only : StepView n'expose pas encore techStepId,
  conformément au commentaire existant.
- Endpoint GET /reference/tech-steps + TechStepView, en cohérence avec
  les autres catalogues de référence.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-19 23:29:46 +02:00