📋 Release Notes

Sprint S74

Module AC Avoir Client complet · PDF BL/BR/DAF/AC · Eliot tool 22 · 1791 colonnes BDD commentées

📅 09 avril 2026 🔀 4 commits 🖥️ 121 pages UI 🔌 ~189 routes API 🤖 22 Eliot tools
4
Commits dev
8
Nouvelles routes API
1791
Colonnes BDD commentées
22
Eliot tools actifs
99
Score global /100
📝 Fix docs GitHub Pages S73 ORANGE

Patches S73 non pris en fin de sprint précédent

  • docs-changelog.html — onglet S73 ajouté actif, nav-badge S73
  • 06-roadmap.html — S74 en cours, S73 livré, tâches ORANGE S74 à jour
  • 20-pilotage-projet.html — bloc S73 injecté dans historique, scores BDD 93/100

✅ Commit a0cb396

📋 Module AC — Avoir Client complet ORANGE

Guards R-26 / R-32 — protection routes

Guard R-26 sur GET /avoir-client liste pour rejeter les sous-chemins. Guard R-32 sur GET /avoir-client/:id avec filtre urlParts.length === 2 — empêche l'interception de /:id/lignes.

PUT /avoir-client/:id — mise à jour

Whitelist 6 champs : AVC_STATUT, AVC_MOTIF, AVC_TOTAL_HT, AVC_TOTAL_TTC, AVC_DATE_EMISSION, AVC_COMMENTAIRE. Pattern _readBody() obligatoire.

Routes lignes — placées AVANT /:id (R-26)

GET /avoir-client/:id/lignes POST /avoir-client/:id/lignes

Insertion d'une ligne déclenche les triggers MariaDB qui recalculent AVC_TOTAL_HT et AVC_TOTAL_TTC automatiquement.

Page /app/avoir-client/[id]/page.tsx — NOUVEAU

  • Section lignes avec tableau avoir_client_ligne
  • Formulaire ajout ligne (désignation, quantité, PU HT, TVA)
  • Totaux HT / TVA / TTC recalculés par trigger
  • Lien vers la facture origine (FAC_NUM)
  • Bouton PDF avec modal srcDoc (à aligner S75)

Liste /app/avoir-clientAVC_NUMERO cliquable

Chaque numéro AC-AAAA-XXXX est maintenant un lien vers /app/avoir-client/[id]. Suite BL → BR → DAF → AC complète ✅

✅ Commit 5e56674

🗄️ BDD — Table avoir_client_ligne + 3 triggers

Table avoir_client_ligne créée via HeidiSQL

  • ACL_ID INT AUTO_INCREMENT PRIMARY KEY
  • AVC_ID INT NOT NULL — Relation avoir_client
  • ACL_DESIGNATION VARCHAR(255) NOT NULL
  • ACL_QTE DECIMAL(10,2) DEFAULT 1.00
  • ACL_PU_HT DECIMAL(10,2) DEFAULT 0.00
  • ACL_TVA_TAUX DECIMAL(5,2) DEFAULT 20.00
  • ACL_TOTAL_HT · ACL_TOTAL_TTC · ACL_CREE_LE DATETIME

3 triggers AFTER INSERT / UPDATE / DELETE

  • trg_acl_after_insert — recalcul à l'ajout d'une ligne
  • trg_acl_after_update — recalcul à la modification
  • trg_acl_after_delete — recalcul à la suppression

Chaque trigger met à jour AVC_TOTAL_HT et AVC_TOTAL_TTC dans avoir_client par somme des lignes.

✅ Donnée de test

ACL_ID=1, AVC_ID=1 — Remboursement consultation comportementale — 85€ HT / 102€ TTC

📄 PDF Éditions — BL / BR / DAF / AC

4 nouvelles routes éditions HTML

GET /editions/bon-livraison/:id GET /editions/bon-retour/:id GET /editions/demande-avoir-fourn/:id GET /editions/avoir-client/:id

Détail des éditions par document

  • BL — lignes sans prix (document transport) · accent violet #4F46E5
  • BR — lignes + totaux HT/TVA/TTC · accent amber #F59E0B
  • DAF — lignes + BR lié + motif · accent violet #8B5CF6
  • AC — lignes avoir_client_ligne + totaux · accent vert #10B981

Boutons PDF + modals sur pages [id]

Pages BL/BR/DAF/[id] : bouton 🖨️ PDF → modal <iframe src="/api/editions/..."> (pattern standard R-23).

Page AC/[id] : modal srcDoc (fetch HTML inline) — à aligner sur src URL en S75.

Fix SQL — f.FAC_NUM

Correction f.FAC_NUMEROf.FAC_NUM dans les jointures facture des routes PDF (règle R-27).

✅ Commits 62fc49f + 16fbcfd

🤖 Eliot — Tool 22 : get_avoirs_client

get_avoirs_client — 22e tool de la boucle agentique

  • Filtres : statut (BROUILLON · EMIS · REMBOURSE · ANNULE) + tie_id
  • Retourne : total, total_ttc, avoirs[]
  • Chaque avoir : numéro, client, montant HT/TTC, statut, motif, facture origine
  • Format one-liner respectant la règle R-33 ✅ (pas de ,{ en début de ligne)

✅ Test validé

"liste moi les avoirs client" + métier COMPORTEMENTALISTE → retourne AC-2604-0001, Catherine Deneuve, 85€ HT, statut EMIS.

✅ Commit 16fbcfd

🗄️ BDD — 1791 colonnes commentées (Conv2)

Couverture totale — 171 tables micro_logiciel

1791 colonnes commentées via ALTER TABLE MODIFY COLUMN ... COMMENT '...'. Dette technique BDD soldée — score passe de 93 → 98/100.

Conventions établies — Règle R-34

  • FK : Relation table_liee - description attendue
  • PK : Identifiant unique de l enregistrement [table]
  • Fix : DEFAULT NULL (keyword SQL) — jamais DEFAULT 'NULL' (string littérale) sur nullable
🔀 Commits S74
HashConvDescription
a0cb396Conv1docs(S74): fix docs-changelog + roadmap + pilotage — patches S73 non pris
5e56674Conv1feat(S74): module AC avoir_client — guards + PUT + routes lignes + page [id] + lien liste
62fc49fConv2feat(S74): routes PDF editions BL/BR/DAF/AC + boutons modal srcdoc
16fbcfdConv1feat(S74): Eliot tool get_avoirs_client (tool 22) + route PDF AC avec lignes
📊 Scores qualité S74
Backend
99
S73 : 98 ▲ +1
Frontend
99
S73 : 99 — stable
BDD
98
S73 : 93 ▲ +5
Global
99
S73 : 98 ▲ +1

Routes API : ~189 (+8) · Pages UI : 121 (+1) · Eliot tools : 22 (+1) · JSDoc : 240/240 ✅ · app.use() : 0 · Colonnes BDD : 1791/1791 ✅

⚠️ Dette technique → S75

Aucun ROUGE ni ORANGE — uniquement des items JAUNE.

ItemPrioritéAction
Modal PDF AC — aligner sur pattern src URL JAUNE Remplacer srcDoc par <iframe src="/api/editions/avoir-client/:id">
Tarification UI — 3 méthodes sur le devis JAUNE COEF_FG+MARGE · COEF_VTE · PRIX_DIRECT — colonnes BDD et routes présentes depuis S64
Vue Carte /app/clients JAUNE Réactiver géocodage + Leaflet — conditionnel accès réseau externe (WireGuard VPN ?)
Supprimer micro_logiciel_ged JAUNE Après validation GED complète