feat(ui): refine governed workbench and dual-screen flows

This commit is contained in:
Jens
2026-08-30 06:00:28 +02:00
parent 80a2d1654d
commit a0884d64c9
48 changed files with 1360 additions and 184 deletions
+1
View File
@@ -40,6 +40,7 @@ FEATURE_SOURCES: dict[str, tuple[str, ...]] = {
"components/map/useMapWorkspaceViewModel.ts",
"components/map/MapExplorerView.tsx",
"components/map/MapAdvancedWorkbench.tsx",
"components/map/MunicipalitySearch.tsx",
"hooks/useMapImageOverlays.ts",
"hooks/useMapRectangleSelection.ts",
"hooks/useFullGisWorkflow.ts",
@@ -20,7 +20,8 @@ def test_national_workspace_is_automatic_and_map_has_one_scope_selector() -> Non
assert "const municipalityProject" not in project_hook
assert 'aria-label="Regio"' not in map_workspace
assert 'aria-label="Ingeladen regiobereik"' in map_workspace
assert "Zoek optioneel een gemeente" in map_workspace
assert 'aria-label="Optioneel een gemeente zoeken"' in map_workspace
assert 'placeholder="Gemeentenaam of NIS-code"' in map_workspace
assert 'aria-label="Werkgebied"' in map_workspace
@@ -20,7 +20,7 @@ from app.services.storage_service import StorageService
from app.services.source_registry_service import SourceRegistryService
from app.services.temporal_analysis_service import TemporalAnalysisService
from app.services.thematic_raster_analysis_service import ThematicRasterAnalysisService
from tests.frontend_contract import assert_calls, assert_mentions, assert_wired, read_map_workspace, read_feature
from tests.frontend_contract import assert_mentions, assert_wired, read_map_workspace, read_feature
class FakeSession:
@@ -418,7 +418,6 @@ def test_frontend_fetches_canonical_workspace_outside_default_project_page() ->
def test_theme_failures_name_the_source_and_reason() -> None:
root = Path(__file__).resolve().parents[2]
hook = read_feature("map_workspace")
assert "queries[index]?.dataset?.name" in hook
@@ -428,7 +427,6 @@ def test_theme_failures_name_the_source_and_reason() -> None:
def test_workspace_navigation_resets_the_actual_scroll_container() -> None:
root = Path(__file__).resolve().parents[2]
app = read_feature("shell")
assert "const workbenchMainRef = useRef<HTMLElement | null>(null)" in app
@@ -438,7 +436,6 @@ def test_workspace_navigation_resets_the_actual_scroll_container() -> None:
def test_quality_scores_have_plain_language_interpretation() -> None:
root = Path(__file__).resolve().parents[2]
quality = read_feature("quality")
detection = read_feature("detection")
@@ -479,7 +476,6 @@ def test_detection_lab_only_receives_operational_imagery_rasters() -> None:
def test_download_workspace_surfaces_map_results_in_plain_dutch() -> None:
root = Path(__file__).resolve().parents[2]
exports = read_feature("exports")
assert "Gebiedsanalyse (JSON)" in exports
@@ -20,10 +20,12 @@ def test_ai_labs_explain_missing_raster_input_before_disabled_runs() -> None:
segmentation_lab = read_feature("segmentation")
assert "Geen luchtbeeld beschikbaar in deze werkruimte." in detection_lab
assert "Voeg hieronder een gegeorefereerde GeoTIFF toe." in detection_lab
assert "Voeg hieronder een gegeorefereerde GeoTIFF toe of haal via Kaart" in detection_lab
assert "de synthetische demo-context wordt nooit aan een productiemodel aangeboden" in detection_lab
assert 'aria-label="Luchtbeeld toevoegen"' in detection_lab
assert "onUploadRaster" in detection_lab
assert "rasterDatasets.length === 0" in detection_lab
assert "Geen rasterbestand beschikbaar voor segmentatie." in segmentation_lab
assert "Voeg eerst een rasterbestand toe onder Bronnen." in segmentation_lab
assert "Voeg eerst een gevalideerd rasterbestand toe onder Bronnen" in segmentation_lab
assert "De synthetische demo-context blijft bewust uitgesloten" in segmentation_lab
assert "rasterDatasets.length === 0" in segmentation_lab