metalfrom.eu/apps/api/test
Nicolas FRYDER bcd533ae84 fix(géocodage): les corrections manuelles n'étaient protégées par rien
Corriger à la main les coordonnées d'un groupe écrit un band_locations avec
geocode_provider='admin' et confiance 1.0 : la donnée la plus autoritaire du
système, saisie par un humain, impossible à régénérer. Elle était pourtant la
moins protégée.

Le trigger de la migration 013 supprime toutes les band_locations d'un groupe
dès que son location_text change — override compris. locked_fields ne couvre
que les colonnes de `bands`, jamais les points : une correction disparaissait
donc silencieusement à la première modification du lieu, y compris quand ce
lieu venait d'être verrouillé par l'admin lui-même.

Trois routes de reset l'effaçaient également. Le code raisonnait explicitement
sur la protection des saisies manuelles pour choisir le statut écrit ('done' et
non 'manual', afin que reset-llm ne les emporte pas), mais ni reset-all ni
requeue-all(include_done) n'excluaient le provider : la protection tenait sur
un bouton et manquait sur les deux autres.

Le trigger épargne désormais les points 'admin', et les trois routes les
excluent. Trois tests d'intégration contre un vrai PostGIS couvrent ce trigger
et celui de la migration 016, qui n'en avaient aucun.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 14:20:44 +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 fix(géocodage): les corrections manuelles n'étaient protégées par rien 2026-08-22 14:20:44 +02:00
adminAuth.test.js feat(qualité): outillage de test complet, CI locale, annulation réelle des runs 2026-08-18 10:05:40 +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 feat: validation syntaxique du SQL + supervision des services de fond 2026-08-18 18:20:15 +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 feat(qualité): outillage de test complet, CI locale, annulation réelle des runs 2026-08-18 10:05:40 +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 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.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