- Stack vérifiée — PDF devis OK, GED valide
- Archivage dist/ (596 Mo) + BIB_Widget/ (297 Mo) → 893 Mo libérés
- invoice.pdf résiduel supprimé de Semaine_2026_15
- Sidebar v2 · S80 patchée + JSDoc @sprint S80
- JSDoc custom-routes audité — 1 faux positif, dette zéro
- GitHub Pages S79 pushé — commit 0927966
- Build frontend 117/117 — 0 erreur
- demande-avoir-fourn/[id] reconstruit complet (16 783 car.)
- avoir-client/[id] — wrapper + loading state corrigés
- bon-livraison/[id] — wrapper supprimé + div orphelin retiré
- bon-retour/[id] — wrapper supprimé
- 4 pages liste (BL/AC/BR/DAF) — charte + wrapper corrigés
- Build frontend 117/117 — 0 erreur
Conv1 : JSDoc global (71 fichiers patchés), archivage 15 éléments, BACKLOG_PRODUIT.md créé.
Conv2 : Test GED réel validé (GED_ID=59), charte graphique BR/DAF/achats/editions, routes PDF Puppeteer BR+DAF, fix chemins /app/ged_new, fix routes /editions/upload-*.
Dette technique : 0 point résiduel.
ROUGE R3 : Agenda Drag & Drop résolu. JAUNE : charte achats/stock, GED PDF horodaté, nettoyage 28 fichiers test GED.
Docs : 22 scénarios HTML embarqués, centre d'aide 244 Q/R, guide paramétrage, notice utilisation.
ROUGE : R1 Puppeteer, R2 GED logos, R4 Règlements, R5 API helpers — tous résolus. R3 Agenda DnD reporté S78.
ORANGE : dashboard comportementaliste, sidebar, formules, tarif, portail, registre sanitaire, sport canin (8 items).
JAUNE : cliquabilité listes, GED arborescence, i18n, Topbar CSS vars, debug-pdf supprimé (7 items).
- Centre d'aide /app/aide — 244 Q/R, 20 modules, help-content.ts réécrit
- HelpPanel contextuel — getArticlesForPage, mapping 35 routes
- 22 scénarios métier HTML (10 métiers + 11 transverses + index)
- Guide de paramétrage — 7 phases, checklist 16 items
- Notice complète d'utilisation — 20 sections, sidebar navigation
- Documentation embarquée public/docs/ — 20 pages référence
- Sidebar version v2 · S78
- window.location.href → router.push() partout
- Couleurs résiduelles corrigées (bon-livraison, agenda, carte, clients)
- JSDoc — Sidebar, EmailModal, 6 pages prioritaires
- Agenda DnD — force-dynamic + zones de drop opérationnelles
- Audit global dette : 0 point résiduel périmètre S78
- Fix docs GitHub Pages S73 — onglet S73 actif, roadmap S74 en cours, pilotage historique
- Module AC complet — Guards R-26/R-32 · PUT whitelist · GET+POST lignes · page /avoir-client/[id] · liste cliquable
- BDD — table
avoir_client_ligne+ 3 triggers AFTER INSERT/UPDATE/DELETE recalcul totaux HT/TTC - Route PDF AC enrichie — section lignes
avoir_client_ligne+ tableau totaux - Eliot tool 22
get_avoirs_client— filtres statut+tie_id · format R-33 ✅
- 4 routes PDF éditions :
GET /editions/bon-livraison/:id·/bon-retour/:id·/demande-avoir-fourn/:id·/avoir-client/:id - Boutons PDF + modals
<iframe src>sur pages BL/BR/DAF/[id] - Fix SQL
f.FAC_NUM(pasf.FAC_NUMERO) - 1791 colonnes commentées sur 171 tables
micro_logiciel— conventions R-34 FK/PK - Fix
DEFAULT NULLvsDEFAULT 'NULL'sur nullable datetime/varchar - Score BDD 93 → 98/100 — dette technique soldée ✅
- Fix /app/clients — suppression geocoding externe (api-adresse.data.gouv.fr) · vue carte remplacée par placeholder · liste 167 clients stable
- Guard R-26 injecté sur routes GET /bon-livraison, /bon-retour, /demande-avoir-fourn — empêche interception des routes /:id
- Fix Eliot R-33 — format tableau tools corrigé (virgules ,{ en début de ligne → undefined) · tool get_declarations_elevage ajouté (21 tools)
- Pages bon-retour/[id] et demande-avoir-fourn/[id] améliorées (contenu stash Conv2)
- Formulaire declarations elevage — modal creation + modal edition + routes POST/PUT /elevage/declarations
- Tables bon_retour_ligne + demande_avoir_fourn_ligne — routes GET+POST lignes BR/DAF
- 6 triggers MariaDB recalcul totaux HT/TTC (AFTER INSERT/UPDATE/DELETE sur lignes BR et DAF)
- Colonne BR_ID ajoutee dans demande_avoir_fourn · jointures DAF/BR · navigation bidirectionnelle BR↔DAF
- Notifications portail — test end-to-end confirme · email reel envoye · substitution variables operationnelle
- Page /app/elevage/declarations — 3 compteurs · filtres statut + type · détection retard (fond rouge + badge ⚠)
- Lien sidebar ELEVEUR "Déclarations" entre Réservations et Questionnaires
- Build frontend 120 pages compilées · 0 erreur TypeScript
- Route GET /api/elevage/declarations existante — 16 déclarations en BDD de test
- 16 déclarations · tous DEC_STATUT = A_FAIRE · types SCC/LOOF
- Colonnes : DEC_ID · DEC_TYPE · DEC_DATE_EVENEMENT · DEC_ECHEANCE · DEC_STATUT · DEC_MONTANT · DEC_NUM_DOSSIER · DEC_COMMENTAIRE
- Toutes échéances dépassées → toutes en retard (fond rouge)
- Route POST /portail/envoyer — délègue à envoyerNotification()
- 4 bugs corrigés dans envoyerNotification() : PCA_ID, PCA_ACTIF, PCA_TOKEN, suppression PCT_ID/PCN_CORPS
- Historique notifications validé : 3 entrées ENVOYE en BDD · SMTP Gmail actif
- Docs GitHub Pages S70 pushées — changelog + roadmap + pilotage + API ref groupe 21
- Bouton 💹 Appliquer tarif sur fiche devis [id] — désactivé si FACTURE · bandeau vert/rouge
- Page /app/bon-livraison/[id] — infos BL + lignes + actions BROUILLON→ENVOYE→LIVRE
- Page /app/bon-retour/[id] — infos BR + motif + actions →TRAITE/REFUSE
- Page /app/demande-avoir-fourn/[id] — infos DAF + motif + actions →ACCEPTE→REMBOURSE/REFUSE
- Numéros cliquables dans les 3 pages liste
- 📝 JSDoc 240 routes — couverture totale, 115 commentaires insérés, règle R-30 instaurée
- 🔗 Sidebar : lien 💹 Tarification ajouté + hrefs BL/BR/DAF corrigés
- 🔔 Onglet Notifications Portail : 5 configs PNC_*, toggles, modal HTML, historique envois
- 🤖 Eliot tool 18 :
get_registre_sanitaire— liste/détail séjours sanitaires - 🤖 Eliot tool 19 :
create_evenement_sanitaire— ajout événement journal - 🤖 Eliot tool 20 :
get_alertes_vaccins— vaccins manquants RAGE/CHC/LEUCOSE - ✅ Page Mémoire Eliot commitée (dette ROUGE S69 soldée)
- Memoire Eliot persistee — 2 tables BDD · tool memoriser (17e tool) · page admin /parametres/eliot-memoire
- Notifications portail client — table config + 5 seeds + envoyerNotification() · hooks devis/facture
- Export CSV factures — route GET /api/factures/export-csv · 143 factures · BOM UTF-8
- Fix crash /app/clients — race condition Leaflet (R-29)
- Fix portailDone undefined — modal portail clients/[id] validee
- Refonte modal registre sanitaire — charte calquee sur registre C.D.
- Fix globals.css — selecteurs html.light (R-25)
- R-25 : Selecteur CSS theme clair = html.light (pas [data-theme])
- R-26 : Routes specifiques avant routes parametriques (/export-csv avant /:ref)
- R-27 : FAC_TOTAL_TTC (pas FAC_TOTAL_HT)
- R-28 : Composants React — declarer tous les etats dans le composant
- R-29 : Leaflet — mapReady state + setMapReady(true) dans script.onload
- Charte graphique registres — 120+ classes Tailwind → variables CSS
- Composant partagé
AnimalSearchComboBox.tsx— recherche ANI_NOM + TIE_RAISON_SOCIALE - Route
GET /api/animal/search-complet— jointure animal + tiers + race - Pré-remplissage formulaires BDD — 4 champs registre sanitaire · 10 champs registre C.D.
- 3 tools Eliot registre carnivores (get · create · update_sortie) — 16 tools total
- Export CSV règlements — route + bouton TSX
- SAV Suite v3.0 publiée — 3 outils fusionnés
- Fix
React.useState → useStatenamed import dans registres - Fix
setSelectedAnidans onSelect (bouton disabled) - Fix
FAC_NUMERO → FAC_NUMdans export CSV - BDD :
ANI_ESPECE = 'CHIEN'sur Frimousse (ANI_ID=22) - Fix backticks échappés dans hooks injectés
- Migration
app.use() → instance.use()— 94 routes · 0 restant - Fix registre C.D. :
FROM animaux → FROM animal·TIE_NOM → TIE_RAISON_SOCIALE - Sidebar ELEVEUR, PET_SITTER, PENSION_CHENIL — item Registre C.D. ajouté
- Pages docs 58→62 : registres réglementaires + GED + tarification
- 3 outils SAV refondus (Analyseur · Maintenance · Handover)
- 4 specs S68 produites
- R-19 : instance.use() — jamais app.use()
- R-20 : useState AVANT tout return conditionnel
- R-21 : sous-requêtes registre C.D. (ambiguïté MariaDB)
- Sidebar accordéon — 7 groupes repliables + sessionStorage + METIER_MENUS 10 métiers
- Registre sanitaire — tables BDD + 5 routes + 2 pages (Pension / Pet-Sitter)
- Corrections SQL v4→v9 : /planning · /avoirs · /achats · /factures/avoir · /clients
- Migration table
race— RACE_GROUPE + RACE_NUMERO_STANDARD FCI - Sidebar Achats : BL / BR / DAF / Règlements / Inventaires
- sst.SST_NOM → sst.STY_LIBELLE dans planning
- FAC_ID_ORIGINE → FAC_ID dans avoirs
- CMF_ID → ACH_ID dans bon-a-payer
- Route /api/clients créée (manquait)
- GED Filesystem — volume Docker + table
ged_fichier+ 57 fichiers migrés - Tarification 3 méthodes — COEF_FG+MARGE · COEF_VTE · PRIX_DIRECT
- Modules BL / BR / DAF / AC — 16 routes + 4 tables + 4 pages TSX
- Eliot tools : create_seance · get_planning · send_portail_link
- 14 routes manquantes ajoutées · Page elevage/declarations créée
- Dette technique S63 soldée (5 routes 404, doublons Eliot, getDbGed)
- devis_contrat_ligne (était devis_ligne)
- achat_entete (était commande_fournisseur)
- avoir_client (était avoir)
- Alias sst dans planning corrigé
- Validation scan 20/20 routes opérationnelles
- Migration GED — 57 entrées dans
ged_fichier - Fix crash
clients/[id]— React error #310 (useState hooks) - Table
registre_carnivores+ 4 routes API - 3 pages UI : Pet-Sitter / Pension / Élevage
- Composant partagé
RegistreCarnivorePage.tsx
- Fix
FROM animaux → FROM animal - Fix
TIE_NOM → TIE_RAISON_SOCIALE(2 occurrences) - Sidebars ELEVEUR, PET_SITTER, PENSION_CHENIL — lien Registre C.D.
- Filtres métier /registre-carnivores validés 200 OK
- POST /portail/auth/login — connexion par token, création session
- POST /portail/auth/logout — invalidation session
- GET /portail/animaux — animaux du client connecté
- GET /portail/seances — séances (SEA_DATE_DEBUT)
- GET /portail/factures — factures du client
- GET /portail/notifications — notifications (colonnes PCN_*)
- GET /portail/admin/acces — liste accès praticien
- POST /portail/admin/acces — créer accès portail
- PUT /portail/admin/acces/:id/toggle — activer/désactiver
- POST /portail/admin/acces/:id/send-link — envoyer lien email
- POST /portail/seances/:id/confirmer — confirmation séance
- PUT /param-smtp — sauvegarde config SMTP
- /client/[token] — espace client : login auto, 4 onglets (séances/factures/animaux/notifications)
- /app/parametres/portail — admin portail : select 500 tiers, email auto depuis TIE_EMAIL, copier/envoyer/toggle
- Sidebar : tuile 🔗 Portail Client sous groupe Communauté
- Liste clients : bouton 🔗 Portail par ligne
- Fiche client : bouton 🔗 Portail dans PageHeader
- update_statut_devis — BROUILLON→ENVOYE→ACCEPTE→REFUSE→ANNULE
- create_facture_depuis_devis — convertit devis ACCEPTE en facture
- create_reglement — INSERT sans REG_STATUT (corrigé)
- ANI_CLI (pas TIE_ID) dans table animal
- SEA_DATE_DEBUT (pas SEA_DATE) dans table seance
- TIE_RAISON_SOCIALE (pas TIE_NOM/PRENOM)
- REG_STATUT inexistant → supprimé du INSERT
- DCE_STATUT enum : FACTURE n'existe pas → retiré
- FAC_NUM (pas FAC_NUMERO_INT) dans POST /devis/:id/facturer
- Doublons execTool Eliot nettoyés (3 doublons)
- send-link ID parsing → urlParts[urlParts.length - 2]
| Description | Module | Criticité |
|---|---|---|
| PUT /devis/:id — lignes non supportées | Devis | ROUGE |
| POST /devis/:id/facturer — colonnes facture à vérifier | Factures | ROUGE |
| REG_STATUT encore présent dans un INSERT (L~56376) | Règlements | ROUGE |
| Tools Eliot doublons dans liste déclarée (3 tools x2) | Eliot | ROUGE |
| create_reglement — test end-to-end à faire | Eliot | ORANGE |
| portailEmail initialisé avant chargement client | Portail admin | ORANGE |
| /app/elevage/declarations — page TSX manquante | Elevage | JAUNE |
| Export CSV règlements | Règlements | JAUNE |
- POST /editions/upload-logo — upload logo en GED
- GET /editions/upload-logo — lecture logo base64
- POST /editions/upload-filigrane — upload filigrane
- GET /editions/upload-filigrane — lecture filigrane base64
- POST /editions/upload-cgv — upload CGV PDF
- GET /editions/cgv/preview — preview PDF CGV
- GET /editions/devis/:id — PDF puppeteer avec param_edition
- GET /editions/facture/:id — PDF puppeteer avec param_edition
- Paramètres Éditions — zone upload logo + filigrane + CGV
- Aperçu filigrane avec fond transparent
- Widget Eliot IA — 7 tools : get_client, get_animal, create_devis, create_seance, get_planning, get_factures, send_email
- ED_LOGO_BASE64 LONGTEXT, ED_FILIGRANE_BASE64 LONGTEXT
- PE_CGV_DOC_ID BIGINT, PE_CGV_BASE64 LONGTEXT
- ANI_ESPECE → ANI_ESPECE_RACE (comptage espèces)
- Whitelist PARAM_EDITION_COLS (SQL error save)
- Filigrane texte → zone image upload
- ✓ entité HTML → Unicode ✓
- Drag fluide, panneau adaptatif, 20 avatars WebP compressés
- Vocal (Web Speech API), nom configurable, position persistée
- Route POST /ia/chat — proxy Anthropic API côté serveur
- ANTHROPIC_API_KEY sécurisée (jamais exposée frontend)
- portail_client_acces (PCA_ID, PCA_TOKEN, PCA_ACTIF…)
- portail_client_session (PCS_SESSION_TOKEN…)
- portail_client_notification (PCN_TYPE, PCN_CANAL…)
- portail_client_action (log des actions client)
- Planning journalier — vue Jour grille 7h-20h30
- 43 strings SQL multi-lignes fusionnées
- 20 nouvelles routes stats : kpis, ca-par-mois, especes, top-clients, villes, especes-ca, planning-seances…
- Dashboards 9 métiers alimentés en données réelles
- Carte clients Leaflet v2 — géocodage batch api-adresse.data.gouv.fr, 140/167 localisés
- Page statistiques : CA 48 014 €, panier moyen 231 €
- Export CSV factures et séances (UTF-8 BOM, séparateur ;)
- GET /roles, GET /roles/:id/permissions, GET /user-permissions
- 4 rôles : ADMIN, GESTION, CONSULT, COMPTA — middleware permissions par module
- UI gestion rôles + permissions par module (can_read, can_write, can_delete)
- GET/POST /forfaits, GET/POST /formules, POST /formules/:id/souscrire, POST /formules/:id/consommer
- Catalogue forfaits par métier, souscriptions clients, consommation séances auto-statut EPUISEE
- Signatures Yousign — paramètres UI, demandes, webhook statut
- GET /leads, /crm/leads, /crm/stats, /crm/opportunites, /crm/activites, /crm/campagnes, /crm/tags
- crm_lead, crm_opportunite, crm_activite, crm_note, crm_campagne, crm_tag, crm_tag_lien
- Pipeline CRM kanban, formulaire lead public, campagnes ciblées
- Agenda planning séances — vue semaine + drag & drop
- Charte graphique globale navy/gold appliquée sur toutes les pages
- Boutons btn-danger, AideContextuelle uniformisée
- GET /comptabilite/fec-export, /bilan/*, plan-comptable
- Page règlements, export FEC conforme PCG 2025, bilan comptable
- param_stock, stock_lot, stock_mouvement, inventaire, inventaire_ligne, sortie_stock
- Routes /stock/* — mouvements, inventaires, correction PMP
- Pages stock liste, mouvements, inventaires, sorties, correction PMP
- demande_prix, commande_fournisseur, bon_livraison_fourn, facture_fournisseur, bon_retour, avoir_fournisseur, reglement_fournisseur
- elevage : portées, saillies, gestations, réservations chiots, généalogie
- Routes /achats/* complet + /elevage/*
- GET /ged-cac/animal/:id/evolution, /ged-cac/animal/:id/score
- Carte clients Leaflet v1 — géocodage batch via api-adresse.data.gouv.fr
- Notice utilisateur v4 — élevage, achats, inventaires, RS, topbar v2
- Uniformisation boutons ← Retour et + Nouveau
- GET /reseaux-sociaux/comptes, /reseaux-sociaux/publications
- GED polymorphe — documents par type (ANIMAL, FACTURE, TIERS, EDC_FICHE…)
- Topbar v2 — notifications, profil, accès rapide
- Charte navy/gold appliquée sur 96 pages UI
- PDF modal uniquement — jamais window.open()
- Commentaires BDD 241/241 colonnes documentées
- Doublon AideContextuelle supprimé, btn-danger unifié
- S48 — Agenda planning séances, signatures Yousign UI, pages paiements
- S47 — CRM complet (leads, opportunités, activités, campagnes, tags)
- S46 — Seeds démo : Jean Dujardin, Frimousse (Malinois), devis/factures
- S44-S45 — Dashboards métiers, devis/new v2, droits utilisateurs RBAC
- S42-S43 — Statistiques avancées, questionnaires, export FEC
- S38-S41 — Programmes suivi CAC, SMS Twilio, Stripe portail, PWA mobile
- S35-S37 — GED complète, factures fournisseurs, avoirs
- S32-S34 — Agenda visuel, templates devis, SMTP, PDF avancé
- S30-S31 — Setup BDD, Auth JWT, CRUD tiers/animaux/séances