3.3 KiB
3.3 KiB
Objet
Analyse synthétique de lecoffre-back-mini
(Express + TypeScript).
Périmètre et stack
- Serveur: Express 4
- Langage: TypeScript (ts-node en dev,
tsc
en build) - Entrée:
src/server.ts
→dist/server.js
Arborescence notable
src/routes
: routes (email, health, idnot, process, sms, stripe)src/controllers
: logique par domainesrc/services
: intégrations (email, idnot, signer, sms, stripe)src/middleware
: auth, erreurs, session, validationsrc/utils
: tokens, logger, result, validations, session managersrc/config
: configuration (email, sms, stripe, signer)
Comportements serveur
- CORS: configurable via
config.cors
- Logs requêtes: middleware chronomètre +
Logger.logRequest
- Gestion erreurs: middleware centralisé
errorHandler
- Tâches récurrentes:
- nettoyage sessions (5 min)
- purge tokens expirés (1 h)
- retry emails (1 min)
- Arrêts propres: gestion
SIGINT
/SIGTERM
, exceptions et promesses rejetées
Changements IdNot
- L’endpoint d’authentification accepte désormais le code en POST corps JSON sur
/api/v1/idnot/auth
(au lieu d’un segment d’URL). - Le handler supporte à la fois
req.params.code
etreq.body.code
pour compatibilité, mais l’usage recommandé estreq.body.code
.
Gestion des erreurs HTTP
400
:- JSON invalide (erreur de parsing du corps) → mappé explicitement par
errorHandler
- Code d’autorisation IdNot invalide (ValidationError)
- JSON invalide (erreur de parsing du corps) → mappé explicitement par
401
: non autorisé (ex: email manquant)403
: utilisateur non rattaché à une étude (ForbiddenError)5xx
: erreurs internes ou partenaires (ExternalServiceError)
Note: dans IdNotController.authenticate
, toute erreur possédant un statusCode
4xx (ou un name
applicatif connu) est relancée telle quelle afin d’éviter un fallback en 502.
Observabilité IdNot
- En cas d'échec côté IdNot, les logs indiquent désormais l'URL appelée, le
status
, lestatusText
et un extrait de réponse (<= 500 caractères) pour: token, userData, officeLocationData, rattachements.
Corrections endpoints API Annuaire (v1.0.7)
- Problème : Endpoint incorrect
/api/pp/v2/rattachements/{id}
→ 404 "No context-path matches" - Solution : Correction vers
/api/pp/v2/personnes/{id}/rattachements
selon documentation API Annuaire V2 - Robustesse : Ajout de logique de retry avec variantes d'URL (avec/sans
/annuaire
) et délais progressifs - Fallback : Support de multiples formats d'endpoints pour résilience
Dépendances clés
- HTTP:
express
,cors
- Infra:
pg
,dotenv
- Intégrations:
stripe
,@mailchimp/mailchimp_transactional
,ovh
- Interop:
sdk-signer-client
(lien local../sdk-signer-client
)
Points d’attention
- Lien local: dépendance
sdk-signer-client
enfile:
(vigilance CI/CD) - Secrets: centraliser dans
.env
et ne pas exposer côté client - Résilience: reconnection
SignerService
déjà prévue → surveiller métriques
Tests et scripts
- Tests rapides: scripts
test:*
pour DB, rattachements, reconnection signer - Build/Run:
build
,start
,dev
,watch
Déploiement
- Dockerfile: présent (image
lecoffre-back-mini
utilisée parlecoffre_node
) - Réseau: orchestré via
lecoffre_node
(ports, santé, watchtower)