🔑 Chemins essentiels
| App locale | http://localhost/app/ |
| GitHub docs | https://github.com/nicolashermilly/Anim'Gest-docs |
| GitHub Pages | 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 S38 | C:\Backup\anim_gest\20260321_fin_s38.sql ✅ |
⚙️ Règles critiques
$apiFile = "D:\...\api\src\custom-routes.ts"
# Avant tout build frontend
cd "D:\...\anim_gest_frontend_nextjs"
.\COPIER_TOUTES_PAGES_v2.ps1
cd deploy
# Rebuild API seule
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 BDD début S39
& "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_s39.sql
- Toujours
cd deploy avant docker compose
- TOUTES les éditions PDF = Modal/Popup - jamais de navigation vers nouvelle page
- Commentaires BDD FK :
COMMENT 'Relation NomTable - description'
- EDC supprimé → utiliser
EC (Étude Comportementale) partout
🏆 État fin S38
✅ Module Élevage - complet S38
- 14 routes API élevage opérationnelles : saillies, gestations, portées, naissances, poids, vaccins, réservations, déclarations, carnet PDF
- 3 tables créées :
elevage_chiot_poids, elevage_reservation, elevage_vaccination
- Seeds démo : 2 portées, 10 chiots, poids J0→J60, vaccinations, 8 réservations
- Page
/app/elevage branchée API - 4 onglets : Portées / Suivi naissance / Réservations / Déclarations
✅ Signature Yousign - livré S38
- 7 routes API créées,
signature_evenement créée en BDD
- Pages
/app/signatures + /app/signatures/[id]
SignatureModal v2 avec contacts + TTS vocal
DocumentActions composant unique PDF/Email/Signature
- Page
/app/parametres/api-keys - 5 services (Yousign, Pennylane, SMTP, Stripe, SMS)
- Test end-to-end réussi : SGN_ID créé, PDF généré via pdfkit, signataire Yousign OK
✅ Refonte charte S39
- Page Élevage refonte complète sur charte CSS Variables (fini le thème dark hardcodé)
- Remplacement global EDC → EC : 9 fichiers, 0 résiduel
- Doc
41-composants-techniques.html publié sur GitHub Pages
- Index docs mis à jour : 43 docs, Sprint S39
🚨 Priorité 1 - Carnet de naissance PDF (Modal)
✅ Route GET /elevage/carnet/:nai_id prête - génère HTML complet avec courbe poids SVG, filiation, identification, zones signature
- Bouton 📄 Carnet de naissance dans onglet "Suivi naissance" → modal iframe
- Pattern identique modal PDF des devis
🚨 Priorité 2 - Corrections API urgentes S39
| Route | Erreur | Fix |
POST /reglements | 400 body parsing | Ajouter req.on('data') |
POST /achats | 500 undefined params | Null-safety champs optionnels |
POST /seances | 500 NestJS conflit | Workaround /seances/custom |
GET /factures/entrants | 404 | Créer route + page inbox PDP |
POST /communaute/moderer/:id | 404 → 500 | Route individuelle + null-safety |
🚨 Priorité 3 - DocumentActions sur tous les écrans
Le composant DocumentActions (PDF/Email/Signature) doit être intégré sur :
/app/factures/[id] + onglets RFE + litige
/app/achats/[id] + onglets Règlements / Avoirs / Retours / SEPA
/app/achats/[id]/avoir - formulaire avoir + bon de retour
/app/factures/entrants - inbox factures reçues PDP
🚨 Priorité 4 - Module Élevage améliorations S39
- Onglet Saillies dans
/app/elevage - formulaire + liste (routes ✅)
- Onglet Gestations - suivi échographies + terme (routes ✅)
- Page
/app/elevage/portees/[id] - vue détaillée avec tous les chiots
- Sidebar : section "Élevage" avec liens Portées / Réservations / Déclarations
📊 État routes API (fin S38)
| Route | Méthode | Statut |
| /parametres/modules | GET/POST | ✅ 200 |
| /factures/:id/pdf | GET | ✅ 200 |
| /signatures | GET | ✅ 200 S38 |
| /signatures/:id/send | POST | ✅ 200 S38 |
| /devis/:id/signature | GET/POST | ✅ 200 S38 |
| /elevage/portees | GET/POST | ✅ 200 S38 |
| /elevage/carnet/:nai_id | GET | ✅ 200 S38 |
| /param-pdp | GET/POST | ✅ 200 |
| /reglements | POST | ❌ 400 body parsing |
| /achats | POST | ❌ 500 undefined params |
| /seances | POST | ❌ 500 NestJS conflit |
| /factures/entrants | GET | ❌ 404 à créer |
| /communaute/moderer/:id | POST | ⚠️ 500 undefined |
| /vocal/* | * | ❌ Non implémenté |
🗺️ Roadmap S39 → S41
| Sprint | Objectif principal | Statut |
| S39 | Corrections API urgentes, DocumentActions tous écrans, élevage améliorations, charte EC | 🔄 En cours |
| S40 | Split custom-routes.ts, composants StatusBadge/TabBar, assistant vocal MCP | 📋 Planifié |
| S41 | Adaptation écrans par métier, vidéos démo, préparation commerciale | 📋 Planifié |