Fix live national source serialization
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user