| App locale | http://localhost/app/ |
| GitHub docs | https://nicolashermilly.github.io/Anim'Gest-docs/ |
| Deploy | …\anim_gest_frontend_nextjs\deploy |
| $apiFile | …\api\src\custom-routes.ts |
| BDD MariaDB | 192.168.1.62:3307 / @lgorithme / anim_gest |
| Backup S39 | C:\Backup\anim_gest\20260322_fin_s39.sql ✅ |
| Docs repo local | C:\Users\AdminPC\AppData\Local\Temp\Anim'Gest-docs-s33 |
cd "D:\...\anim_gest_frontend_nextjs" .\COPIER_TOUTES_PAGES_v2.ps1 cd deploy docker compose build api --no-cache && docker compose up -d api # Rebuild tout docker compose build api frontend --no-cache && docker compose up -d api frontend && docker compose restart nginx # Sauvegarde début S40 & "C:\ProgramData\OptimBTP\MariaDB\bin\mysqldump.exe" -h 192.168.1.62 -P 3307 -u "@lgorithme" --password="@lgoritHme+2025+977_73300" --single-transaction --skip-lock-tables anim_gest > C:\Backup\anim_gest\20260322_debut_s40.sql
cd deploy avant docker composeCOMMENT 'Relation NomTable - description'v_portees_suivi, v_gestations_en_coursfacture_rfe_evenement) - colonnes à confirmerfacture_litige) - colonnes à confirmer/app/parametres/api-keys - version S39 avec URLs paramétrables non déployéeGET/POST /param-urls - à créer dans custom-routes.tsPOST /reglements, POST /achats toujours cassés| Route | Erreur | Fix |
|---|---|---|
POST /reglements | 400 - body non lu | Remplacer req.body par req.on('data') |
POST /achats | 500 - undefined bind | Null-safety sur champs optionnels |
POST /seances | 500 - NestJS conflit | Pointer frontend sur /seances/custom |
POST /communaute/moderer/:id | 500 - undefined bind | Null-safety + body parsing |
Toutes les routes POST élevage ont le même bug body parsing - les corriger en même temps.
Exécuter DESCRIBE facture_rfe_evenement; DESCRIBE facture_litige; dans HeidiSQL puis insérer :
$root = "D:\...\anim_gest_frontend_nextjs" Copy-Item "C:\Users\AdminPC\Downloads\api-keys-page-s39.tsx" "$root\src\app\app\parametres\api-keys\page.tsx" -Force
Puis créer la route GET/POST /param-urls dans custom-routes.ts - table param_url à créer (PRM_KEY, PRM_VALUE).
Intégrer <DocumentActions /> dans les PageHeader de :
/app/factures/[id] + onglets RFE + litige/app/achats/[id] + onglets Règlements / Avoirs / Retours / SEPA/app/devis/[id] - bouton signature déjà présent, uniformiserLe fichier fait ~110 000 chars. Découper en modules :
| Fichier | Contenu |
|---|---|
routes-elevage.ts | Portées, naissances, saillies, gestations, carnets |
routes-signatures.ts | Yousign, webhook HMAC |
routes-commercial.ts | Devis, factures, avoirs, règlements, achats |
routes-parametres.ts | param_yousign, param_pdp, param_smtp, param_urls |
StatusBadge - badge statut coloré (BROUILLON, ENVOYE, SIGNE, ACCEPTEE…)TabBar - barre d'onglets uniforme (remplacer les implémentations ad-hoc)ContactSelector - extraire de EmailModal + SignatureModal| Route | Méthode | Statut |
|---|---|---|
| /elevage/portees | GET | ✅ 200 - 2 portées |
| /elevage/gestations | GET | ✅ 200 - 2 gestations |
| /elevage/reservations | GET | ✅ 200 - 6 réservations |
| /elevage/carnet/:nai_id | GET | ✅ 200 - HTML imprimable |
| /signatures | GET | ✅ 200 S38 |
| /devis/:id/signature | GET/POST | ✅ 200 S38 |
| /factures/:id/rfe | GET/POST | ✅ 200 |
| /param-pdp | GET/POST | ✅ 200 - Pennylane actif |
| /reglements | POST | ❌ 400 body parsing |
| /achats | POST | ❌ 500 undefined params |
| /seances | POST | ⚠️ 500 NestJS conflit |
| /communaute/moderer/:id | POST | ⚠️ 500 undefined |
| /param-urls | GET/POST | ❌ À créer S40 |
| /vocal/* | * | ❌ Non implémenté |
| Sprint | Objectif |
|---|---|
| S40 | Corrections POST body parsing, page api-keys + /param-urls, seeds RFE complets, DocumentActions tous écrans, composants StatusBadge/TabBar |
| S41 | Split custom-routes.ts, assistant vocal MCP, adaptation écrans par métier |
| S42 | Vidéos démo par métier, préparation commerciale NoSage's Editor, onboarding guidé |