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
Owner

Проблема

Оценка для центрального адреса («Малышева 30») возвращала
sources_used=['avito'] — все 18 аналогов из Avito, при том что в БД
1400 живых объявлений Cian/Yandex/N1. Оценка фактически считалась по
худшему источнику.

Причина

У Avito-объявлений нет настоящих координат — DOM Avito их не отдаёт,
скрейпер ставит якорь cron-скрейпа ± jitter. Получается 5 плотных
фейковых кластеров на якорях ЕКБ. Замер на проде:

  • в радиусе 800 м от центра: avito 164, cian 2, yandex 6
  • в радиусе 3 км: avito 179, cian 170, n1 29, yandex 20

tier-1 радиус оценки (1 км) набирал ≥5 «аналогов» из фейковых Avito-
точек, порог срабатывал — и трёхтирный fallback никогда не расширялся
до реальных cian/yandex/n1.

Решение

_fetch_analogs исключает source='avito'. Avito с фейковой
геопривязкой не может быть гео-аналогом; fallback по радиусу теперь
доходит до cian/yandex/n1 с настоящими координатами.

Проверка

После деплоя — повторный прогон оценки «Малышева 30», ожидаем
sources_used = cian/yandex/n1 и аналоги с реальной геопривязкой.

Follow-up: jitter в Avito-скрейпере теперь не нужен (координаты всё
равно игнорируются) — можно убрать отдельно.

## Проблема Оценка для центрального адреса («Малышева 30») возвращала `sources_used=['avito']` — все 18 аналогов из Avito, при том что в БД 1400 живых объявлений Cian/Yandex/N1. Оценка фактически считалась по худшему источнику. ## Причина У Avito-объявлений нет настоящих координат — DOM Avito их не отдаёт, скрейпер ставит `якорь cron-скрейпа ± jitter`. Получается 5 плотных фейковых кластеров на якорях ЕКБ. Замер на проде: - в радиусе 800 м от центра: **avito 164**, cian 2, yandex 6 - в радиусе 3 км: avito 179, cian 170, n1 29, yandex 20 tier-1 радиус оценки (1 км) набирал ≥5 «аналогов» из фейковых Avito- точек, порог срабатывал — и трёхтирный fallback никогда не расширялся до реальных cian/yandex/n1. ## Решение `_fetch_analogs` исключает `source='avito'`. Avito с фейковой геопривязкой не может быть гео-аналогом; fallback по радиусу теперь доходит до cian/yandex/n1 с настоящими координатами. ## Проверка После деплоя — повторный прогон оценки «Малышева 30», ожидаем `sources_used` = cian/yandex/n1 и аналоги с реальной геопривязкой. Follow-up: jitter в Avito-скрейпере теперь не нужен (координаты всё равно игнорируются) — можно убрать отдельно.
lekss361 added 1 commit 2026-05-22 09:26:51 +00:00
У Avito-объявлений «координаты» = якорь cron-скрейпа ± jitter (DOM
Avito реальных coords не отдаёт). Фейковые точки кучкуются плотными
кластерами на 5 якорях ЕКБ — tier-1 радиус (1 км) набирался почти
целиком из них: оценка для центра давала sources_used=['avito'],
18 аналогов все Avito, при 1400 живых cian/yandex/n1 в БД.

_fetch_analogs теперь исключает source='avito'. Трёхтирный fallback
по радиусу доходит до реальных cian/yandex/n1 с настоящей геопривязкой
— оценка считается по корректным аналогам.
lekss361 merged commit 389fcb2146 into main 2026-05-22 09:27:00 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#421
No description provided.