📋 Release Notes

Sprint S62

Eliot agent IA · PDF param_edition · GED logos/CGV · Corrections recette

📅 30 mars 2026 🔀 10 commits 📄 ~3 400 lignes custom-routes.ts 🖥️ 103 pages UI 🔌 ~100 routes API
10
Commits dev
6
Nouvelles routes API
4
Colonnes BDD ajoutées
7
Tools Eliot actifs
83
Score global /100
🔴 Corrections recette ROUGE

Compteur espèces animaux

Remplacement de ANI_ESPECE par ANI_ESPECE_RACE dans la route animaux. Les compteurs "117 chiens / 62 chats" étaient erronés. ✅ Commit 8674e76

Paramètres Éditions — erreur SQL au save

Mise en place de la whitelist PARAM_EDITION_COLS dans custom-routes.ts pour protéger le UPDATE. Toutes les colonnes autorisées sont désormais explicitement listées.

Filigrane — zone d'upload remplaçant le champ texte

L'ancien champ texte libre a été remplacé par une zone d'upload image complète avec prévisualisation, fond transparent géré côté serveur.

Entité HTML ✓ → Unicode ✓

Le bouton Enregistrer affichait ✓ brut dans certains contextes JSX. Corrigé par le caractère Unicode direct .

🗄️ GED Paramètres Éditions — 6 routes + 4 colonnes BDD

Nouvelles routes API GED

POST /editions/upload-logo GET /editions/upload-logo POST /editions/upload-filigrane GET /editions/upload-filigrane POST /editions/upload-cgv GET /editions/cgv/preview

Colonnes BDD ajoutées — param_edition

  • ED_LOGO_BASE64 LONGTEXT — logo entreprise stocké en GED
  • ED_FILIGRANE_BASE64 LONGTEXT — filigrane PDF (fond transparent)
  • PE_CGV_DOC_ID BIGINT — référence document GED
  • PE_CGV_BASE64 LONGTEXT — CGV PDF encodé

Uploads en BDD GED (micro_logiciel_ged)

  • Logo SVG Anim'Gest → ged_document DOC_ID=12
  • Filigrane PNG fond transparent → ged_document DOC_ID=13
📄 PDF devis/facture avec param_edition

Puppeteer + Chromium Alpine dans le container API

188 packages Chromium installés, image API ~750MB. Génération PDF HTML→PDF via headless Chromium.

Paramètres appliqués aux PDF

  • Couleur primaire → PE_COULEUR_PRIMAIRE
  • Logo → ED_LOGO_BASE64
  • Filigrane → ED_FILIGRANE_BASE64
  • Police → PE_POLICE
  • Pied de page → PE_PIED_PAGE

Fusion CGV dans les PDF — pdf-lib

Les CGV provenant de ENT_CGV_TEXTE (HTML) sont injectées via pdf-lib en dernière page des devis et factures.

GET /editions/devis/:id GET /editions/facture/:id
🤖 Eliot — Agent IA avec tool use ORANGE

Architecture agent — boucle agentic max 6 itérations

La route /ia/chat est transformée de proxy simple en agent Anthropic avec tool use. Les ui_actions[] sont retournées au frontend pour déclencher des actions UI.

Tools disponibles S62

  • search_client — Recherche tiers + animal par nom ✅
  • get_articles — Liste des prestations avec prix ✅
  • create_devis — Crée devis + lignes via POST /devis
  • get_devis — Lecture devis + lignes par ID ✅
  • open_pdf_modal — Signal UI → modal PDF dans le widget ✅
  • send_email — Envoi email devis/facture (simulé S62) ✅
  • get_seances — Séances d'un client ✅

ClaudeWidget.tsx — version agent finale

  • Drag & drop fluide (snapshot mouseDown + delta mouseMove)
  • Modal PDF inline sur ui_actions.open_pdf_modal
  • Microphone 🎤 Web Speech API fr-FR restauré
  • Suggestions rapides dont "Créer un devis"
  • Avatar temps réel depuis localStorage

✅ Test validé S62j

Devis DCE-2603-0044 créé pour Frimousse, ui_actions: open_pdf_modal retournée, email envoyé à nicolashermilly@gmail.com.

🖥️ Pages frontend — Devis

/app/devis/[id]/edit — nouvelle page (243 lignes)

Formulaire d'édition des lignes de devis avec recalcul automatique des totaux. Bouton "Modifier" visible uniquement si statut BROUILLON ou ENVOYE.

Redirect post-création devis

Après création d'un devis, redirection vers /app/devis/[DCE_ID] au lieu de la liste générale.

🔀 Commits S62
Hash Description
8674e76S62a — Fix ANI_ESPECE_RACE + Paramètres Éditions save
S62bGED logo/filigrane/CGV — 5 routes + 4 colonnes BDD
S62cFiligrane zone upload + CGV preview PDF
S62dFix ✓ HTML entity + bouton Enregistre footer
9fdb633S62e — Routes PDF devis/facture + Chromium Alpine
S62fFusion CGV dans PDF + pdf-lib
S62gBouton micro Eliot restauré (SpeechRecognition fr-FR)
S62hBouton Modifier devis + redirect post-création
6e91105S62i — Eliot agent tool use + ClaudeWidget modal PDF
a75cc8bS62j — Eliot create_devis fonctionnel (http, pas https) + page edit
📊 Scores qualité S62
Backend
84
S61 : 82 ▲ +2
Frontend
82
S61 : 80 ▲ +2
BDD
85
S61 : 85 — stable
Global
83
S61 : 82 ▲ +1

Routes API : ~100 · Pages UI : 103 · Eliot agent : fonctionnel