Complete operational map result workflow
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 12:35:50 +02:00
parent 8266929b2e
commit a29c787238
33 changed files with 1121 additions and 107 deletions
+65 -2
View File
@@ -90,7 +90,13 @@ Returns enabled feature flags and tool availability.
### GET `/api/v1/projects`
Returns all projects.
Returns active projects with `limit`/`offset` pagination. Optional exact
`name` filtering supports stable lookup of a canonical operational workspace
without depending on its position among newer operator or benchmark projects:
```text
GET /api/v1/projects?name=Kempen%20Regional%20Workbench&limit=1
```
### POST `/api/v1/projects`
@@ -1729,6 +1735,7 @@ Map vector selection export request:
{
"export_kind": "vector_selection",
"dataset_id": "uuid",
"area_id": "optional-uuid-for-an-exact-full-work-area-export",
"bbox": {
"min_x": 5.0,
"min_y": 51.0,
@@ -1781,9 +1788,65 @@ segmentation exports use persisted first-class geometry records and the
existing Detection/Segmentation GeoJSON conversion services. Vector selection
exports query persisted PostGIS `vector_features` with the supplied EPSG:4326
bbox, write the selected FeatureCollection as a `vector_selection_geojson`
artifact, and persist bbox/feature-count metadata in the export record. Raster
artifact, and persist bbox/feature-count metadata in the export record. When
`area_id` is present, the persisted Area geometry is the exact export scope;
the frontend only sends this for the explicit `Volledig werkgebied` action.
Drawn or manually entered rectangles omit `area_id` and remain exact bbox
queries. Raster
datasets are rejected for dataset and selection GeoJSON export.
### POST `/api/v1/exports/map-result`
Persists the active map result before opening the Downloads workspace. The
backend recomputes the result from persisted data; it never accepts client
metrics as authoritative export content.
Current vector or governed raster request:
```json
{
"project_id": "uuid",
"mode": "current",
"dataset_id": "uuid",
"bbox": {
"min_x": 5.10,
"min_y": 51.17,
"max_x": 5.11,
"max_y": 51.18,
"crs": "EPSG:4326"
},
"area_id": null,
"partitioned": false,
"product_key": null,
"theme_id": "buildings",
"name": "buildings-analysis"
}
```
Historical comparison request:
```json
{
"project_id": "uuid",
"mode": "evolution",
"earlier_dataset_id": "uuid",
"later_dataset_id": "uuid",
"bbox": {
"min_x": 5.10,
"min_y": 51.17,
"max_x": 5.11,
"max_y": 51.18,
"crs": "EPSG:4326"
},
"theme_id": "forest"
}
```
Vector results reuse the authoritative `vector_selection_geojson` flow.
Governed raster results are persisted as `map_analysis_json`; temporal
comparisons use `map_evolution_json`. Metadata records the bbox, optional exact
Area scope, source datasets, theme and `server_recomputed=true`.
### POST `/api/v1/exports/metadata`
Exports project metadata JSON for projects, datasets, persisted QA/QC summary
+36
View File
@@ -9898,3 +9898,39 @@ V1 completion status:
source editions, additional independent AI review data and real segmentation
models are optional controlled expansions, not prerequisites for using the
current map, measurement, evolution, local-AI and export workflow.
## Sprint 233 - Operational correctness and result completion (2026-07-17)
Implemented:
- Corrected the map-first selection scope after live API evidence showed that a
drawn bbox plus the active `area_id` returned the complete municipality
vector population. Drawn and manual bboxes now omit `area_id`; the explicit
full-work-area action keeps the exact persisted Area geometry.
- Applied the same scope decision to current theme queries, temporal
comparisons, derived selection datasets and vector exports.
- Added Area-aware persistent vector selection exports and
`POST /api/v1/exports/map-result`. Current vector, governed raster and
temporal exports are recomputed server-side from persisted data before an
export row and artifact are written.
- Replaced the passive `Open downloads` handoff with `Bewaar in downloads`.
Downloads opens only after successful persistence and surfaces current map
analyses, historical comparisons and vector selections among the latest
artifacts.
- Added exact project-name filtering and merged the canonical
`Kempen Regional Workbench` into the frontend project page. This remains
stable even with more than 1,000 retained operator/benchmark projects.
- Named failed map sources and their API reasons, reset the actual scrolling
workbench container on navigation, bounded the desktop map layout, removed
nested desktop scrolling from Detection Lab and added plain-language QA/F1
interpretation.
- Translated the visible Downloads workflow and moved technical identifiers to
the existing history disclosure.
Validation:
- Focused operational-correctness, map-selection, export and V1 flow tests
passed after the corrected selection semantics were applied.
- The complete readiness gate passed 895 backend tests, backend compilation,
documentation smoke, API contract audit, the single Alembic head
`202607160001`, frontend TypeScript typecheck and the production build.
- Live all-in-one deployment, exact bbox/full-Area API comparison and browser
acceptance follow from this validated repository state.
+8
View File
@@ -11,6 +11,9 @@ geen open productroadmap meer.
vereist.
- [x] Kies een begrijpbaar datathema, teken een rechthoek of gebruik het
volledige werkgebied en analyseer alle 15 beschikbare thema's uit PostGIS.
- [x] Houd getekende en handmatig ingevoerde rechthoeken als exacte bbox-scope
voor vector-, raster- en tijdreeksmetingen; gebruik de persistente
Area-geometrie uitsluitend voor de expliciete actie `Volledig werkgebied`.
- [x] Toon betekenisvolle eenheden en metrieklabels voor oppervlakte, lengte,
inwoners, hoogte, scenario's en stationsmetingen; objectaantallen zijn
ondersteunend.
@@ -21,6 +24,11 @@ geen open productroadmap meer.
- [x] Ga vanuit een afgeronde analyse rechtstreeks naar de lokale
brongebonden Ollama-assistent of naar Downloads en keer terug zonder het
zichtbare kaartresultaat of de evolutievergelijking te verliezen.
- [x] Herbereken en bewaar het actieve vector-, raster- of evolutieresultaat
server-side voordat Downloads wordt geopend, met traceerbare selectie- en
bronmetadata.
- [x] Haal de canonieke regionale werkruimte exact op naam op zodat groei van
operator- en benchmarkprojecten de standaard kaartcontext niet kan verdringen.
- [x] Gebruik de operationele lokale YOLO/PyTorch-keten alleen met persisted
detecties, GRB-QA en expliciete controlewaarschuwingen.
- [x] Draai de volledige applicatie in de beheersbare Unraid-container op poort