From 9feadc8458306c87c3b0cae6c4e14d288b98f0c7 Mon Sep 17 00:00:00 2001 From: bot-backend Date: Fri, 3 Jul 2026 22:26:19 +0000 Subject: [PATCH] =?UTF-8?q?fix(market-metrics):=20offer-trend=20=D1=82?= =?UTF-8?q?=D0=B0=D0=B9=D0=BC=D0=B0=D1=83=D1=82=20=E2=80=94=20warning=20?= =?UTF-8?q?=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20exception=20(=D0=BB?= =?UTF-8?q?=D0=BE=D0=B6=D0=BD=D1=8B=D0=B5=20GlitchTip-=D1=81=D0=BE=D0=B1?= =?UTF-8?q?=D1=8B=D1=82=D0=B8=D1=8F)=20(#2329)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/services/site_finder/market_metrics.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/backend/app/services/site_finder/market_metrics.py b/backend/app/services/site_finder/market_metrics.py index 20f32a8f..77b11863 100644 --- a/backend/app/services/site_finder/market_metrics.py +++ b/backend/app/services/site_finder/market_metrics.py @@ -810,6 +810,9 @@ _OFFER_TREND_SQL = text( # Границы вменяемости цены предложения (руб/м²). Шире, чем сделки-тренд (30k–500k): # предложение включает премиум/апартаменты; отсекаем только явный ETL-мусор. +# ⚠ Значения зеркалированы ЛИТЕРАЛАМИ в partial-предикате покрывающего индекса +# data/sql/186_objective_lots_history_offer_trend_covering_idx.sql — при изменении +# констант индекс надо пересоздать, иначе offer-trend молча теряет Index-Only Scan. _OFFER_PRICE_MIN: int = 10000 _OFFER_PRICE_MAX: int = 1000000 @@ -875,12 +878,16 @@ def compute_offer_price_trend( } try: rows = db.execute(_OFFER_TREND_SQL, params).mappings().all() - except Exception: - logger.exception( - "market_metrics: offer-trend query failed (lat=%s lon=%s radius=%s)", + except Exception as exc: + # Ожидаемый путь: 8с-гвард (parcels.py) отменяет запрос на холодном кэше + # (~2/сутки, профилирование 2026-07-04) — блок аддитивный, analyze успешен. + # WARNING, не exception: ERROR-уровень поднимал ложные GlitchTip-события. + logger.warning( + "market_metrics: offer-trend query failed (lat=%s lon=%s radius=%s): %s", center_lat, center_lon, radius_m, + exc, ) rows = []