Initial GeoIntel V1 foundation
This commit is contained in:
@@ -0,0 +1,253 @@
|
||||
# Frontend Component Breakdown
|
||||
|
||||
## Global layout
|
||||
|
||||
### AppShell
|
||||
Responsibilities:
|
||||
- main navigation
|
||||
- project context indicator
|
||||
- active job indicator
|
||||
- responsive layout
|
||||
|
||||
### LeftNavigation
|
||||
Items:
|
||||
- Home
|
||||
- Projects
|
||||
- Map Workbench
|
||||
- Dataset Manager
|
||||
- Raster Lab
|
||||
- Vector Lab
|
||||
- Detection Lab
|
||||
- Segmentation Lab
|
||||
- QA/QC Lab
|
||||
- Change Lab
|
||||
- Exports
|
||||
- Settings
|
||||
|
||||
### TopStatusBar
|
||||
Shows:
|
||||
- selected project
|
||||
- selected area
|
||||
- backend health
|
||||
- queued/running jobs
|
||||
|
||||
## Pages
|
||||
|
||||
### HomePage
|
||||
Purpose:
|
||||
- start a new project
|
||||
- open recent projects
|
||||
- open demo scenario
|
||||
|
||||
Components:
|
||||
- HeroPanel
|
||||
- NewProjectCard
|
||||
- RecentProjectsList
|
||||
- DemoScenarioLauncher
|
||||
|
||||
API:
|
||||
- GET /projects
|
||||
- POST /projects
|
||||
|
||||
### ProjectWorkspacePage
|
||||
Purpose:
|
||||
- overview for one project
|
||||
|
||||
Components:
|
||||
- ProjectHeader
|
||||
- AreaSummaryCard
|
||||
- DatasetSummaryCard
|
||||
- AnalysisRunList
|
||||
- KeyOutputCards
|
||||
- NextActionPanel
|
||||
|
||||
API:
|
||||
- GET /projects/{project_id}
|
||||
- GET /projects/{project_id}/areas
|
||||
- GET /projects/{project_id}/datasets
|
||||
- GET /projects/{project_id}/analysis-runs
|
||||
|
||||
### MapWorkbenchPage
|
||||
Purpose:
|
||||
- central map inspection and area/layer management
|
||||
|
||||
Components:
|
||||
- MapCanvas
|
||||
- LayerManager
|
||||
- AreaDrawingTools
|
||||
- FeatureInspector
|
||||
- MapToolbar
|
||||
- OpacitySlider
|
||||
|
||||
API:
|
||||
- GET /projects/{project_id}/areas
|
||||
- GET /projects/{project_id}/layers
|
||||
- GET /layers/{layer_id}/features
|
||||
|
||||
### DatasetManagerPage
|
||||
Purpose:
|
||||
- upload/import datasets and inspect metadata
|
||||
|
||||
Components:
|
||||
- DatasetUploadDropzone
|
||||
- DatasetTable
|
||||
- DatasetMetadataPanel
|
||||
- DatasetStatusBadge
|
||||
- DatasetActionsMenu
|
||||
|
||||
API:
|
||||
- POST /projects/{project_id}/datasets/upload
|
||||
- GET /projects/{project_id}/datasets
|
||||
- GET /datasets/{dataset_id}/metadata
|
||||
|
||||
### RasterLabPage
|
||||
Purpose:
|
||||
- raster inspection and preprocessing
|
||||
|
||||
Components:
|
||||
- RasterDatasetSelector
|
||||
- RasterMetadataCard
|
||||
- BandSelector
|
||||
- RasterPreviewPanel
|
||||
- RasterOperationPanel
|
||||
- RasterArtifactList
|
||||
|
||||
Actions:
|
||||
- clip by area
|
||||
- generate tiles
|
||||
- calculate histogram
|
||||
- calculate index later
|
||||
|
||||
API:
|
||||
- GET /datasets/{dataset_id}/metadata
|
||||
- POST /rasters/{dataset_id}/clip
|
||||
- POST /rasters/{dataset_id}/tile
|
||||
- POST /rasters/{dataset_id}/histogram
|
||||
|
||||
### VectorLabPage
|
||||
Purpose:
|
||||
- vector inspection and spatial operations
|
||||
|
||||
Components:
|
||||
- VectorDatasetSelector
|
||||
- GeometrySummaryCard
|
||||
- VectorOperationPanel
|
||||
- AttributePreviewTable
|
||||
- VectorLayerPreview
|
||||
|
||||
Actions:
|
||||
- validate geometry
|
||||
- reproject
|
||||
- clip
|
||||
- buffer
|
||||
- intersect
|
||||
|
||||
API:
|
||||
- POST /vectors/{dataset_id}/validate
|
||||
- POST /vectors/{dataset_id}/clip
|
||||
- POST /vectors/{dataset_id}/buffer
|
||||
- POST /vectors/{dataset_id}/intersect
|
||||
|
||||
### DetectionLabPage
|
||||
Purpose:
|
||||
- object detection workflow
|
||||
|
||||
Components:
|
||||
- DetectionInputSelector
|
||||
- ModelSelector
|
||||
- DetectionParameterPanel
|
||||
- DetectionRunButton
|
||||
- DetectionResultsMap
|
||||
- DetectionMetricsCards
|
||||
- DetectionExportPanel
|
||||
|
||||
Parameters:
|
||||
- confidence threshold
|
||||
- tile size
|
||||
- overlap
|
||||
- target classes
|
||||
|
||||
API:
|
||||
- POST /analysis/object-detection
|
||||
- GET /analysis-runs/{run_id}
|
||||
- GET /analysis-runs/{run_id}/detections
|
||||
|
||||
### SegmentationLabPage
|
||||
Purpose:
|
||||
- segmentation workflow
|
||||
|
||||
Components:
|
||||
- SegmentationInputSelector
|
||||
- SegmentationModelSelector
|
||||
- SegmentationParameterPanel
|
||||
- MaskPreview
|
||||
- PolygonizedOutputPanel
|
||||
- SegmentationExportPanel
|
||||
|
||||
API:
|
||||
- POST /analysis/segmentation
|
||||
- GET /analysis-runs/{run_id}/segmentations
|
||||
|
||||
### QaqcLabPage
|
||||
Purpose:
|
||||
- compare AI output against reference data
|
||||
|
||||
Components:
|
||||
- PredictionLayerSelector
|
||||
- ReferenceLayerSelector
|
||||
- MatchThresholdSelector
|
||||
- QaqcRunButton
|
||||
- QaqcMetricsPanel
|
||||
- ErrorLayerTabs
|
||||
- FindingTable
|
||||
|
||||
API:
|
||||
- POST /analysis/{run_id}/quality-check
|
||||
- GET /quality-checks/{check_id}
|
||||
|
||||
### ChangeLabPage
|
||||
Purpose:
|
||||
- compare two vector or raster-derived layers
|
||||
|
||||
Components:
|
||||
- BaselineLayerSelector
|
||||
- ComparisonLayerSelector
|
||||
- ChangeMethodSelector
|
||||
- ChangeResultsMap
|
||||
- ChangeStatsPanel
|
||||
|
||||
API:
|
||||
- POST /analysis/change-detection
|
||||
- GET /analysis-runs/{run_id}/changes
|
||||
|
||||
### ExportsPage
|
||||
Purpose:
|
||||
- generate/download artifacts
|
||||
|
||||
Components:
|
||||
- ExportTypeSelector
|
||||
- ExportTargetSelector
|
||||
- ExportHistoryTable
|
||||
- ExportDownloadButton
|
||||
|
||||
API:
|
||||
- POST /exports/geojson
|
||||
- POST /exports/package
|
||||
- GET /exports
|
||||
|
||||
## Shared components
|
||||
- LoadingState
|
||||
- EmptyState
|
||||
- ErrorState
|
||||
- StatusBadge
|
||||
- MetricCard
|
||||
- JsonInspector
|
||||
- GeometryBadge
|
||||
- CrsBadge
|
||||
- LayerLegend
|
||||
|
||||
## UI principles
|
||||
- Processing state must be visible.
|
||||
- Empty states must suggest next action.
|
||||
- No hidden GIS assumptions: CRS, bounds and source must be visible.
|
||||
- Exports must clearly say which run/source they belong to.
|
||||
Reference in New Issue
Block a user