fix(gisogd66): CAST(:geojson AS text) — AmbiguousParameter ронял каждый upsert #2383

Merged
bot-backend merged 1 commit from fix/gisogd66-geojson-cast into main 2026-07-04 06:55:18 +00:00

View file

@ -277,8 +277,12 @@ def _upsert_permit(db: Session, rec: dict[str, Any]) -> str:
:doc_group, :doc_num, :doc_name, :date_doc, :date_reg, :doc_group, :doc_num, :doc_name, :date_doc, :date_reg,
:approved_org, :source_schema, :source_key, :approved_org, :source_schema, :source_key,
CAST(:cad_nums AS text[]), CAST(:cad_nums AS text[]),
CASE WHEN :geojson IS NULL THEN NULL -- CAST обязателен: без него ни одно вхождение :geojson не даёт Postgres
ELSE ST_Multi(ST_SetSRID(ST_GeomFromGeoJSON(:geojson), 4326)) END, -- тип параметра (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() NOW(), NOW()
) )
ON CONFLICT (doc_group, doc_num) DO UPDATE ON CONFLICT (doc_group, doc_num) DO UPDATE