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>
- Bouton "Supprimer" sur chaque run (liste + detail), DELETE deja expose cote API.
- Tous les parametres CloudCompare mirroires dans l'UI (mirroir de la boite "Compute Volume" du
GUI) : strategie de remplissage (leave_empty/min/max/custom/interpolate/kriging), hauteur de
cellule (moyenne/min/max/mediane, -PROJ), direction de projection (X/Y/Z, -VERT_DIR),
multiplicateur de grille. Nuage comble desormais exporte en ASCII (pas .bin) : -VOLUME le lit
nativement, evite un aller-retour inutile puisqu'il faut de toute facon un export ASCII pour la
carte de comparaison.
- Tableau : volume/surface/volume ajoute/volume retire avec % absolu et % relatif vs niveau 0.
Matching cells retire du tableau et des graphiques (mais toujours calcule/stocke, juste plus
affiche).
- Carte de comparaison unique par niveau (bleu->rouge façon CloudCompare, colormap jet) a la place
des heightmaps separees par nuage : diff = ceil - ground (ou ceil - plan constant), calculee
nous-memes par binning numpy sur une grille commune.
- README + CLAUDE.md : avertissement explicite sur la persistance Coolify quand le build pack est
"Application"/Dockerfile plutot que "Docker Compose" (docker-compose.yml et son volume nomme sont
alors completement ignores par Coolify, il faut un volume "Storages" configure manuellement).
- Valide en local avec les 2 vrais nuages utilisateur (mode comparaison) : resultats identiques a
avant (14 244 -> 14 722 m3 selon le niveau), cartes de comparaison generees a chaque niveau,
bouton suppression teste via l'UI.