Feature #80
Updated by Redmine Admin about 2 months ago
## Bug — Génération IA de descriptions depuis un PDF (onglet Communications) ### Cause racine probable Le `LlmPort` (server/src/domain/ports/llm.port.ts) n'expose qu'un champ `file_urls`, et l'adaptateur OpenAI (server/src/infrastructure/llm/openai.adapter.ts) transforme chaque URL en `{ type: 'image_url' }`. Un PDF passé ainsi à gpt-4o n'est pas lu comme du texte → réponse vide ou non conforme au schéma JSON, et la fonction renvoie des descriptions vides sans remonter d'erreur. Il manque une étape d'EXTRACTION du texte du PDF en amont de l'appel LLM, et la gestion d'erreur ne distingue pas échec vs succès vide. ### Approche 1. Extraire le texte du PDF (non scanné) en amont de l'appel LLM ; passer le texte dans le prompt plutôt que le PDF brut dans file_urls. 2. Corriger la fonction backend (server/src/application/functions/) : extraction → prompt (courte 2-3 phrases = résumé artiste+style ; longue 4-5 phrases = parcours, influences, éléments spécifiques si présents) → LLM JSON mode → validation → erreur EXPLICITE si texte insuffisant. 3. UI Communications : afficher les descriptions (corriger le mapping/état qui laisse les champs vides) ; message d'erreur clair en cas d'échec. ### Critères d'acceptation - Génération courte+longue pour tout PDF texte+images non scanné ; zones non vides en cas de succès ; aucun message d'erreur quand ça réussit ; courte 2-3 ph, longue 4-5 ph avec détails si dispo ; validé avec ≥3 PDF ; message d'erreur clair si texte insuffisant ; tests backend (LlmPort fake) + lint/typecheck verts. ### Portée : un seul lot (extraction PDF → LLM → UI). Pas de découpage. conversation:35