fix(tradein): оценка исключает Avito из радиусного поиска аналогов #421
1 changed files with 8 additions and 1 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue