🔑 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 S37 | C:\Backup\anim_gest\20260321_fin_s37.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
& "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_s38.sql
- Toujours
cd deploy avant docker compose
- Injections Python →
[System.IO.File]::WriteAllText(...) avec New-Object System.Text.UTF8Encoding $false
- TOUTES les éditions PDF = Modal/Popup - jamais de navigation vers nouvelle page
- Commentaires BDD FK :
COMMENT 'Relation NomTable - description'
🏆 État fin S37
✅ Infrastructure & API
custom-routes.ts : 88 748 chars - toutes les routes S37 opérationnelles
- Modules dynamiques
POST /parametres/modules → 4 modules OK
- Routes S37 :
/achats/:id/reglements, /achats/:id/avoirs, /achats/:id/retours, /achats/:id/sepa, /factures/:id/rfe, /factures/:id/litiges, /param-pdp, /tva, /utilisateurs
✅ BDD (tables créées S37)
achat_reglement, achat_avoir, achat_retour, facture_rfe_evenement, facture_litige, param_pdp, param_yousign, signature_demande, tables vocales
✅ Pages frontend créées S37
/app/factures/rfe, /app/parametres/pdp, /app/achats/[id]/reglements, /app/programmes, /app/questionnaires
🚨 Priorité 1 - Signature électronique Yousign
Routes à créer (7)
GET /signatures - liste toutes signatures
GET /signatures/:id - détail + événements
POST /signatures/init - upload PDF + créer signataire Yousign
POST /signatures/:id/send - activer/envoyer
POST /signatures/:id/cancel - annuler
GET /devis/:id/signature - signature liée à un devis
POST /devis/:id/signature - initier signature depuis devis
POST /signatures/webhook - callback Yousign (vérif HMAC)
Pages à créer
/app/signatures - liste + statuts + liens signature
- Bouton
🖊️ Envoyer à la signature dans /app/devis/[id]
🚨 Priorité 2 - Corrections API urgentes
| 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 | Route individuelle manquante |
📊 État routes API (fin S37)
| Route | Méthode | Statut |
| /parametres/modules | GET/POST | ✅ 200 |
| /factures/:id/pdf | GET | ✅ 200 |
| /factures/:id/rfe | GET/POST | ✅ 200 S37 |
| /achats/:id/reglements | GET/POST | ✅ 200 S37 |
| /elevage/alertes | GET | ✅ 200 |
| /reglements | POST | ❌ 400 body parsing |
| /achats | POST | ❌ 500 undefined params |
| /seances | POST | ❌ 500 NestJS conflit |
| /factures/entrants | GET | ❌ 404 à créer |
| /signatures/* | * | ❌ Non implémenté |
| /communaute/moderer/:id | POST | ❌ 404 manquant |
| /vocal/* | * | ❌ Non implémenté |
🎬 Vidéos de démonstration
- Vidéo 1 - Tour complet (8 min) : Paramètres → Client+2contacts+2chiens → EC → Devis → Signature → Facture → Règlement → FEC → Stats → CRM → PDF
- Comportementaliste - EC + programmes + CAC + facturation
- Toiletteur - Planning salon + forfaits + abonnements
- Pet-sitter - Visites + gardes + rapports + promenades
- Éleveur - Saillies + gestations + portées + LOF + cessions
- Éducateur - Cours collectifs/individuels + bilans + progression