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

68 lines
3.3 KiB
Markdown
Raw Permalink 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.
### 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)