Keep thematic reference years accurate
GeoIntel CI / docs-smoke (push) Canceled after 0s
GeoIntel CI / contract-smoke (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-17 18:45:34 +02:00
parent c28958d9c7
commit 972c3f0e1b
4 changed files with 28 additions and 0 deletions
+3
View File
@@ -15,6 +15,9 @@
- Made one explicit municipality or rectangle selection acquire/reuse, - Made one explicit municipality or rectangle selection acquire/reuse,
persist and analyse space occupation, open space, population density, node persist and analyse space occupation, open space, population density, node
value and service level through the canonical Job and Dataset services. value and service level through the canonical Job and Dataset services.
- Automatically selects the usable ruimtebeslag theme when the Flanders
workspace inherits an unavailable theme, and displays annual policy products
by their governed reference year instead of a timezone-shifted timestamp.
- Kept whole-Flanders raster acquisition disabled behind the existing 60 km - Kept whole-Flanders raster acquisition disabled behind the existing 60 km
and 30 million cell guardrails while preserving complete-region vector and and 30 million cell guardrails while preserving complete-region vector and
partitioned bathymetry analysis. partitioned bathymetry analysis.
@@ -19,6 +19,7 @@ def test_flanders_workspace_exposes_governed_thematic_products_on_demand() -> No
assert "'Op aanvraag'" in workspace assert "'Op aanvraag'" in workspace
assert "theme.id === 'space_occupation'" in workspace assert "theme.id === 'space_occupation'" in workspace
assert "setActiveThemeId(fallbackTheme.id)" in workspace assert "setActiveThemeId(fallbackTheme.id)" in workspace
assert "return `referentiejaar ${observationYear}`" in workspace
assert "thematicProductKey: thematicProduct.key" in workspace assert "thematicProductKey: thematicProduct.key" in workspace
assert "datasetsApi.listThematicRasterProducts" in product_hook assert "datasetsApi.listThematicRasterProducts" in product_hook
assert "datasetsApi.acquireThematicRaster" in selection_hook assert "datasetsApi.acquireThematicRaster" in selection_hook
+18
View File
@@ -10182,3 +10182,21 @@ Validation:
- The complete local release gate passed 932 backend tests, backend - The complete local release gate passed 932 backend tests, backend
compilation, the 116-route contract audit, Alembic head `202607160001`, compilation, the 116-route contract audit, Alembic head `202607160001`,
frontend TypeScript typecheck and the production Vite build. frontend TypeScript typecheck and the production Vite build.
Final live acceptance:
- The Sprint 237 commits were pushed to Gitea and deployed through the
all-in-one Tower flow. Container health, PostGIS 3.6, collation,
required schema/indexes, Alembic head `202607160001`, frontend proxy and
icon checks passed.
- Browser acceptance exposed and then closed one usability gap: entering
Flanders with an unavailable prior theme now automatically selects the
usable ruimtebeslag profile.
- A complete exact-Area Mol run persisted all five official policy rasters and
returned six real themes including the existing VHA partition: 3,638.41 ha
ruimtebeslag, 8,139.67 ha open space, an estimated 36,783 inhabitants for
2019, mean node value 0.68, mean service level 0.16 and 828 bathymetry
profiles. A repeated run reused the retained raster requests.
- The five new full-Mol Datasets are `ready`, linked to the canonical Mol Area
and labelled `coverage_scope=municipality`. The UI reports product reference
years directly so an end-of-year UTC timestamp cannot roll 2025 into a
misleading local `1 jan 2026` label.
@@ -458,6 +458,12 @@ function formatDatasetObservation(dataset: DatasetCreateResponse): string {
? `historische profielen ${firstMeasurement}-${lastMeasurement}` ? `historische profielen ${firstMeasurement}-${lastMeasurement}`
: 'historische profielmetingen' : 'historische profielmetingen'
} }
if (dataset.source_name === 'department_omgeving_thematic_raster') {
const observationYear = Number(dataset.source_metadata?.['observation_year'])
if (Number.isFinite(observationYear)) {
return `referentiejaar ${observationYear}`
}
}
const period = dataset.source_metadata?.['acquisition_period'] const period = dataset.source_metadata?.['acquisition_period']
if (typeof period === 'string' && period.trim()) { if (typeof period === 'string' && period.trim()) {
return `opnameperiode ${period}` return `opnameperiode ${period}`