Filtrer les couches retirées du flux /api/tiles et de la fusion en direct
Au rechargement de la page, l'index obsolète du worker (16 couches) polluait le /api/tiles fusionné et mergeTilesData réajoutait les couches retirées au menu. viz_meta est désormais filtré aux couches du panneau (PANEL_VIZ) côté serveur, et le panneau client est figé au chargement (clés VIZ_META initiales) : aucun flux ne peut réintroduire de couche hors panneau, même avec un index distant périmé.
This commit is contained in:
@ -339,7 +339,12 @@ def test_tiles_endpoint_stamp_diffing(tmp_path, monkeypatch):
|
||||
|
||||
|
||||
def test_tiles_endpoint_merges_remote_index(tmp_path, monkeypatch):
|
||||
"""L'index du worker prime ; le cache local complète les positions perdues."""
|
||||
"""L'index du worker prime ; le cache local complète les positions perdues.
|
||||
|
||||
viz_meta est filtré aux couches du panneau (PANEL_VIZ) : une couche
|
||||
retirée (absente de PANEL_VIZ) proposée par un index obsolète n'est
|
||||
pas réintroduite.
|
||||
"""
|
||||
import json
|
||||
import lidar_pipeline.webapp as webapp
|
||||
monkeypatch.setattr(webapp, "OUTPUT_DIR", tmp_path)
|
||||
@ -349,7 +354,10 @@ def test_tiles_endpoint_merges_remote_index(tmp_path, monkeypatch):
|
||||
{"col": 1054, "row": 6882, "resolution": 0.2, "viz": {}}, # commun
|
||||
{"col": 1050, "row": 6882, "resolution": 0.2, "viz": {}}, # local seul
|
||||
],
|
||||
"viz_meta": {"local": {"label": "Locale"}},
|
||||
"viz_meta": {
|
||||
"aspect": {"label": "Aspect local"},
|
||||
"slope": {"label": "Pente locale"},
|
||||
},
|
||||
"stats": {},
|
||||
}), encoding="utf-8")
|
||||
import os
|
||||
@ -361,7 +369,10 @@ def test_tiles_endpoint_merges_remote_index(tmp_path, monkeypatch):
|
||||
{"col": 1054, "row": 6882, "resolution": 0.2, "viz": {"slope": {}}},
|
||||
{"col": 1055, "row": 6882, "resolution": 0.2, "viz": {}}, # distant seul
|
||||
],
|
||||
"viz_meta": {"slope": {"label": "Pente"}},
|
||||
"viz_meta": {
|
||||
"slope": {"label": "Pente"},
|
||||
"wavelet": {"label": "Ondulets"}, # hors panneau : filtrée
|
||||
},
|
||||
})
|
||||
d = webapp.tiles_data()
|
||||
entries = {(t["col"], json.dumps(t["viz"], sort_keys=True)) for t in d["tiles"]}
|
||||
@ -369,7 +380,8 @@ def test_tiles_endpoint_merges_remote_index(tmp_path, monkeypatch):
|
||||
assert (1055, '{}') in entries # tuile non cachée visible
|
||||
assert (1050, '{}') in entries # historique local conservé
|
||||
assert d["viz_meta"]["slope"]["label"] == "Pente" # distant prime
|
||||
assert d["viz_meta"]["local"]["label"] == "Locale" # local complété
|
||||
assert d["viz_meta"]["aspect"]["label"] == "Aspect local" # local complété
|
||||
assert "wavelet" not in d["viz_meta"] # couche hors panneau filtrée
|
||||
assert d["stamp"] == remote_stamp # max des deux stamps
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user