From 4f0cae5c180176c85816604f2771f71907a96ca5 Mon Sep 17 00:00:00 2001 From: bot-backend Date: Sat, 4 Jul 2026 06:55:18 +0000 Subject: [PATCH] =?UTF-8?q?fix(gisogd66):=20CAST(:geojson=20AS=20text)=20?= =?UTF-8?q?=E2=80=94=20AmbiguousParameter=20=D1=80=D0=BE=D0=BD=D1=8F=D0=BB?= =?UTF-8?q?=20=D0=BA=D0=B0=D0=B6=D0=B4=D1=8B=D0=B9=20upsert=20(#2383)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/services/scrapers/gisogd66.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/backend/app/services/scrapers/gisogd66.py b/backend/app/services/scrapers/gisogd66.py index fa2f86b1..459a7362 100644 --- a/backend/app/services/scrapers/gisogd66.py +++ b/backend/app/services/scrapers/gisogd66.py @@ -277,8 +277,12 @@ def _upsert_permit(db: Session, rec: dict[str, Any]) -> str: :doc_group, :doc_num, :doc_name, :date_doc, :date_reg, :approved_org, :source_schema, :source_key, CAST(:cad_nums AS text[]), - CASE WHEN :geojson IS NULL THEN NULL - ELSE ST_Multi(ST_SetSRID(ST_GeomFromGeoJSON(:geojson), 4326)) END, + -- CAST обязателен: без него ни одно вхождение :geojson не даёт Postgres + -- тип параметра (ST_GeomFromGeoJSON перегружена text/json/jsonb) → + -- psycopg.errors.AmbiguousParameter на КАЖДОЙ строке (прод-прогон #2367). + CASE WHEN CAST(:geojson AS text) IS NULL THEN NULL + ELSE ST_Multi(ST_SetSRID( + ST_GeomFromGeoJSON(CAST(:geojson AS text)), 4326)) END, NOW(), NOW() ) ON CONFLICT (doc_group, doc_num) DO UPDATE