Initial GeoIntel V1 foundation
GeoIntel CI / docs-smoke (push) Has been cancelled
GeoIntel CI / contract-smoke (push) Has been cancelled

This commit is contained in:
Codex
2026-06-16 23:36:32 +02:00
commit 6ea3586a3e
605 changed files with 45284 additions and 0 deletions
+233
View File
@@ -0,0 +1,233 @@
# Database Schema v1.0
Doel: PostGIS-first schema dat projecten, gebieden, datasets, analyses, AI-resultaten, QA/QC en exports ondersteunt.
## 1. projects
```sql
id UUID PRIMARY KEY
name TEXT NOT NULL
description TEXT
region TEXT DEFAULT 'Kempen'
created_at TIMESTAMP NOT NULL
updated_at TIMESTAMP NOT NULL
```
## 2. areas
```sql
id UUID PRIMARY KEY
project_id UUID REFERENCES projects(id)
name TEXT NOT NULL
geometry GEOMETRY(POLYGON, 4326) NOT NULL
area_m2 DOUBLE PRECISION
crs TEXT DEFAULT 'EPSG:4326'
created_at TIMESTAMP NOT NULL
```
## 3. datasets
```sql
id UUID PRIMARY KEY
project_id UUID REFERENCES projects(id)
name TEXT NOT NULL
dataset_type TEXT NOT NULL -- raster, vector, lidar, reference, model_output
source TEXT -- upload, GRB, OSM, Sentinel, DHMV
original_path TEXT
processed_path TEXT
crs TEXT
srid INTEGER
bounds GEOMETRY(POLYGON, 4326)
metadata_json JSONB
status TEXT NOT NULL
created_at TIMESTAMP NOT NULL
updated_at TIMESTAMP NOT NULL
```
## 4. dataset_versions
```sql
id UUID PRIMARY KEY
dataset_id UUID REFERENCES datasets(id)
version_label TEXT
path TEXT
metadata_json JSONB
created_at TIMESTAMP NOT NULL
```
## 5. vector_features
```sql
id UUID PRIMARY KEY
dataset_id UUID REFERENCES datasets(id)
source_feature_id TEXT
feature_type TEXT
properties JSONB
geometry GEOMETRY(GEOMETRY, 4326)
created_at TIMESTAMP NOT NULL
```
Spatial index required on geometry.
## 6. raster_assets
```sql
id UUID PRIMARY KEY
dataset_id UUID REFERENCES datasets(id)
asset_type TEXT -- original, clipped, tile, preview, index, mask
path TEXT NOT NULL
bounds GEOMETRY(POLYGON, 4326)
metadata_json JSONB
created_at TIMESTAMP NOT NULL
```
## 7. analysis_runs
```sql
id UUID PRIMARY KEY
project_id UUID REFERENCES projects(id)
area_id UUID REFERENCES areas(id)
analysis_type TEXT NOT NULL -- detection, segmentation, qaqc, change, raster_index
status TEXT NOT NULL
parameters_json JSONB
started_at TIMESTAMP
finished_at TIMESTAMP
error_message TEXT
created_at TIMESTAMP NOT NULL
```
## 8. detections
```sql
id UUID PRIMARY KEY
analysis_run_id UUID REFERENCES analysis_runs(id)
class_name TEXT NOT NULL
confidence DOUBLE PRECISION
bbox_json JSONB
source_tile_path TEXT
geometry GEOMETRY(POLYGON, 4326)
metadata_json JSONB
created_at TIMESTAMP NOT NULL
```
Spatial index required on geometry.
## 9. segmentations
```sql
id UUID PRIMARY KEY
analysis_run_id UUID REFERENCES analysis_runs(id)
class_name TEXT NOT NULL
confidence DOUBLE PRECISION
area_m2 DOUBLE PRECISION
raster_mask_path TEXT
geometry GEOMETRY(GEOMETRY, 4326)
metadata_json JSONB
created_at TIMESTAMP NOT NULL
```
## 10. metrics
```sql
id UUID PRIMARY KEY
analysis_run_id UUID REFERENCES analysis_runs(id)
metric_key TEXT NOT NULL
metric_value DOUBLE PRECISION
unit TEXT
metadata_json JSONB
created_at TIMESTAMP NOT NULL
```
## 11. quality_checks
```sql
id UUID PRIMARY KEY
analysis_run_id UUID REFERENCES analysis_runs(id)
reference_dataset_id UUID REFERENCES datasets(id)
check_type TEXT NOT NULL
score DOUBLE PRECISION
findings_json JSONB
created_at TIMESTAMP NOT NULL
```
## 12. quality_findings
```sql
id UUID PRIMARY KEY
quality_check_id UUID REFERENCES quality_checks(id)
finding_type TEXT NOT NULL -- false_positive, false_negative, low_iou, matched
class_name TEXT
score DOUBLE PRECISION
geometry GEOMETRY(GEOMETRY, 4326)
metadata_json JSONB
created_at TIMESTAMP NOT NULL
```
## 13. annotations
```sql
id UUID PRIMARY KEY
project_id UUID REFERENCES projects(id)
dataset_id UUID REFERENCES datasets(id)
class_name TEXT NOT NULL
annotation_type TEXT -- bbox, polygon, mask
geometry GEOMETRY(GEOMETRY, 4326)
metadata_json JSONB
created_at TIMESTAMP NOT NULL
```
## 14. model_registry
```sql
id UUID PRIMARY KEY
name TEXT NOT NULL
model_type TEXT -- yolo, sam, unet, custom_pytorch
version TEXT
artifact_path TEXT
classes_json JSONB
metrics_json JSONB
created_at TIMESTAMP NOT NULL
```
## 15. exports
```sql
id UUID PRIMARY KEY
project_id UUID REFERENCES projects(id)
analysis_run_id UUID REFERENCES analysis_runs(id)
export_type TEXT NOT NULL -- geojson, yolo, coco, mask, report
path TEXT NOT NULL
metadata_json JSONB
created_at TIMESTAMP NOT NULL
```
## 16. jobs
```sql
id UUID PRIMARY KEY
job_type TEXT NOT NULL
status TEXT NOT NULL
payload_json JSONB
result_json JSONB
error_message TEXT
created_at TIMESTAMP NOT NULL
started_at TIMESTAMP
finished_at TIMESTAMP
```
## Indexen
- areas.geometry GIST
- datasets.bounds GIST
- vector_features.geometry GIST
- detections.geometry GIST
- segmentations.geometry GIST
- quality_findings.geometry GIST
- annotations.geometry GIST
## Belangrijke regels
- Grote bestanden nooit in database opslaan.
- Geometrieën altijd met SRID opslaan.
- Iedere modeloutput moet gekoppeld zijn aan een analysis_run.
- Iedere analysis_run moet parameters opslaan voor reproduceerbaarheid.