fix(tradein/estimator): дедуп кросс-source дублей в anchor-пути (#2265 follow-up) #2311

Merged
lekss361 merged 1 commit from fix/tradein-anchor-dedup-gap into main 2026-07-03 20:35:38 +00:00

1 commit

Author SHA1 Message Date
bot-backend
86174e8720 fix(tradein/estimator): дедуп кросс-source дублей в anchor-пути (#2265 follow-up)
All checks were successful
CI / changes (pull_request) Successful in 8s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI Trade-In / changes (pull_request) Successful in 8s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 1m42s
PR #2273 применял _dedup_cross_source() только к радиусному списку listings
внутри _price_from_inputs(). Anchor-тиры (Tier A same_building / Tier C
micro_radius, _fetch_anchor_comps()) строятся отдельным raw SQL-запросом и
никогда не проходили через дедуп, хотя именно anchor_comps_used фидит
показываемые analogs[] и n_analogs, как только сработал анкорный тир.

Живой QA 2026-07-03 воспроизвёл ровно этот класс бага: физлот
ул. Сыромолотова 11 (33.6м², эт.3, 4.0млн) показан дважды через
cian+domklik (оба с пустым cadastral_number) на реальном адресе с
analog_tier=micro_radius.

Фикс: anchor_comps = _dedup_cross_source(anchor_comps) перед
_compute_same_building_anchor и перед anchor_comps_used — оба потребителя
(n_analogs и показываемые analogs) читают один и тот же постдедуп список,
синхронизация не требует отдельной логики.

Refs #2265, #2262
2026-07-03 23:32:25 +03:00