ci: docker_tag=ext | docs(tests): analyse back-mini
All checks were successful
build-and-push-ext / build_push (push) Successful in 6s

This commit is contained in:
dev4 2025-09-18 07:49:56 +00:00
parent 2e75583f8e
commit b283f90b75
4 changed files with 88 additions and 2 deletions

View File

@ -40,8 +40,6 @@ NEXT_PUBLIC_DOCAPOSTE_API_URL=
NEXT_PUBLIC_API_URL=https://dev4.4nkweb.com/api
NEXT_PUBLIC_DEFAULT_VALIDATOR_ID=28c9a3a8151bef545ebf700ca5222c63d0031ad593097e95c1de202464304a99
NEXT_PUBLIC_DEFAULT_STORAGE_URLS=https://dev4.4nkweb.com/storage
NEXT_PUBLIC_HOTJAR_SITE_ID=0
NEXT_PUBLIC_HOTJAR_VERSION=
# WS
# RELAY_URLS=wss://demo.4nkweb.com/ws

44
docs/analyse.md Normal file
View File

@ -0,0 +1,44 @@
### 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
### 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)

View File

@ -0,0 +1,28 @@
{
"folders": [
{
"path": "../lecoffre-front"
},
{
"path": "."
},
{
"path": "../ihm_client"
}
],
"settings": {
"terminal.integrated.env.linux": {
"PATH": "${env:HOME}/elrondsdk/vendor-rust/bin:${env:HOME}/elrondsdk/erdpy-venv/bin:${env:HOME}/elrondsdk/vmtools:${env:HOME}/elrondsdk/nodejs/latest/bin:${env:PATH}",
"VIRTUAL_ENV": "${env:HOME}/elrondsdk/erdpy-venv",
"RUSTUP_HOME": "${env:HOME}/elrondsdk/vendor-rust",
"CARGO_HOME": "${env:HOME}/elrondsdk/vendor-rust"
},
"terminal.integrated.env.osx": {
"PATH": "${env:HOME}/elrondsdk/vendor-rust/bin:${env:HOME}/elrondsdk/erdpy-venv/bin:${env:HOME}/elrondsdk/vmtools:${env:HOME}/elrondsdk/nodejs/latest/bin:${env:PATH}",
"VIRTUAL_ENV": "${env:HOME}/elrondsdk/erdpy-venv",
"RUSTUP_HOME": "${env:HOME}/elrondsdk/vendor-rust",
"CARGO_HOME": "${env:HOME}/elrondsdk/vendor-rust"
},
"terminal.integrated.environmentChangesIndicator": "on"
}
}

16
tests/analyse.md Normal file
View File

@ -0,0 +1,16 @@
### Objet
Axes de tests pour `lecoffre-back-mini` (sans exemples dimplémentation).
### Couverture prioritaire
- **Santé**: `/health` et métriques associées
- **Auth/Session**: middleware `auth`, gestion tokens, expirations, nettoyages
- **Intégrations**: `idnot`, `sms`, `email`, `stripe`, `signer`
- **Process**: cohérence des flux exposés par `process.routes`
### Résilience
- **Reconnection signer**: simulation déconnexions/retards
- **Retry emails**: files dattente et reprises
### Sécurité
- **Entrées**: validation, schémas, erreurs typées
- **Secrets**: vérification de la non-exposition via réponses API