(low) estimator.py/estimate_quality: freshness/last_scraped_at/days_on_market считаются по listings_clean, а не по показанным anchor_comps_used #1519

Closed
opened 2026-06-15 05:59:09 +00:00 by bot-backend · 0 comments
Collaborator

Severity: low · Категория: report · Файл: tradein-mvp/backend/app/services/estimator.py:2645-2650, 2788-2789, 2818

estimator.py:2645-2650, 2788-2789, 2818. При сработавшем same-building якоре список показанных аналогов переключается на anchor_comps_used (стр.2645-2646, комментарий #694), но _compute_freshness_minutes(listings_clean) (2650/2788), _compute_last_scraped_at(listings_clean) (2789) и _estimate_days_on_market(listings_clean, deals) (2818) продолжают читать радиусную выборку listings_clean. Импакт: поля 'обновлено N мин назад', дата последнего парсинга и прогноз срока продажи в карточке относятся к ДРУГОМУ набору, чем показанные аналоги; при пустом listings_clean эти поля = None, хотя у anchor-комплов есть scraped_at/days_on_market. Это рассогласование метаданных, не ценовая ошибка. Фикс: для anchor-пути считать freshness/last_scraped_at/days_on_market по anchor_comps_used (тому же источнику, что и analogs_lots).

Почему баг: На строке 2645-2648 analogs_lots = anchor_comps_used при anchor_tier; но _compute_freshness_minutes(listings_clean) (2650/2788), _compute_last_scraped_at(listings_clean) (2789) и _estimate_days_on_market(listings_clean, deals) (2818) игнорируют anchor_comps_used. Комментарий #694 явно признаёт, что anchor-путь подменяет analogs на anchor_comps_used, но freshness/days_on_market забыли переключить на тот же источник.

Как чинить: Ввести переменную shown_lots = anchor_comps_used if (anchor_tier and anchor_comps_used) else listings_clean и считать freshness/last_scraped_at/est_days_on_market по ней (как уже делается для analogs_lots и sources_used).


deep-audit «армия ботов 2» · verify+harden, confidence 0.78 · unit U124

**Severity:** low · **Категория:** report · **Файл:** `tradein-mvp/backend/app/services/estimator.py:2645-2650, 2788-2789, 2818` estimator.py:2645-2650, 2788-2789, 2818. При сработавшем same-building якоре список показанных аналогов переключается на anchor_comps_used (стр.2645-2646, комментарий #694), но _compute_freshness_minutes(listings_clean) (2650/2788), _compute_last_scraped_at(listings_clean) (2789) и _estimate_days_on_market(listings_clean, deals) (2818) продолжают читать радиусную выборку listings_clean. Импакт: поля 'обновлено N мин назад', дата последнего парсинга и прогноз срока продажи в карточке относятся к ДРУГОМУ набору, чем показанные аналоги; при пустом listings_clean эти поля = None, хотя у anchor-комплов есть scraped_at/days_on_market. Это рассогласование метаданных, не ценовая ошибка. Фикс: для anchor-пути считать freshness/last_scraped_at/days_on_market по anchor_comps_used (тому же источнику, что и analogs_lots). **Почему баг:** На строке 2645-2648 analogs_lots = anchor_comps_used при anchor_tier; но _compute_freshness_minutes(listings_clean) (2650/2788), _compute_last_scraped_at(listings_clean) (2789) и _estimate_days_on_market(listings_clean, deals) (2818) игнорируют anchor_comps_used. Комментарий #694 явно признаёт, что anchor-путь подменяет analogs на anchor_comps_used, но freshness/days_on_market забыли переключить на тот же источник. **Как чинить:** Ввести переменную shown_lots = anchor_comps_used if (anchor_tier and anchor_comps_used) else listings_clean и считать freshness/last_scraped_at/est_days_on_market по ней (как уже делается для analogs_lots и sources_used). --- <sub>deep-audit «армия ботов 2» · verify+harden, confidence 0.78 · unit U124</sub>
bot-backend added the
week ревью 1
label 2026-06-15 05:59:09 +00:00
bot-backend added the
scope/backend
label 2026-06-15 11:02:17 +00:00
Sign in to join this conversation.
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#1519
No description provided.