fix(tradein): оценка исключает Avito из радиусного поиска аналогов #421

Merged
lekss361 merged 1 commit from fix/tradein-estimate-exclude-avito into main 2026-05-22 09:27:00 +00:00

View file

@ -5,7 +5,8 @@
Алгоритм:
1. Geocode address (lat, lon)
2. SELECT listings с фильтрами:
- PostGIS ST_DWithin (geom, point, 800m) радиус поиска
- PostGIS ST_DWithin (geom, point, 1000m) радиус поиска
- source avito (у Avito фейковые anchor-jitter координаты не гео-аналог)
- rooms = target_rooms (точное совпадение)
- area_m2 BETWEEN target × 0.85 AND target × 1.15
- scraped_at > NOW() - 14 days (свежие)
@ -362,6 +363,12 @@ def _fetch_analogs(
AND is_active = true
AND scraped_at > NOW() - (:fresh_days || ' days')::interval
AND price_rub > 0
-- Avito исключён из радиусного поиска: его «координаты» это
-- якорь cron-скрейпа ± jitter (DOM Avito реальных coords не
-- отдаёт). Фейковые точки кучкуются на 5 якорях и вытесняют
-- реальные cian/yandex/n1 оценка считалась почти целиком по
-- Avito. Реальные источники дают честный гео-радиус.
AND source <> 'avito'
ORDER BY (
-- distance_m это SELECT-алиас. В ORDER BY-ВЫРАЖЕНИИ (не голым
-- термом) PostgreSQL трактует имя как входную колонку listings,