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

59 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### 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
- 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)