Проверка после написания: у 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
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