### 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 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 - 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` et `req.body.code` pour compatibilité, mais l’usage recommandé est `req.body.code`. ### Gestion des erreurs HTTP - `400`: - JSON invalide (erreur de parsing du corps) → mappé explicitement par `errorHandler` - Code d’autorisation 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. ### 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` 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)