Harden V1 demo workflow smoke
GeoIntel CI / docs-smoke (push) Has been cancelled
GeoIntel CI / contract-smoke (push) Has been cancelled

This commit is contained in:
Codex
2026-06-17 00:33:09 +02:00
parent e330283fbe
commit be7705f6c5
13 changed files with 248 additions and 53 deletions
+5
View File
@@ -151,6 +151,11 @@ React + TypeScript + MapLibre foundation for project/area/dataset workflow.
- Added area visibility and opacity controls alongside the existing active vector/result layer controls.
- Area list items can select which AOI is shown on the map.
## Sprint 21 additions
- Loading the explicit demo workflow now opens the candidate vector fixture dataset directly, so the Map Workbench shows the demo vector layer without an extra manual dataset click.
- The demo/export verification script now checks connected V1 state: area GeoJSON, fixture datasets, vector FeatureCollection content, vector feature summary, persisted QA/QC metrics and export downloads through the frontend proxy.
## Release hardening updates
- Production builds split application code, React vendor code and MapLibre vendor code into separate chunks.
+10 -2
View File
@@ -339,7 +339,9 @@ function App(): JSX.Element {
])
setAreas(areaResponse.items)
setDatasets(datasetResponse.items)
if (!selectedClipAreaId && areaResponse.items.length > 0) {
if (areaResponse.items.length === 0) {
setSelectedClipAreaId('')
} else if (!selectedClipAreaId || !areaResponse.items.some((area) => area.id === selectedClipAreaId)) {
setSelectedClipAreaId(areaResponse.items[0].id)
}
if (areaResponse.items.length === 0) {
@@ -347,8 +349,10 @@ function App(): JSX.Element {
} else if (!selectedMapAreaId || !areaResponse.items.some((area) => area.id === selectedMapAreaId)) {
setSelectedMapAreaId(areaResponse.items[0].id)
}
return { areas: areaResponse.items, datasets: datasetResponse.items }
} catch (error) {
setErrorMessage(error instanceof Error ? error.message : 'Failed to load project data')
return null
} finally {
setLoadingAreas(false)
setLoadingDatasets(false)
@@ -759,13 +763,17 @@ function App(): JSX.Element {
setSegmentationReferenceDatasetId(result.reference_dataset_id)
setDemoWorkflowMessage(result.message)
await loadProjects()
await Promise.all([
const [projectData] = await Promise.all([
loadProjectData(result.project_id),
loadDetectionRuns(result.project_id),
loadSegmentationRuns(result.project_id),
loadQualityChecks(result.project_id),
loadExports(result.project_id),
])
const candidateDataset = projectData?.datasets.find((dataset) => dataset.id === result.candidate_dataset_id)
if (candidateDataset) {
await loadDatasetDetails(result.project_id, candidateDataset)
}
} catch (error) {
setErrorMessage(formatError(error, 'Failed to load demo workflow'))
} finally {