metalfrom.eu/apps/api/test
Nicolas FRYDER e35e3d6de3 refactor: module de santé partagé, supervision complète, endpoints morts traités
health.py existait en deux copies rigoureusement identiques — crawler et
geocoder — dont une seule était couverte par des tests. Rien ne signalait une
divergence : une correction appliquée d'un seul côté serait passée inaperçue.
Le module part dans libs/bm_health.py, embarqué dans les images via un contexte
de build ramené à la racine du dépôt, et rendu importable en local par les
conftest.py. Un .dockerignore racine évite que node_modules parte dans les
images au passage. Les deux images ont été reconstruites et le module vérifié
importable à l'exécution dans chacune.

La migration 015 annonçait un battement de coeur pour groq-worker, mais aucun
n'était jamais écrit : sa ligne n'existait pas, et le bandeau de santé de
l'admin ne pouvait donc rien signaler — y compris quand le service était mort.
Même trou pour geocoder-enqueue. Les deux écrivent désormais leur état, avec
des sondes propres à leur rôle (clé API, progression de leur file).

Deux endpoints étaient définis et testés sans qu'aucun bouton ne les appelle.
/admin/api/locations/reset-llm était pourtant le seul moyen de relancer les
lieux passés en 'manual' après épuisement des tentatives LLM : la
fonctionnalité existait sans que personne puisse l'atteindre. Elle rejoint la
zone de danger de l'admin. /admin/api/crawl-checkpoints faisait doublon avec
/admin/api/live et disparaît, avec ses tests.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 14:41:59 +02:00
..
helpers feat(qualité): outillage de test complet, CI locale, annulation réelle des runs 2026-08-18 10:05:40 +02:00
integration refactor: module de santé partagé, supervision complète, endpoints morts traités 2026-08-22 14:41:59 +02:00
adminAuth.test.js fix(sécurité): verrouillage de compte détournable, et Vary manquant sur le CORS 2026-08-22 14:24:33 +02:00
adminRoutes.test.js fix(admin): passe de debug guidée par la mutation — 4 bugs, mutation 64 → 68 % 2026-08-18 15:42:52 +02:00
adminRoutesCoverage.test.js refactor: module de santé partagé, supervision complète, endpoints morts traités 2026-08-22 14:41:59 +02:00
bandFilters.test.js fix(admin): passe de debug guidée par la mutation — 4 bugs, mutation 64 → 68 % 2026-08-18 15:42:52 +02:00
cancellation.test.js feat(qualité): outillage de test complet, CI locale, annulation réelle des runs 2026-08-18 10:05:40 +02:00
conflicts.test.js fix(admin): passe de debug guidée par la mutation — 4 bugs, mutation 64 → 68 % 2026-08-18 15:42:52 +02:00
harness.test.js feat(qualité): outillage de test complet, CI locale, annulation réelle des runs 2026-08-18 10:05:40 +02:00
locations.test.js fix: sync du point principal + verrou de migration, redis mort retiré, tests par propriétés 2026-08-18 21:03:17 +02:00
publicRoutes.test.js perf(api): compression des réponses, et troncature de la carte enfin signalée 2026-08-22 14:35:12 +02:00
publicRoutesCoverage.test.js feat(qualité): outillage de test complet, CI locale, annulation réelle des runs 2026-08-18 10:05:40 +02:00
rateLimit.test.js fix(sécurité): plafond de /admin/import contournable en variant le jeton 2026-08-22 13:15:12 +02:00
sqlSyntax.test.js refactor: module de santé partagé, supervision complète, endpoints morts traités 2026-08-22 14:41:59 +02:00
validate.property.test.js fix: sync du point principal + verrou de migration, redis mort retiré, tests par propriétés 2026-08-18 21:03:17 +02:00
validate.test.js feat(qualité): outillage de test complet, CI locale, annulation réelle des runs 2026-08-18 10:05:40 +02:00