57 lines
2.5 KiB
Markdown
57 lines
2.5 KiB
Markdown
### 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)
|
||
|
||
### 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)
|