gendesign/tradein-mvp/backend/app
bot-backend 663f426d4c
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / changes (pull_request) Successful in 11s
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 4m55s
fix(tradein/domclick): отказ с кодом 401 классифицировался как причина неизвестной природы (#3196)
Замер на проде 2026-08-29: страница отказа ДомКлика при HTTP 401 — РОВНО
26 624 байта, байт в байт та же, что снималась 28.08 под кодом 403. Ни PoW,
ни QRATOR, ни капчи. Приходит одинаково и с валидной сохранённой сессией
(16 куков из domclick_session), и полностью анонимно — значит это не
«сессия отвергнута», а WAF-отказ с подменённым кодом ответа.

В таблице классификатора 401 не было (403/429 → platform, 5xx → infra),
поэтому все три пробы подряд дали ban_kind='unknown' — ровно то, что #3196
и должен был убрать. Механика диагноза при этом рабочая: статус доезжает от
page.goto до исключения целым, шов blocked.status = status подтверждён живым
401 на проде.

Правка доменная — в _ban_kind_of_block домкликового таска, а не в общей
scraper_kit.browser_fetcher.ban_kind_from_status: у других поставщиков 401
обычно значит «наша сессия протухла», это наша сторона, и метка 'platform'
там зря запустила бы ротацию IP (#2611).
2026-08-29 12:19:18 +03:00
..
api fix(tradein/scrapers): хранилище авторизованной сессии Яндекс.Недвижимости (#3195) 2026-08-28 19:02:05 +00:00
core fix(tradein/scrapers): обрыв по серии блоков рвал каждый прогон, включая здоровые (#3188) 2026-08-28 18:22:25 +00:00
observability feat(observability): /metrics в обоих бэкендах — счётчики, задержка, дашборд 2026-08-26 11:30:18 +03:00
schemas feat(tradein): позиция квартиры внутри когорты аналогов — перцентиль (#2899) (#2926) 2026-08-19 10:08:18 +00:00
services Merge pull request 'fix(tradein/scrapers): ABORT-лог называл серию блоков, хотя рвал прогон по доле' (#3201) from fix/3184-abort-log-names-wrong-criterion into main 2026-08-28 20:27:36 +00:00
tasks fix(tradein/domclick): отказ с кодом 401 классифицировался как причина неизвестной природы (#3196) 2026-08-29 12:19:18 +03:00
__init__.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
main.py feat(observability): /metrics в обоих бэкендах — счётчики, задержка, дашборд 2026-08-26 11:30:18 +03:00
scheduler_main.py merge(tradein/payments): влить main в feat/tradein-payments-perimeter-hardening 2026-08-15 22:32:28 +03:00
tgbot_main.py fix(tradein/payments): тело нотификации не течёт в мониторинг и аудит, повторы банка не отбиваются лимитом 2026-08-07 16:17:59 +03:00