Project

General

Profile

Feature #83

Updated by Redmine Admin about 2 months ago

## Bug — Reconnaissance automatique des champs lors du scan d'étiquettes 

 ### Problème 
 La fenêtre « Enregistrer une étiquette » (composant scan HACCP/catering sous src/components/) ne pré-remplit pas les champs depuis l'image scannée. 3 champs attendus : Nom du produit, Date de péremption (JJ/MM/AAAA), Numéro de lot. 

 ### Cause probable 
 Parcours : modal scan (front) → upload image → base44.functions.invoke(fonction d'extraction) → LlmPort / adaptateur OpenAI (gpt-4o vision) dans server/src/infrastructure/llm/. Bug à l'une/les deux jointures : 
 1. Backend : la fonction ne renvoie pas les 3 champs en JSON structuré stable, ou la date n'est pas normalisée JJ/MM/AAAA. 
 2. Frontend : le résultat n'est pas mappé dans l'état du formulaire (setState/setValue non appelés ou mauvais mapping de clés). 

 ### Approche 
 1. Backend : passer l'image au LlmPort (gpt-4o vision) avec un prompt demandant un JSON structuré { nomProduit, datePeremption, numeroLot } en français ; normaliser la date en JJ/MM/AAAA côté serveur ; renvoyer null/vide pour tout champ non reconnu (jamais d'invention). 
 2. Frontend : après réception, mapper chaque champ reconnu dans l'état (champs éditables) ; champ non reconnu → vide + message discret « Non reconnu – merci de compléter. » sous le champ. 
 3. NE PAS toucher aux permissions (aucun rls/auth modifié). 
 4. Le flux de submit existant ne change pas. 

 ### Critères d'acceptation 
 - Pré-remplissage auto d'au moins un des 3 champs dans 90% des cas (étiquettes lisibles) ; champs éditables ; non reconnu → vide + message discret ; date JJ/MM/AAAA ; enregistrement possible après correction ; aucun changement de permissions. 
 - Tests : parsing/normalisation côté server (date, champs manquants) ; lint + typecheck verts. 

 ### Portée : un seul flux cohérent (extraction → mapping). Pas de découpage. conversation:38

Back