fix(tradein/scraper): диагноз бана перестаёт назначаться по умолчанию (#2764) #2765

Merged
bot-backend merged 1 commit from fix/2764-ban-kind-no-default into main 2026-08-06 23:18:00 +00:00

1 commit

Author SHA1 Message Date
47d0afb3dd fix(tradein/scraper): диагноз бана перестаёт назначаться по умолчанию (#2764)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 7s
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 / 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 Trade-In / backend-tests (pull_request) Successful in 3m42s
#2711 развёл «наш сбой» и «блокировка площадкой» полем ban_kind, но дефолт в
сигнатуре mark_banned остался 'platform', а диагноз передавали 3 вызывающих из
13. На проде обе строки, помеченные уже в рантайме (3306 avito 12:42, 3313
domclick 15:20), получили 'platform' по умолчанию из общего финализатора
backfill-задач: метка выглядела доказательством, не будучи им.

- дефолт mark_banned → 'unknown' (обе копии runs-модуля): пробел становится
  измеримым в данных, а 'platform'/'infra' начинают означать доказанное;
- ban_kind_of_exception: `else PLATFORM` был тем же назначенным диагнозом
  уровнем ниже — теперь тип, который ничего не доказывает, даёт 'unknown';
- fetch_detail в browser-режиме поднимал AvitoBlockedError на ЛЮБОЙ отказ
  сайдкара (503 «browser unavailable», ConnectError, пустой пул) — то есть
  диагноз врал даже там, где передавался. Теперь — AvitoSidecarUnavailableError,
  подтип AvitoRateLimitedError: поведение прогона и чекпоинт не меняются;
- avito_detail_backfill доносит диагнозы своих блоков до финализатора; блоки
  разошлись — 'unknown'. У domclick тип неразделим (один DomClickBlockedError
  и на QRATOR, и на сбое транспорта) — ограничение названо в коде, диагноз
  оттуда не идёт;
- миграция 234: 'unknown' в CHECK (иначе запись падала бы), COMMENT, и перевод
  двух строк, помеченных дефолтом ПОСЛЕ применения 218. Ретро-классификация
  218 по тексту не тронута.

Тесты падают на старом коде: 11 проверок (финализатор, browser-ветка detail,
классификатор, дефолт обеих копий, проводка backfill'а). Живой тест на
CHECK-констрейнт — в skip_allowlist (мок-лэйн БД не имеет).

Refs #2764
2026-08-07 04:11:59 +05:00