From 1a0bf10017415ca97a1c4d772a1fab8b044a5afd Mon Sep 17 00:00:00 2001 From: lekss361 Date: Mon, 11 May 2026 14:59:46 +0300 Subject: [PATCH] =?UTF-8?q?fix(nspd-geo):=20json.dumps=20for=20quarter=20r?= =?UTF-8?q?aw=5Fprops=20(Python=20True=20=E2=86=92=20JSON=20true)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _save_quarter использовал str(dict).replace("'", '"') как hack для GeoJSON → JSON. Это ломалось на Python booleans (True/False/None), которые в JSON должны быть true/false/null. После dumps=False фикса rosreestr2coord возвращает Python dict с булями в properties (is_actual=True) → INSERT падал с psycopg.errors.InvalidTextRepresentation. _save_building уже использовал json.dumps корректно. Co-Authored-By: Claude Opus 4.7 (1M context) --- backend/app/workers/tasks/nspd_geo.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/app/workers/tasks/nspd_geo.py b/backend/app/workers/tasks/nspd_geo.py index 6220c3eb..4862e113 100644 --- a/backend/app/workers/tasks/nspd_geo.py +++ b/backend/app/workers/tasks/nspd_geo.py @@ -19,6 +19,7 @@ Resume: from __future__ import annotations +import json import logging from typing import Any @@ -145,8 +146,8 @@ def _save_quarter(db: Session, payload: dict, cad_num: str) -> int: ), { "cad": cad_num, - "g": str(geom_geojson).replace("'", '"'), - "props": str(f.get("properties", {})).replace("'", '"'), + "g": json.dumps(geom_geojson, ensure_ascii=False), + "props": json.dumps(f.get("properties") or {}, ensure_ascii=False), }, ) return 1