fix(tradein/domclick): свип ходил на QRATOR без кук и вис на PoW каждым запросом (#3264) #3265
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
ИРД
вторичка
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3265
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/3264-domclick-sweep-cookies"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Закрывает #3264.
Что было
serp.pyне передавал куки сессии вообще — словаcookieв файле не было. Свип приходил к QRATOR с чистым браузером и был обязан решать proof-of-work с нуля на каждый запрос.Прод, прогон 5330 (30.08 03:49–03:55),
status=failed,error='fetch errors — 0 listings':Прокси при этом честно ротировался (
lease id=9 провалил 3 /fetch подряд, узел 9 → 10) — не помогло, узел тут ни при чём. Добор с тем же сайдкаром и тем же пулом в ту же ночь взял 37 карточек из 37 без единого блока. Разница ровно в куках.Почему это стало возможно только сейчас
Свип ходит не на
ekaterinburg.domclick.ru, а на отдельный API-хостbff-search-web.domclick.ru. До правки_cookie_domain(PR #3262) сайдкар положил бы куки на.bff-search-web.domclick.ru, и с сессией площадки они бы не совпали. Теперь оба хоста схлопываются в общий.domclick.ru— тот же снимок, что чинит добор, впервые применим и к свипу.Как прокинуто
Снимок приходит параметром снаружи, а не читается внутри kit: kit не импортирует
app.*(strangler-инвариант #2133).backend/app/services/product_handlers.py—_job_domclick_city_sweepгрузитdomclick_session.load_session(db)и зовёт свип; зарегистрирован под ключомdomclick_city_sweep, переопределяя kit-native.build_registryэто прямо допускает («последнее слово за продуктом»,registry.update(product_handlers)).orchestration/pipeline.py—run_domclick_city_sweep(..., cookies=...)→ в конструктор скрапера.providers/domclick/serp.py—DomClickScraper(cookies=...)→ обаfetcher.fetch()(count-проба и пагинация).Отсутствие сессии не авария:
load_sessionвернулNone→ свип идёт как раньше, без инъекции, факт логируется один раз INFO.Проверено, что override не разъезжается по охвату: wildcard-варианта
domclick_city_sweep_*в kit нет (в отличие от avito/cian/yandex), в проде одно расписание с этим source — переопределение покрывает его целиком.Цена решения и чем она закрыта
Override повторяет вызов kit-джобы целиком, а не оборачивает её, — иначе чтение БД пришлось бы тащить внутрь kit. Значит параметр, добавленный в kit-native джобу, в override молча не появится, и свип по расписанию поедет со старым набором.
Добавлен тест, который зовёт оба джоба с одинаковыми
db/run_id/params/ctxи сравнивает наборы kwargs, допуская расхождение ровно вcookies. Проверен мутацией: с искусственно добавленным в kit-версиюregion_code=66тест краснеет, после отката — зелёный. (Первая редакция теста мутацию не ловила — патчила sweep только в пространстве имёнpipeline, тогда как kit-джоба связывает имя на импорте модуля; исправлено.)Тесты
245 passed, 1 skipped(-k "domclick or parity"), включая все существующие domclick- и parity-тесты.ruff checkчист на всех четырёх файлах.Что НЕ проверено
Реальное поведение QRATOR на свипе — правка ждёт первого прогона по расписанию (04:14 UTC) или ручного запуска после деплоя.
Побочно
Формулировку #2854 надо обновить: свип больше не «кладётся на первой корзине» — по логу 5330 он идёт по корзинам
2→4→5+последовательно, просто каждая падает целиком. Отдельной правки в этом PR нет.