fix(tradein/admin): развести исходы проверки кук — бан не равен «плохим кукам» #2829

Merged
lekss361 merged 1 commit from fix/tradein-cookerr into main 2026-08-11 06:08:17 +00:00

1 commit

Author SHA1 Message Date
bot-backend
ac97c87f25 fix(tradein/admin): развести исходы проверки кук — бан не равен «плохим кукам»
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 9s
CI / frontend-tests (pull_request) Has been skipped
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 / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 4m12s
verify_session возвращает четыре разных исхода (бан 403 / источник
недоступен / смена вёрстки / реально протухшие куки) — это сделано
намеренно, с sentinel-объектами и подробными докстрингами. Но эндпоинты
загрузки проверяли только `if state is None`, и три sentinel'а
проваливались в одну ветку с текстом «Authenticated state missing userId».

На проде 2026-08-10 это стоило часа: реальный бан по IP показывался как
«плохие куки», и заведомо валидные куки перезаливались несколько раз.

- бан 403 → 503, текст указывает чинить egress (SCRAPER_PROXY_URL и баны
  в scrape_proxy_source_bans), а не перезаливать куки
- источник недоступен → 503, повторить позже, куки не трогать
- смена вёрстки → 500, нужен фикс парсера, перезалив не поможет
- 401/isAuthenticated=false → 401, куки перезалить
- успех без userId → 400 с точным описанием случая

Sentinel'ы сравниваются через `is`, как оговорено в их докстрингах.
Тексты по-русски: их читает человек в момент инцидента.
2026-08-11 08:09:21 +03:00