From bff0b43f9808e58ceca06d7034f2e494b52c7b45 Mon Sep 17 00:00:00 2001 From: bot-backend Date: Sat, 27 Jun 2026 20:23:48 +0300 Subject: [PATCH] fix(tradein/avito): persist house_type + house_catalog_url in save_detail_enrichment (#2009) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit house_type (уже нормализован парсером в канон panel/brick/monolith/ monolith_brick/block/wood) закрывает вечный NULL listings.house_type для avito (потолок ~29% enriched) → estimator soft-penalty начинает учитывать тип дома avito-аналогов. house_catalog_url → listings.house_url для линковки дома. COALESCE — не затираем возможный canonical из Houses Catalog. Чисто additive, миграция не нужна (колонки listings.house_type / house_url уже существуют). --- .../backend/app/services/scrapers/avito_detail.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tradein-mvp/backend/app/services/scrapers/avito_detail.py b/tradein-mvp/backend/app/services/scrapers/avito_detail.py index 24192abc..450c5e4e 100644 --- a/tradein-mvp/backend/app/services/scrapers/avito_detail.py +++ b/tradein-mvp/backend/app/services/scrapers/avito_detail.py @@ -677,8 +677,15 @@ def save_detail_enrichment(db: Session, e: DetailEnrichment) -> bool: Returns True если строка обновлена, False если listing не найден. Устанавливает detail_enriched_at=NOW(). - House-level поля (passenger_elevators, has_concierge, closed_yard, - total_floors_house, house_type) игнорируются — canonical из Houses Catalog (Stage 2c). + + house_type СОХРАНЯЕТСЯ (уже нормализован парсером → канон panel/brick/monolith/ + monolith_brick/block/wood) — нужен estimator soft-penalty по типу дома. + house_catalog_url СОХРАНЯЕТСЯ в listings.house_url (линковка дома); отдельной + house_catalog_url колонки нет. Оба через COALESCE — не затираем canonical из + Houses Catalog (Stage 2c). + Остальные house-level поля (passenger_elevators, cargo_elevators, has_concierge, + closed_yard, total_floors_house) по-прежнему опускаются — нет колонок в listings, + canonical приходит из Houses Catalog Stage 2c (отдельный follow-up). """ result = db.execute( text(""" @@ -713,6 +720,8 @@ def save_detail_enrichment(db: Session, e: DetailEnrichment) -> bool: total_floors = COALESCE(:total_floors, total_floors), repair_state = COALESCE(:repair_state, repair_state), price_rub = COALESCE(:price_rub, price_rub), + house_type = COALESCE(house_type, :house_type), + house_url = COALESCE(:house_catalog_url, house_url), detail_enriched_at = NOW() WHERE source = 'avito' AND source_id = :item_id """), @@ -750,6 +759,8 @@ def save_detail_enrichment(db: Session, e: DetailEnrichment) -> bool: "total_floors": e.total_floors, "repair_state": e.repair_state, "price_rub": e.price_rub, + "house_type": e.house_type, + "house_catalog_url": e.house_catalog_url, }, ) db.commit()