209 lines
4.5 KiB
Markdown
209 lines
4.5 KiB
Markdown
# Codex Build Plan
|
|
|
|
Dit document is de uitvoeringsvolgorde voor Codex. Werk fase per fase. Sla geen fases over tenzij technisch noodzakelijk.
|
|
|
|
## Algemene bouwregels
|
|
|
|
- Lees eerst README.md, AGENTS.md en alle docs in deze map.
|
|
- Bouw documentatiegedreven.
|
|
- Geen quick hacks.
|
|
- Geen mock-only functionaliteit als echte functionaliteit verwacht wordt.
|
|
- Voeg bij elke fase tests toe waar zinvol.
|
|
- Update TODO.md na elke afgeronde fase.
|
|
- Houd frontend en backend consistent.
|
|
- API-contracten volgen API_SPECIFICATION.md.
|
|
- Database volgt DATABASE_SCHEMA.md.
|
|
|
|
## Fase 1 — Repo Foundation
|
|
|
|
Doel: werkende basisrepo.
|
|
|
|
Taken:
|
|
|
|
1. Backend scaffold maken in `backend/`.
|
|
2. Frontend scaffold maken in `frontend/`.
|
|
3. Docker compose toevoegen voor backend, frontend, db, redis.
|
|
4. `.env.example` toevoegen.
|
|
5. Basis README quickstart bijwerken.
|
|
6. Health checks toevoegen.
|
|
|
|
Acceptatiecriteria:
|
|
|
|
- backend start lokaal
|
|
- frontend start lokaal
|
|
- database container start
|
|
- health endpoint werkt
|
|
|
|
## Fase 2 — Database Foundation
|
|
|
|
Doel: PostGIS schema opzetten.
|
|
|
|
Taken:
|
|
|
|
1. SQLAlchemy + GeoAlchemy2 toevoegen.
|
|
2. Alembic initialiseren.
|
|
3. projects, areas, datasets, analysis_runs toevoegen.
|
|
4. PostGIS extensie activeren.
|
|
5. Spatial indexes voorzien.
|
|
|
|
Acceptatiecriteria:
|
|
|
|
- migraties draaien succesvol
|
|
- tests kunnen project en area aanmaken
|
|
- geometrie wordt correct opgeslagen
|
|
|
|
## Fase 3 — Project & Area API
|
|
|
|
Doel: projecten en gebieden beheren.
|
|
|
|
Taken:
|
|
|
|
1. CRUD routes voor projects.
|
|
2. CRUD routes voor areas.
|
|
3. GeoJSON polygon validatie.
|
|
4. Area oppervlakte berekenen.
|
|
5. Frontend project list/detail.
|
|
6. Map draw basis.
|
|
|
|
Acceptatiecriteria:
|
|
|
|
- gebruiker kan project maken
|
|
- gebruiker kan polygon tekenen en opslaan
|
|
- area verschijnt op kaart
|
|
|
|
## Fase 4 — Dataset Manager
|
|
|
|
Doel: datasets uploaden en metadata lezen.
|
|
|
|
Taken:
|
|
|
|
1. Upload endpoint.
|
|
2. Bestandsopslag in storage/uploads.
|
|
3. Raster metadata extraction met Rasterio.
|
|
4. Vector metadata extraction met GeoPandas/Fiona.
|
|
5. Dataset list/detail UI.
|
|
6. Statussen tonen.
|
|
|
|
Acceptatiecriteria:
|
|
|
|
- GeoTIFF upload toont CRS, bounds, bands, resolutie
|
|
- GeoJSON/shapefile upload toont CRS, bounds, feature count
|
|
|
|
## Fase 5 — Raster Core
|
|
|
|
Doel: rasterdata verwerken.
|
|
|
|
Taken:
|
|
|
|
1. Raster clipping by area.
|
|
2. Raster preview generation.
|
|
3. Raster tiling met tile metadata.
|
|
4. Tile opslag.
|
|
5. UI acties voor clip/tile.
|
|
|
|
Acceptatiecriteria:
|
|
|
|
- raster kan op area geclipt worden
|
|
- tiles worden aangemaakt
|
|
- tile metadata bevat transform en bounds
|
|
|
|
## Fase 6 — Vector Core
|
|
|
|
Doel: vectordata verwerken.
|
|
|
|
Taken:
|
|
|
|
1. Vector import naar PostGIS.
|
|
2. CRS transform naar 4326.
|
|
3. Geometry validation/repair.
|
|
4. Vector clipping by area.
|
|
5. Feature count en area metrics.
|
|
|
|
Acceptatiecriteria:
|
|
|
|
- vectorlaag wordt zichtbaar op kaart
|
|
- clipping werkt
|
|
- features zitten in PostGIS
|
|
|
|
## Fase 7 — Reference Data
|
|
|
|
Doel: referentielaag beschikbaar maken.
|
|
|
|
Taken:
|
|
|
|
1. OSM fetcher als fallback implementeren.
|
|
2. GRB connector interface ontwerpen.
|
|
3. Reference datasets opslaan als datasets + vector_features.
|
|
4. UI voor referentielaag.
|
|
|
|
Acceptatiecriteria:
|
|
|
|
- OSM buildings kunnen voor area worden opgehaald
|
|
- referentielaag zichtbaar op kaart
|
|
- GRB-interface is voorbereid zonder app te blokkeren als externe endpoint nog niet volledig is
|
|
|
|
## Fase 8 — Detection Lab
|
|
|
|
Doel: objectdetectie end-to-end.
|
|
|
|
Taken:
|
|
|
|
1. Model config en YOLO wrapper.
|
|
2. Detection analysis run.
|
|
3. Inference op raster tiles.
|
|
4. Pixel bbox naar geospatial polygon.
|
|
5. Detecties opslaan.
|
|
6. Detectielaag tonen.
|
|
7. GeoJSON export.
|
|
|
|
Acceptatiecriteria:
|
|
|
|
- detection job kan gestart worden
|
|
- duidelijke fout als model ontbreekt
|
|
- detecties worden als polygonen op kaart getoond
|
|
- export werkt
|
|
|
|
## Fase 9 — QA/QC Lab
|
|
|
|
Doel: detecties vergelijken met referentie.
|
|
|
|
Taken:
|
|
|
|
1. IoU matching.
|
|
2. TP/FP/FN berekening.
|
|
3. Precision/recall/F1.
|
|
4. quality_checks en quality_findings opslaan.
|
|
5. QA UI met metrics en foutlagen.
|
|
|
|
Acceptatiecriteria:
|
|
|
|
- detection run kan vergeleken worden met referentielaag
|
|
- false positives/false negatives zichtbaar
|
|
- metrics kloppen op testfixtures
|
|
|
|
## Fase 10 — Export & Portfolio Demo
|
|
|
|
Doel: bruikbare einddemo.
|
|
|
|
Taken:
|
|
|
|
1. Exportcentrum.
|
|
2. Demo project seed.
|
|
3. Portfolio workflow documenteren.
|
|
4. Smoke tests.
|
|
5. README bijwerken.
|
|
|
|
Acceptatiecriteria:
|
|
|
|
- één demo-workflow werkt end-to-end
|
|
- docs beschrijven hoe demo te draaien
|
|
- tests groen
|
|
|
|
## Niet doen in eerste bouwronde
|
|
|
|
- geen volledige LiDAR Workbench
|
|
- geen eigen training studio
|
|
- geen complexe AI-copilot
|
|
- geen multi-user auth tenzij noodzakelijk
|
|
- geen zwaar dashboard boven analysefunctionaliteit
|