Scripts
Setup-, import-, demo- en maintenance-scripts voor GeoIntel.
Runtime verification
Verify the browser-facing Docker/LAN runtime:
bash scripts/verify_browser_runtime.sh http://192.168.10.150:1202
bash scripts/verify_gis_runtime.sh http://192.168.10.150:1202
Verify the explicit demo workflow plus export artifact path:
bash scripts/verify_demo_export_workflow.sh http://192.168.10.150:1202
The demo/export smoke is intentionally mutating and idempotent: it seeds the offline fixture demo if needed, verifies the project area GeoJSON, fixture datasets, vector FeatureCollection content, vector feature summary, persisted QA/QC metrics, creates metadata/report/vector GeoJSON exports, lists exports and downloads the JSON/GeoJSON/HTML artifacts through the frontend proxy.
Verify the deterministic QA/QC golden benchmark:
bash scripts/verify_golden_qa_benchmark.sh
python scripts/run_golden_qa_benchmark.py --json
The benchmark uses only explicit local fixtures under fixtures/golden,
executes the existing QA/QC matching logic, verifies the expected precision,
recall, F1, mean IoU and false-positive/false-negative counts, and checks that
QualityCheck plus Metric rows would be persisted. The main readiness gate
runs this benchmark so QA metric drift fails before a release.
Verify a configured local YOLO model without running inference:
python scripts/yolo_preflight.py --model-path /absolute/path/to/model.pt --tile-manifest-path /absolute/path/to/manifest.json --check-model-load --json
Against the Docker runtime:
docker compose exec -T backend python scripts/yolo_preflight.py --model-path /absolute/path/to/model.pt --tile-manifest-path /absolute/path/to/manifest.json --check-model-load --json
The model-load smoke is opt-in, requires real optional AI dependencies, refuses
--assume-dependencies, loads only the supplied local file and does not download
weights or run prediction.
Clean old offline demo export artifacts without touching uploaded source data:
python scripts/cleanup_demo_artifacts.py
python scripts/cleanup_demo_artifacts.py --keep-latest 3 --apply
Against the Docker runtime, run the backend-container entrypoint:
docker compose exec -T backend python scripts/cleanup_demo_artifacts.py
docker compose exec -T backend python scripts/cleanup_demo_artifacts.py --keep-latest 3 --apply
The cleanup script is dry-run by default. It only targets the explicit
GeoIntel Demo - Building QA project unless --project-name is provided, keeps
the newest exports per matching project, deletes only exports rows/files when
--apply is set, and refuses to remove files outside the configured
STORAGE_ROOT.
Tower deployment
Push the local branch to Gitea, then rebuild the Unraid/Tower Docker runtime:
bash scripts/deploy_tower.sh
From the Codex Windows workspace, use the PowerShell wrapper:
.\scripts\deploy_tower.ps1
For the first deployment into an existing non-Git appdata folder, bootstrap the checkout explicitly:
DEPLOY_BOOTSTRAP=1 bash scripts/deploy_tower.sh
.\scripts\deploy_tower.ps1 -Bootstrap
Useful overrides:
REMOTE_HOST=root@192.168.10.150
REMOTE_PATH=/mnt/user/appdata/geointel
REMOTE_REPO=gitea-widefrog:NuklearRabbit/geointel.git
FRONTEND_URL=http://192.168.10.150:1202