fix(tradein/cian): показать, ЧТО пришло вместо состояния ЖК-страницы, и честно закрывать нулевой прогон (#2767) #2768

Merged
bot-backend merged 1 commit from fix/2767-newbuilding-diagnose into main 2026-08-07 08:06:26 +00:00

1 commit

Author SHA1 Message Date
575769e706 fix(tradein/cian): показать, ЧТО пришло вместо состояния ЖК-страницы, и честно закрывать нулевой прогон (#2767)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Successful in 8s
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 3m53s
newbuilding_enrich восемь суток подряд делал 25 попыток, обогащал ноль записей
и каждый раз закрывался статусом 'done'. Отказ происходит на разборе:
initialState в полученной странице нет. Двух объяснений — изменилась разметка
или пришла защитная заглушка — по логу было не различить: ни размера ответа,
ни признаков защиты в нём не было.

Разделяет их одно число. Здоровая ЖК-карточка весит 1.17 МБ и содержит
состояние (verified live 2026-06-15), а страница без состояния — подпись
антибота (#972). Поэтому строка отказа теперь несёт html_len и перечисление
найденных маркеров защиты (_describe_parse_miss). Это диагностика, не диагноз:
функция называет найденное и не называет причину.

Разбор НЕ чинится: пока неизвестно, что приходит, любая правка разбора —
угадывание.

Статус прогона уходит в общий финализатор runs.mark_backfill_finished (#2695),
через который эта задача не проходила: счётчики задачи называются иначе, чем
читает финализатор, поэтому любой прогон закрывался mark_done.
to_backfill_counters() добавляет attempted/enriched/failed к своим счётчикам.
attempted не включает пропущенные уже-обогащённые дома — прогон, которому
нечего делать, отказом не является. Блоки источника задача не считает вовсе,
так что нулевой прогон помечается 'failed' (наш тракт), а не 'banned': вины
площадки здесь не доказано (#2764).

Refs #2767
2026-08-07 12:43:43 +05:00