feat(tradein/avito): house-поля с детальной страницы доезжают в houses (#3036) #3040

Merged
bot-backend merged 2 commits from feat/3036-detail-house-params into main 2026-08-21 14:48:36 +00:00

2 commits

Author SHA1 Message Date
2f28f0166e test(tradein): #3036 live-тест — обязательные url/source_url/dedup_hash в фикстурах houses/listings (NOT NULL без дефолта на проде; локально тест пропускался)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 10s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
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 4m24s
2026-08-21 19:35:28 +05:00
9246033795 feat(tradein/avito): house-поля с детальной страницы доезжают в houses (#3036)
Some checks failed
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 10s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Failing after 4m35s
Почему: detail-парсер извлекал has_concierge/closed_yard/total_floors_house/
house_type на каждой карточке и выбрасывал всё, кроме house_type/house_url
для listings (комментарий в шапке: «собираются но НЕ сохраняются, Stage 2c»,
а Stage 2c почти не отрабатывает). На проде при 10 051 обогащённых карточках
с привязкой к дому has_concierge заполнен у 5 домов из 10 131, closed_yard —
у 19; при этом API отдаёт эти поля, и «неизвестно» читается как «нет».

Что: в save_detail_enrichment — единственной точке для пайплайна (×2) и
бэкфилла — вторым оператором fill-only UPDATE houses … FROM listings WHERE
house_id_fk = h.id: COALESCE(houses.X, новое) для has_concierge, closed_yard,
total_floors, house_type; под SAVEPOINT (отказ не роняет обогащение
листинга); нет house-полей с карточки — оператора нет. Лифты не пишутся:
колонок в houses нет (conflict_resolution их объявляет, схема — нет).

Тесты: подменный Session — второй оператор, fill-only, SAVEPOINT, без
лифтов, без полей — без оператора, листинг не найден — дом не трогаем (на
main красный по значению); live (CI БД): fill → не затирает → без привязки
дом не тронут.

Refs #3036
2026-08-21 19:21:37 +05:00