Portail Client complet · Eliot tools étendus · Email nodemailer · Harmonisation charte docs
instance.use()portail_client_acces : PCA_ID, PCA_TOKEN, PCA_ACTIF, PCA_DATE_EXPIRATION, PCA_EMAIL, TIE_IDportail_client_session : PCS_SESSION_TOKEN, PCS_DATE_FIN, PCS_ACTIF, PCA_IDanimal : ANI_CLI (pas TIE_ID), ANI_PUC (pas ANI_PUCE)seance : SEA_DATE_DEBUT (pas SEA_DATE)tiers : TIE_RAISON_SOCIALE (pas TIE_NOM/TIE_PRENOM)reglement : pas de REG_STATUT — colonnes réelles : REG_ID, FAC_ID, REG_DATE, REG_MONTANT, REG_MODE, REG_REFERENCE_readBody() obligatoire sur tous les POSTNestJS ne parse pas le body avant instance.use(). Toutes les routes POST portail utilisent désormais le helper _readBody() pour parser le corps de la requête.
/client/[token] — Espace client publicLogin automatique via token URL, 3 onglets : Séances / Factures / Animaux. Confirmation de séance intégrée.
/app/parametres/portail — Page admin portailTIE_EMAIL avec badge "depuis la fiche client"http://[host]/client/[TOKEN_64_chars]TIE_ID=1 (Deneuve, Catherine) — Login OK, 5 animaux, 4 séances, 8 factures affichés correctement.
send_email → vrai envoi nodemailer (lit param_smtp, génère PDF, envoie avec PJ)POST /portail/admin/acces/:id/send-link → envoie lien portail par emailPUT /param-smtp → sauvegarde config SMTP depuis l'UISMTP : smtp.gmail.com:465, App Password configuré. Email reçu sur nicolashermilly@gmail.com.
update_statut_devis — Transitions BROUILLON→ENVOYE→ACCEPTE→REFUSE→ANNULE ✅create_facture_depuis_devis — Convertit devis ACCEPTE en facture via /devis/:id/facturer ✅create_reglement — INSERT reglement sans REG_STATUT (colonnes réelles) ✅3 tools (update_statut_devis, create_facture_depuis_devis, create_reglement) apparaissent en doublon dans la liste déclarée (pas dans l'implémentation). À nettoyer.
harmoniser_charte.pyScript Python appliqué sur l'ensemble des fichiers HTML de C:\AnimGest_Sav. Design system Anim'Gest (navy/gold, Playfair Display + DM Sans, nav sticky) uniformisé sur toute la documentation.
mon_script.py — inspection complète de custom-routes.ts : routes, app.use() / instance.use(), getDb(), tools Eliot, colonnes problématiquesapp.use() restants → migrer vers instance.use()Migration progressive par module planifiée (formules, devis, factures…). 48 routes déjà migrées en S63.
createConnection sur BDD GED (lignes 2286, 2317, 2355, 2393)À remplacer par un helper getDbGed() pour uniformiser la gestion des connexions.
REG_STATUT résiduel dans un INSERT reglementColonne inexistante encore présente dans un INSERT (~L56376). À supprimer en S64.
| Hash | Description | Repo |
|---|---|---|
| b687f04 | S63 - Portail Client complet + Eliot tools S63 + Email nodemailer + Sidebar | micro_logiciel |
| 4a7b95e | S63 - Handover final | petsuite-docs |
| fbe0e7d | charte: harmonisation design system Anim'Gest — 94 fichiers | petsuite-docs |
Routes API : ~115 · Pages UI : 106 · Eliot tools : 10 (déclarés : 13 avec doublons à corriger)