From 7900dc523887a457f827a52dd23bb84cd8e523ad Mon Sep 17 00:00:00 2001 From: lekss361 Date: Mon, 11 May 2026 20:58:49 +0300 Subject: [PATCH] fix(site-finder): WKT LINESTRING needs commas + rosreestr_deals real column names --- backend/app/api/v1/parcels.py | 7 ++++--- backend/app/services/site_finder/noise_loader.py | 8 +++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/backend/app/api/v1/parcels.py b/backend/app/api/v1/parcels.py index a4183f7e..cd7ae0e3 100644 --- a/backend/app/api/v1/parcels.py +++ b/backend/app/api/v1/parcels.py @@ -413,13 +413,14 @@ def analyze_parcel( db.execute( text(""" WITH district_deals AS ( - SELECT d.deal_date, d.price_per_m2 + SELECT d.period_start_date AS deal_date, + d.price_per_sqm AS price_per_m2 FROM rosreestr_deals d WHERE d.region_code = 66 AND d.doc_type = 'ДДУ' AND d.realestate_type_code = '002001003000' - AND d.price_per_m2 BETWEEN 30000 AND 500000 - AND d.deal_date > NOW() - INTERVAL '12 months' + AND d.price_per_sqm BETWEEN 30000 AND 500000 + AND d.period_start_date > NOW() - INTERVAL '12 months' AND ST_DWithin( (SELECT ST_Centroid(geom) FROM cad_quarters_geom diff --git a/backend/app/services/site_finder/noise_loader.py b/backend/app/services/site_finder/noise_loader.py index 8bb10eb8..29a982b9 100644 --- a/backend/app/services/site_finder/noise_loader.py +++ b/backend/app/services/site_finder/noise_loader.py @@ -96,10 +96,12 @@ def _way_to_linestring_wkt(nodes: list[dict]) -> str | None: """ if len(nodes) < 2: return None - parts = " ".join(f"{n['lon']} {n['lat']}" for n in nodes if "lon" in n and "lat" in n) - if not parts or parts.count(" ") < 1: + # WKT LINESTRING требует запятую между парами точек: "lon1 lat1, lon2 lat2". + # Раньше joined через пробел → "lon1 lat1 lon2 lat2" → invalid geometry. + points = [f"{n['lon']} {n['lat']}" for n in nodes if "lon" in n and "lat" in n] + if len(points) < 2: return None - return f"LINESTRING({parts})" + return f"LINESTRING({', '.join(points)})" def sync_noise_sources_to_db() -> dict[str, int]: