Add demo raster fixture workflow
This commit is contained in:
+4
-3
@@ -46,9 +46,10 @@ bash scripts/verify_workbench_default_state.sh http://192.168.10.150:1202
|
||||
|
||||
This smoke is dependency-light and intentionally idempotent: it seeds the
|
||||
offline demo workflow, then verifies that `GeoIntel Demo - Building QA` exposes
|
||||
the `Demo AOI - Geel buildings` map geometry, `2/2 ready` demo datasets and a
|
||||
persisted QA/QC result through canonical `data.items` envelopes. Pair it with a
|
||||
Codex/browser screenshot pass when checking visual layout or overflow.
|
||||
the `Demo AOI - Geel buildings` map geometry, `3/3 ready` demo datasets
|
||||
(candidate vector, reference vector and raster fixture) and a persisted QA/QC
|
||||
result through canonical `data.items` envelopes. Pair it with a Codex/browser
|
||||
screenshot pass when checking visual layout or overflow.
|
||||
|
||||
Verify the backing state for the core workbench interactions:
|
||||
|
||||
|
||||
@@ -79,6 +79,7 @@ project_id="$(json_field "${TMP_DIR}/demo.json" "data.project_id")"
|
||||
area_id="$(json_field "${TMP_DIR}/demo.json" "data.area_id")"
|
||||
candidate_dataset_id="$(json_field "${TMP_DIR}/demo.json" "data.candidate_dataset_id")"
|
||||
reference_dataset_id="$(json_field "${TMP_DIR}/demo.json" "data.reference_dataset_id")"
|
||||
raster_dataset_id="$(json_field "${TMP_DIR}/demo.json" "data.raster_dataset_id")"
|
||||
quality_check_id="$(json_field "${TMP_DIR}/demo.json" "data.quality_check_id")"
|
||||
|
||||
curl -fsS "${BASE_URL%/}/api/v1/projects" > "${TMP_DIR}/projects.json"
|
||||
@@ -123,11 +124,11 @@ PY
|
||||
|
||||
curl -fsS "${BASE_URL%/}/api/v1/projects/${project_id}/datasets" > "${TMP_DIR}/datasets.json"
|
||||
require_json_data "${TMP_DIR}/datasets.json"
|
||||
"${PYTHON_BIN}" - "${TMP_DIR}/datasets.json" "${candidate_dataset_id}" "${reference_dataset_id}" <<'PY'
|
||||
"${PYTHON_BIN}" - "${TMP_DIR}/datasets.json" "${candidate_dataset_id}" "${reference_dataset_id}" "${raster_dataset_id}" <<'PY'
|
||||
import json
|
||||
import sys
|
||||
|
||||
path, candidate_id, reference_id = sys.argv[1], sys.argv[2], sys.argv[3]
|
||||
path, candidate_id, reference_id, raster_id = sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]
|
||||
with open(path, "r", encoding="utf-8") as handle:
|
||||
payload = json.load(handle)
|
||||
items = payload["data"]["items"]
|
||||
@@ -136,10 +137,14 @@ if candidate_id not in ids:
|
||||
raise SystemExit("Candidate fixture dataset is missing from default workbench dataset list")
|
||||
if reference_id not in ids:
|
||||
raise SystemExit("Reference fixture dataset is missing from default workbench dataset list")
|
||||
if ids[candidate_id].get("status") != "ready" or ids[reference_id].get("status") != "ready":
|
||||
raise SystemExit("Expected 2/2 ready demo datasets")
|
||||
if raster_id not in ids:
|
||||
raise SystemExit("Raster fixture dataset is missing from default workbench dataset list")
|
||||
if ids[candidate_id].get("status") != "ready" or ids[reference_id].get("status") != "ready" or ids[raster_id].get("status") != "ready":
|
||||
raise SystemExit("Expected 3/3 ready demo datasets")
|
||||
if ids[reference_id].get("dataset_role") != "reference":
|
||||
raise SystemExit("Default workbench reference dataset is not marked as reference")
|
||||
if ids[raster_id].get("dataset_type") != "raster" or ids[raster_id].get("source_name") != "fixture":
|
||||
raise SystemExit("Default workbench raster fixture lost its raster/source metadata")
|
||||
PY
|
||||
|
||||
curl -fsS "${BASE_URL%/}/api/v1/projects/${project_id}/quality-checks" > "${TMP_DIR}/quality_checks.json"
|
||||
@@ -167,5 +172,5 @@ PY
|
||||
echo "Workbench default state verification passed"
|
||||
echo "Project: GeoIntel Demo - Building QA"
|
||||
echo "Area: Demo AOI - Geel buildings"
|
||||
echo "Datasets: 2/2 ready"
|
||||
echo "Datasets: 3/3 ready"
|
||||
echo "QA/QC: seeded check is available"
|
||||
|
||||
@@ -67,6 +67,7 @@ project_id="$(json_field "${TMP_DIR}/demo.json" "data.project_id")"
|
||||
area_id="$(json_field "${TMP_DIR}/demo.json" "data.area_id")"
|
||||
candidate_dataset_id="$(json_field "${TMP_DIR}/demo.json" "data.candidate_dataset_id")"
|
||||
reference_dataset_id="$(json_field "${TMP_DIR}/demo.json" "data.reference_dataset_id")"
|
||||
raster_dataset_id="$(json_field "${TMP_DIR}/demo.json" "data.raster_dataset_id")"
|
||||
quality_check_id="$(json_field "${TMP_DIR}/demo.json" "data.quality_check_id")"
|
||||
|
||||
curl -fsS "${BASE_URL%/}/api/v1/projects" > "${TMP_DIR}/projects.json"
|
||||
@@ -87,12 +88,13 @@ require_json_data "${TMP_DIR}/quality_checks.json"
|
||||
"${area_id}" \
|
||||
"${candidate_dataset_id}" \
|
||||
"${reference_dataset_id}" \
|
||||
"${raster_dataset_id}" \
|
||||
"${quality_check_id}" <<'PY'
|
||||
import json
|
||||
import sys
|
||||
|
||||
projects_path, areas_path, datasets_path, quality_path = sys.argv[1:5]
|
||||
project_id, area_id, candidate_id, reference_id, quality_check_id = sys.argv[5:10]
|
||||
project_id, area_id, candidate_id, reference_id, raster_id, quality_check_id = sys.argv[5:11]
|
||||
|
||||
def load(path):
|
||||
with open(path, "r", encoding="utf-8") as handle:
|
||||
@@ -116,14 +118,19 @@ if not area.get("geometry"):
|
||||
dataset_ids = {item["id"]: item for item in datasets}
|
||||
candidate = dataset_ids.get(candidate_id)
|
||||
reference = dataset_ids.get(reference_id)
|
||||
raster = dataset_ids.get(raster_id)
|
||||
if not candidate:
|
||||
raise SystemExit("candidate dataset backing state is missing")
|
||||
if not reference:
|
||||
raise SystemExit("reference dataset backing state is missing")
|
||||
if candidate.get("status") != "ready" or reference.get("status") != "ready":
|
||||
raise SystemExit("Dataset selection backing state is not 2/2 ready")
|
||||
if not raster:
|
||||
raise SystemExit("raster dataset backing state is missing")
|
||||
if candidate.get("status") != "ready" or reference.get("status") != "ready" or raster.get("status") != "ready":
|
||||
raise SystemExit("Dataset selection backing state is not 3/3 ready")
|
||||
if reference.get("dataset_role") != "reference":
|
||||
raise SystemExit("reference dataset backing state lost its reference role")
|
||||
if raster.get("dataset_type") != "raster" or raster.get("source_name") != "fixture":
|
||||
raise SystemExit("raster dataset backing state lost its fixture raster metadata")
|
||||
|
||||
quality_check = next((item for item in checks if item["id"] == quality_check_id), None)
|
||||
if not quality_check or quality_check.get("status") != "ok":
|
||||
@@ -158,6 +165,6 @@ PY
|
||||
echo "Workbench interaction backing-state verification passed"
|
||||
echo "Project switch: GeoIntel Demo - Building QA"
|
||||
echo "Area selection: Demo AOI - Geel buildings"
|
||||
echo "Dataset selection: candidate dataset and reference dataset ready"
|
||||
echo "Dataset selection: candidate, reference and raster fixture datasets ready"
|
||||
echo "QA refresh: seeded metrics available"
|
||||
echo "Export refresh: metadata export listed"
|
||||
|
||||
Reference in New Issue
Block a user