Files
geointel/docs/MODULE_BUILD_CONTRACTS.md
Jens faeb58ef6d
GeoIntel release gates / Compile, test, contracts and builds (push) Successful in 1m49s
GeoIntel release gates / Python and npm vulnerability policy (push) Successful in 21s
GeoIntel release gates / Production AI image, SBOM and container scan (push) Successful in 5m39s
GeoIntel release gates / Deploy exact gated revision to Unraid (push) Failing after 58m43s
Initial public release
2026-08-31 21:56:53 +02:00

82 lines
2.7 KiB
Markdown

# Module Build Contracts
Every module must follow this contract before it is considered build-complete.
## Common Contract
Each module must define:
- Purpose.
- Inputs.
- Outputs.
- API calls.
- Database entities touched.
- Background jobs used.
- Empty, loading, error and success UI states.
- Tests.
- Export behavior if applicable.
## Project Workspace
Purpose: manage a geospatial investigation.
Inputs: name, description, optional region preset.
Outputs: project record, workspace route.
API: `POST /api/projects`, `GET /api/projects`, `GET /api/projects/{id}`.
DB: projects.
Tests: create/list/detail.
## Area Manager
Purpose: create reusable analysis geometries.
Inputs: GeoJSON polygon or drawn polygon.
Outputs: area geometry, area size, bounds.
API: `POST /api/projects/{project_id}/areas`, `GET /api/projects/{project_id}/areas`.
DB: areas.
Validation: polygon must be valid, non-empty and inside supported broad region unless override is enabled.
## Dataset Manager
Purpose: ingest source data.
Inputs: uploaded files or source connector request.
Outputs: dataset record with extracted metadata.
API: `POST /api/projects/{project_id}/datasets`, `GET /api/projects/{project_id}/datasets`, `GET /api/datasets/{id}`.
DB: datasets, dataset_versions.
Storage: originals, processed, cache.
## Raster Lab
Purpose: inspect and prepare raster data for analysis and AI.
Inputs: raster dataset, area polygon, band config.
Outputs: metadata, preview, clipped raster, tiles.
API: `/api/raster/*`.
DB: datasets, processing_jobs, raster_outputs.
## Vector Lab
Purpose: inspect and process vector data.
Inputs: vector dataset, area polygon, operation parameters.
Outputs: clipped/intersected/buffered derived layers.
API: `/api/vector/*`.
DB: layers, derived_layers.
## Detection Lab
Purpose: run object detection and georeference outputs.
Inputs: raster dataset, model id, threshold, tile size.
Outputs: detections as PostGIS geometries and GeoJSON export.
API: `POST /api/analysis/detection-runs`.
DB: analysis_runs, detections, metrics.
## Segmentation Lab
Purpose: run segmentation and polygonize masks.
Inputs: raster dataset, model id, classes, threshold.
Outputs: segmentation polygons, masks and area metrics.
API: `POST /api/analysis/segmentation-runs`.
DB: analysis_runs, segmentations, metrics.
## QA/QC Lab
Purpose: compare AI output against reference geodata such as GRB.
Inputs: analysis run, reference dataset, class mapping, IoU threshold.
Outputs: precision, recall, F1, matched/unmatched features.
API: `POST /api/qaqc/runs`.
DB: quality_checks, quality_findings, metrics.
## Exports
Purpose: provide reusable outputs for GIS tools and portfolio demo.
Inputs: project, analysis, dataset or layer id.
Outputs: GeoJSON, CSV, report files.
API: `POST /api/exports`.
DB: exports.