(medium) recommend_mix: success-boost меняет share_pct, но не пересчитывает units/revenue/velocity → внутренне противоречивый ответ
[medium] object_flats_quartirography: бакет 'Нежилые' дробится на дубли, когда у нежилого юнита rooms не NULL
[medium] _score_label игнорирует порог 'хорошо'=25 — участки со score 15..25 помечены 'хорошо' вместо 'средне'
[medium] fetch_status: завершённый/paused job с непустым target-статусом проваливается в неверный ответ 'not_in_nspd'
[medium] supply_layers: один domrf-объект может учитываться И в Layer2 (hidden) И в Layer3 (future) — двойной счёт предложения на горизонтах 18/24 мес
[medium] velocity: monthly_velocity делит суммарный объём конкурентов на MAX месяцев одного конкурента — занижение при разнородных окнах
[medium] is_residential_zone: prefix-проверка мертва для NSPD zone_code, детект жилой зоны держится на хрупкой подстроке 'жил' без negative-list
(medium) refresh_ekb_districts_median: ST_Intersects двойного-счёта сделок на пограничных кварталах искажает медиану/среднюю цену района
(medium) PDF-отчёт Trade-In печатает period_months=24, тогда как данные за 12 месяцев — неверное окно в клиентском документе
(medium) Аэродромы запрашиваются из OSM только как node — авиашум молча теряется в скоринге
(medium) Geocode cache get/put делает блокирующий DB-IO на event loop, хотя тот же файл использует to_thread для других DB-вызовов
(medium) Sber pull выполняет блокирующий DB/CPU на event loop (async-таск без run_in_executor)
(medium) BrowserSession Semaphore = 8 вместо задокументированных 3 — ~3x риск WAF-блокировки на DOM.РФ sweep
(medium) Блокирующий синхронный psycopg-IO в async-хендлере get_parcel_connection_points
(high) Sber pull: пойманный сбой UPSERT отравляет Session — нет db.rollback(), все оставшиеся серии каскадно падают
(high) cad_territorial_zones.geom объявлена GEOGRAPHY(POLYGON) — MultiPolygon ПЗЗ-зоны молча отбрасываются при harvest
(high) poi_loader.sync_poi_to_db: UPSERT-цикл без per-row SAVEPOINT — одна битая строка валит весь weekly POI-sync
(high) parcels.analyze: optional DB-блоки без begin_nested() — один сбойный query отравляет всю tx, молча теряет данные и срывает persist рана
[high] СЗЗ с упоминанием газ/электр ошибочно эскалируется в hard-blocker — вердикт «Нельзя» вместо «С ограничениями»
[high] obj_class_filter (англ.) сравнивается с русским obj_class в БД — фильтр класса всегда даёт 0 конкурентов (competitors + best_layouts)