fix(tradein/cian): просмотры перестают теряться на int() по фразе (#2669) #2705

Merged
bot-backend merged 1 commit from fix/2669-cian-views into main 2026-08-06 06:46:19 +00:00

1 commit

Author SHA1 Message Date
9195f2aef4 fix(tradein/cian): просмотры перестают теряться на int() по фразе (#2669)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
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 / 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 2m57s
Cian отдаёт просмотры не числом, а фразой:
  "stats":{"totalViewsFormattedString":"146 просмотров, 8 за сегодня"}
(дословно из tests/fixtures/cian_flat_330982715.html). `_parse_views` звала
на ней int() → ValueError → свой же except → None. Прод: views_total пуст
у ВСЕХ 21 799 cian-листингов, включая 1 571 detail-обогащённый. У соседей
потери нет (avito 12 350/12 352, domklik 6 296/6 296, yandex 1 146/1 210) —
дефект ровно один и только у Cian.

Разбор теперь достаёт из фразы оба числа: «за сегодня» живёт в её хвосте,
отдельного ключа todayViewsFormattedString в ответе нет (в фикстуре его
нет вовсе — прежний вызов по нему всегда возвращал None). Колонка
listings.views_today существует с 019_listings_alter_cian.sql и уже
пишется тем же UPDATE — новых полей не заводим.

Формы, покрытые тестами: фраза из фикстуры дословно, "1 просмотр",
"0 просмотров", "1 234 просмотра" с обычным пробелом и с NBSP,
narrow-NBSP, голое "1 234", пусто/None/строка без цифр → (None, None).

Бэкфилл невозможен: исходной фразы в БД нет — 0 вхождений
ViewsFormattedString в listings.raw_payload (21 799 строк, ключа stats нет
ни у одной) и 0 в listing_sources.raw_payload по всем пяти источникам.
Миграция не заводится.

Эффект на проде появится только после возобновления cian-detail: парсер
стоит с 22 июля (max(detail_enriched_at)=2026-07-22, HTTP 403 из-за
протухших кук, #2700). До этого проверка правки — только на сохранённом
ответе.

Refs #2669
2026-08-06 11:39:47 +05:00