Fix live national source serialization
GeoIntel CI / docs-smoke (push) Canceled after 0s
GeoIntel CI / contract-smoke (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-18 01:51:50 +02:00
parent 1e527bf810
commit ec3e7a4fa8
4 changed files with 9 additions and 1 deletions
+2
View File
@@ -62,6 +62,8 @@
to the Map UI without removing Mol/Kempen regression workspaces. to the Map UI without removing Mol/Kempen regression workspaces.
- Local RC-4 validation passed 986 backend tests, frontend typecheck/build, - Local RC-4 validation passed 986 backend tests, frontend typecheck/build,
the full readiness gate, one Alembic head and complete offline migration SQL. the full readiness gate, one Alembic head and complete offline migration SQL.
- Fixed fail-closed AdminVector GeoJSON serialization for Pandas timestamp
properties exposed by the live NGI GeoPackage.
## Sprint 240 Operational forest, agriculture, nature and soil themes (2026-07-17) ## Sprint 240 Operational forest, agriculture, nature and soil themes (2026-07-17)
@@ -157,5 +157,6 @@ def test_operator_is_packaged_and_guarded_by_readiness() -> None:
assert "COPY scripts/provision_belgium_north_sea_scope.py /app/scripts/" in dockerfile assert "COPY scripts/provision_belgium_north_sea_scope.py /app/scripts/" in dockerfile
assert "py_compile scripts/provision_belgium_north_sea_scope.py" in readiness assert "py_compile scripts/provision_belgium_north_sea_scope.py" in readiness
assert "/datasets/upload" in source assert "/datasets/upload" in source
assert "frame.to_json(drop_id=False, default=str)" in source
assert "from app.models" not in source assert "from app.models" not in source
assert "INSERT INTO vector_features" not in source assert "INSERT INTO vector_features" not in source
+5
View File
@@ -25,6 +25,11 @@
SQL and live-smoke shell syntax. SQL and live-smoke shell syntax.
- Tower fetch-only, persistence, live coverage API and browser acceptance are - Tower fetch-only, persistence, live coverage API and browser acceptance are
the remaining RC-4 exit evidence. the remaining RC-4 exit evidence.
- The first Tower fetch-only run failed closed before API persistence because
AdminVector exposes `modifdate` as a Pandas `Timestamp`. GeoJSON
serialization was corrected to explicit string conversion and guarded by a
regression assertion; downloaded source artifacts remain operator cache
only.
- Froze the RC geography as all Belgian land plus the separately labelled - Froze the RC geography as all Belgian land plus the separately labelled
territorial sea, EEZ and continental shelf. territorial sea, EEZ and continental shelf.
+1 -1
View File
@@ -251,7 +251,7 @@ def read_adminvector_layers(gpkg_path: Path) -> dict[str, dict[str, Any]]:
raise RuntimeError( raise RuntimeError(
f"NGI layer {layer_name} has {len(frame)} records; expected between {minimum} and {maximum}" f"NGI layer {layer_name} has {len(frame)} records; expected between {minimum} and {maximum}"
) )
payload = json.loads(frame.to_json(drop_id=False)) payload = json.loads(frame.to_json(drop_id=False, default=str))
source_max_modification = None source_max_modification = None
if "modifdate" in frame.columns: if "modifdate" in frame.columns:
parsed = pandas.to_datetime(frame["modifdate"], errors="coerce", utc=True).dropna() parsed = pandas.to_datetime(frame["modifdate"], errors="coerce", utc=True).dropna()