batchCooking/apps/api/test
Nicolas 22582536a6 feat(api): ajoute un log service pour les logs de fonctionnement côté serveur
Jusqu'ici, rien ne journalisait quoi que ce soit côté serveur : aucune
trace au démarrage à part un console.log ad hoc, et surtout aucune trace
des requêtes ni des erreurs gérées par ErrorHandlerService — un 500 en
production n'aurait laissé aucune trace exploitable.

- LoggerService (apps/api/src/lib/logger.service.ts) — classe (public
  debug/info/warn/error, private emit), même convention que
  ErrorHandlerService (packages/error-tools) : instance unique partagée
  exportée (`export const logger = new LoggerService()`). Émet une ligne
  JSON structurée par appel (timestamp/level/message + meta), filtrée par
  seuil selon NODE_ENV (debug complet en dev, warn+ pendant les tests
  pour ne pas alourdir la sortie de Mocha, info+ en production). Seul
  endroit du code autorisé à toucher `console` directement (biome-ignore
  justifié), toujours via une méthode nommée — jamais un console.log nu.
- requestLogger (middlewares/request-logger.ts) — une ligne par requête
  terminée (méthode/chemin/statut/durée), montée en tout premier dans
  app.ts, avant même setupCore (CORS/JSON/cookies), pour englober tout le
  pipeline. Niveau déduit du statut (info/warn/error).
- errorLogger (middlewares/error-logger.ts) — monté juste avant
  createErrorMiddleware : réutilise errorHandlerService.handle() (pur/
  sans effet de bord) pour classifier l'erreur avant que la vraie réponse
  ne soit construite, log en warn les 4xx routiniers (validation, 404,
  401...) et en error les 5xx/exceptions non prévues (avec la stack).
- error-handler.service.ts : retire le `console.error(error)` ad hoc de
  fromUnknownError — errorLogger voit désormais chaque erreur avant que
  ce service ne la mappe, donc ce console.error faisait doublon (et
  loggait en texte brut, pas en JSON structuré).
- server.ts : le console.log de démarrage passe par logger.info.

Vérifié : pnpm --filter api test (303/303, dont 8 nouveaux tests sur
LoggerService), pnpm lint/build clean, testé en live (pnpm dev:api +
curl) — logs JSON corrects pour un 200, un 404, un 401.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 10:19:27 +02:00
..
auth.test.ts Tests API: couverture Mocha + Cucumber pour le foyer et la suppression de compte (step 4/8) 2026-08-17 10:40:23 +02:00
health.test.ts Scaffold generic pnpm monorepo (api + web + shared) (#1) 2026-08-16 10:55:13 +02:00
house.test.ts feat(recipes): parcourir et prévisualiser les sources externes (étape 1/4) 2026-08-20 15:51:16 +02:00
ingredient-matcher.test.ts chore(lint): upgrade Biome vers 2.x, active noExplicitAny/noConsole/noFloatingPromises 2026-08-21 10:11:57 +02:00
json-ld-recipe.test.ts feat(recipes): source générique JSON-LD (schema.org/Recipe) 2026-08-20 12:17:49 +02:00
logger.service.test.ts feat(api): ajoute un log service pour les logs de fonctionnement côté serveur 2026-08-21 10:19:27 +02:00
planning.test.ts feat(recipes): ajouter le nombre de portions couvertes par une recette 2026-08-19 21:44:01 +02:00
preferences.test.ts API: module preferences — GET/PATCH /preferences (step 2/4) 2026-08-17 15:55:45 +02:00
profile.test.ts refactor(catalog): authoring 100% anglais — uid camelCase, plus de français dans le code 2026-08-19 20:40:55 +02:00
recipe-source-sync.test.ts feat(recipes): parcourir et prévisualiser les sources externes (étape 1/4) 2026-08-20 15:51:16 +02:00
recipe-source.test.ts feat(recipes): parcourir et prévisualiser les sources externes (étape 1/4) 2026-08-20 15:51:16 +02:00
recipe-translation.test.ts chore(lint): upgrade Biome vers 2.x, active noExplicitAny/noConsole/noFloatingPromises 2026-08-21 10:11:57 +02:00
recipe.test.ts chore(lint): upgrade Biome vers 2.x, active noExplicitAny/noConsole/noFloatingPromises 2026-08-21 10:11:57 +02:00
reference.test.ts feat(recipes): parcourir et prévisualiser les sources externes (étape 1/4) 2026-08-20 15:51:16 +02:00
sources-index.test.ts fix(recipes): la source générique JSON-LD n'apparaît plus comme source 2026-08-20 15:10:51 +02:00
sources.test.ts fix(recipes): concatène les ingrédients dupliqués à l'import 2026-08-21 09:26:59 +02:00
tech-step-matcher.test.ts chore(lint): upgrade Biome vers 2.x, active noExplicitAny/noConsole/noFloatingPromises 2026-08-21 10:11:57 +02:00
the-meal-db.test.ts fix(recipes): corrige plusieurs bugs d'import TheMealDB 2026-08-21 08:14:37 +02:00