Pipeline: corrige le biais de sous-echantillonnage sur median_nn (facteur
sqrt(total/echantillon), gonflait le pas spatial jusqu'a x20 sur les gros
nuages), applique un decalage global X/Y pour la precision float32 en
coordonnees projetees (Lambert-93), fixe la portee de remplissage des trous
sur la grille du niveau 0 (au lieu de croitre a chaque niveau), utilise un
percentile robuste pour zref au lieu du minimum brut, et filtre plus
precisement le fichier de grille parasite genere par -VOLUME.
Securite: valide l'id de run (uuid) sur toutes les routes avant de construire
un chemin filesystem (traversee de repertoire post-auth via zip/csv/bin/images),
assainit le nom de fichier uploade avant multer, retire enableCors() (surface
inutile), passe le conteneur en utilisateur non-root.
Documente l'ensemble de la methode et ses limites dans CONCEPT.md.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Grille de calcul du volume adaptee dynamiquement au pas spatial de chaque niveau (au lieu d'une
grille fixe derivee du niveau 0) : evite l'effondrement artificiel du "matching cells %" observe
des le premier niveau de decimation (99% -> 58% -> 13% -> 3% -> 0.9% -> 0.2%), qui refletait un
desalignement grille/densite plutot qu'une vraie perte d'information.
- Authentification HTTP Basic sur toute l'app (UI + API), identifiants en env (AUTH_USERNAME /
AUTH_PASSWORD_HASH hashe bcrypt), desactivable en dev local si non definis. /health reste public
pour le healthcheck Docker/Coolify.