dev4 0c74cccc04
All checks were successful
build-and-push-ext / build_push (push) Successful in 23s
ci: docker_tag=ext - Add retry logic for getUserRattachements v1.0.8
2025-09-19 12:12:40 +00:00

3.3 KiB
Raw Permalink 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.

Observabilité IdNot

  • En cas d'échec côté IdNot, les logs indiquent désormais l'URL appelée, le status, le statusText 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 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)