fix(tradein/domclick): единый список QRATOR-маркеров serp+detail (#2636) #2645

Merged
bot-backend merged 1 commit from fix/domclick-qrator-markers into main 2026-08-05 07:06:42 +00:00
Collaborator

Summary

Шаг 1 плана возврата domclick_detail_backfill (#2636). Диагностика (коммент в issue) показала: 431 «failed» — в значимой части нераспознанные QRATOR-блоки (класс #2625). Detail-слой проверял 4 из 6 маркеров Layer A — блок-страницы с bot_mitigation / система защиты / 403 | домклик уходили в DomClickParseError (failed) вместо DomClickBlockedError: block-breaker не срабатывал, батч прожигал до 100 запросов по заблокированному ресурсу — ровно удары по репутации выделенного узла, от которых защищалась миграция 206.

  • Канонический DOMCLICK_BLOCK_MARKERS (объединение: 6 маркеров serp + datadome) в domclick_exceptions.py; оба слоя импортируют — списки больше не разойдутся.
  • При __SSR_STATE__ not found без известного маркера — logger.warning с первыми 300 символами HTML: будущий дрейф маркеров виден, а не молчит.
  • Джоба НЕ включается — возврат отдельной миграцией после ручного тестового прогона (шаги 2-3 плана в issue).

Test plan

  • Red/green: 3 параметризованных QRATOR-текста (регистр варьирован) на нетронутом detail.py → DomClickParseError (красный); с фиксом → DomClickBlockedError (зелёный)
  • Честный парс-фейл (нет SSR, нет маркеров) → по-прежнему ParseError (существующий тест)
  • tests/scrapers/ 76 passed, ruff чисто
  • Шаг 2: ручной прогон 10–20 листингов — blocked растёт вместо failed → потом enabled=true

Примечание: scripts/domclick_local_runner.py имеет свой inlined 4-маркерный список (самодостаточный операторский скрипт без scraper_kit-импортов) — осознанно не тронут, кандидат на фолд при следующем касании.

Refs #2636

## Summary Шаг 1 плана возврата `domclick_detail_backfill` (#2636). Диагностика (коммент в issue) показала: **431 «failed» — в значимой части нераспознанные QRATOR-блоки** (класс #2625). Detail-слой проверял 4 из 6 маркеров Layer A — блок-страницы с `bot_mitigation` / `система защиты` / `403 | домклик` уходили в `DomClickParseError` (failed) вместо `DomClickBlockedError`: block-breaker не срабатывал, батч прожигал до 100 запросов по заблокированному ресурсу — ровно удары по репутации выделенного узла, от которых защищалась миграция 206. - Канонический `DOMCLICK_BLOCK_MARKERS` (объединение: 6 маркеров serp + datadome) в `domclick_exceptions.py`; оба слоя импортируют — списки больше не разойдутся. - При `__SSR_STATE__ not found` без известного маркера — `logger.warning` с первыми 300 символами HTML: будущий дрейф маркеров виден, а не молчит. - Джоба НЕ включается — возврат отдельной миграцией после ручного тестового прогона (шаги 2-3 плана в issue). ## Test plan - [x] **Red/green**: 3 параметризованных QRATOR-текста (регистр варьирован) на нетронутом detail.py → `DomClickParseError` (красный); с фиксом → `DomClickBlockedError` (зелёный) - [x] Честный парс-фейл (нет SSR, нет маркеров) → по-прежнему ParseError (существующий тест) - [x] `tests/scrapers/` 76 passed, ruff чисто - [ ] Шаг 2: ручной прогон 10–20 листингов — blocked растёт вместо failed → потом `enabled=true` Примечание: `scripts/domclick_local_runner.py` имеет свой inlined 4-маркерный список (самодостаточный операторский скрипт без scraper_kit-импортов) — осознанно не тронут, кандидат на фолд при следующем касании. Refs #2636
bot-backend added 1 commit 2026-08-05 07:03:17 +00:00
fix(tradein/domclick): единый список QRATOR-маркеров для serp+detail (#2636)
All checks were successful
CI / changes (pull_request) Successful in 8s
CI Trade-In / 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 2m43s
97618f5ddd
Detail-слой проверял 4 из 6 маркеров Layer A — блоки с bot_mitigation /
система защиты / 403 | домклик классифицировались как DomClickParseError
(failed) вместо DomClickBlockedError (blocked): block-breaker не срабатывал
и батч прожигался по заблокированному ресурсу (491 попыток / 0 обогащений,
паттерн B из диагностики). Оба слоя теперь импортируют канонический
DOMCLICK_BLOCK_MARKERS из domclick_exceptions (объединение 6+datadome).
При отсутствии __SSR_STATE__ без известного маркера — warning с первыми
300 символами HTML, чтобы будущий дрейф маркеров был виден, а не молчал.

Возврат джобы (scrape_schedules) — отдельным шагом после ручного прогона.

Refs #2636
bot-backend merged commit 1600a6be18 into main 2026-08-05 07:06:42 +00:00
bot-backend deleted branch fix/domclick-qrator-markers 2026-08-05 07:06:42 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2645
No description provided.