dev4 723b532c64
All checks were successful
build-and-push-ext / build_push (push) Successful in 24s
ci: docker_tag=ext chore(back): v1.0.3 IdNot 4xx passthrough robuste
2025-09-19 07:09:19 +00:00

2.7 KiB
Raw Blame History

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.tsdist/server.js

Arborescence notable

  • src/routes: routes (email, health, idnot, process, sms, stripe)
  • src/controllers: logique par domaine
  • src/services: intégrations (email, idnot, signer, sms, stripe)
  • src/middleware: auth, erreurs, session, validation
  • src/utils: tokens, logger, result, validations, session manager
  • src/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

  • Lendpoint dauthentification accepte désormais le code en POST corps JSON sur /api/v1/idnot/auth (au lieu dun segment dURL).
  • Le handler supporte à la fois req.params.code et req.body.code pour compatibilité, mais lusage recommandé est req.body.code.

Gestion des erreurs HTTP

  • 400:
    • JSON invalide (erreur de parsing du corps) → mappé explicitement par errorHandler
    • Code dautorisation IdNot invalide (ValidationError)
  • 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.

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 dattention

  • Lien local: dépendance sdk-signer-client en file: (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 par lecoffre_node)
  • Réseau: orchestré via lecoffre_node (ports, santé, watchtower)