feat(tradein/domklik): пробросить isRosreestrApproved в колонку #3068

Merged
lekss361 merged 2 commits from feat/domklik-serp-field-passthrough into main 2026-08-23 21:49:44 +00:00

2 commits

Author SHA1 Message Date
bot-backend
7f829ccc61 fix(tradein/domklik): убрать вывод is_pro_seller — колонка уже перегружена
All checks were successful
CI Trade-In / changes (pull_request) Successful in 7s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI / changes (pull_request) Successful in 9s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 4m33s
Проверка после написания: у is_pro_seller НЕТ единого смысла, из-за
которого её можно было бы выводить из agency_name.

  cian   — offer["isPro"], флаг ПЛАТНОЙ PRO-подписки
           (019_listings_alter_cian.sql:43: «PRO подписка у продавца»)
  yandex — author.category in {AGENCY, AGENT}, категория продавца
           (yandex/serp.py:203-220)

Это уже два разных смысла в одной колонке. «Есть непустой agency_name»
стал бы третьим — и поехал бы в оценщик trade-in наравне с первыми двумя,
причём у domklik agency_name заполнен у 100% записей, то есть колонка
разом получила бы 1338 значений с новой семантикой.

Правильный ход — сначала решить, что эта колонка вообще означает, и
привести к одному смыслу всех троих. Это отдельная задача, не проброс
поля. Здесь остаётся только isRosreestrApproved, у которого соответствие
однозначное и подтверждается cian (offer["isRosreestrChecked"] ->
is_rosreestr_checked, cian/serp.py:1014) — прямой passthrough.

registry_match не трогается: судя по 011_listings_alter.sql:54
(«Совпадают площадь, адрес и этаж») и по тому, что его пишет только
avito/detail.py, это сверка ЕГРН по трём атрибутам с детальной страницы,
а не SERP-флаг «проверено».

Проверено: 114 passed, 1 skipped (-k domclick).

Refs #3064
2026-08-24 00:35:44 +03:00
bot-backend
db31473611 fix(tradein/domklik): пробросить isRosreestrApproved и is_pro_seller в ScrapedLot
BFF-ответ Домклика уже парсит isRosreestrApproved и seller.company/agent
(agency_name), но клал их только в raw_payload jsonb — на проде обе колонки
is_rosreestr_checked и is_pro_seller у всех 1338 активных domklik-листингов
были 100% NULL, хотя данные для их заполнения были в наличии всегда.

- is_rosreestr_checked: прямой passthrough isRosreestrApproved (mirror
  cian serp.py: offer.get("isRosreestrChecked") -> is_rosreestr_checked).
  НЕ то же самое, что listings.registry_match (Avito-специфичная сверка
  "площадь/адрес/этаж совпадают" из detail-страницы, заполняется только
  avito/detail.py) — поэтому registry_match не трогаем.
- is_pro_seller выводится из agency_name: agency_name is None -> None
  (нет данных о продавце), иначе bool(agency_name). agency_name="" на
  практике не возникает (_extract_agency_name уже схлопывает whitespace-only
  в None), но проверка сделана через `is not None`, а не `!= ""`, чтобы
  случайно не превратить None в True.

Refs #3064
2026-08-24 00:32:54 +03:00