fix(tradein/domclick): обрыв «пул пуст» и save-False больше не теряют попытку — attempted == сумма исходов #3335

Merged
bot-backend merged 1 commit from fix/3332-domclick-counter-identity into main 2026-09-05 17:36:55 +00:00
Collaborator

Closes #3332 (отпочковано из #3319). Прод-факт: 5 прогонов с diff=1.

Уточнение к issue: файл живёт в tradein-mvp/backend/app/tasks/domclick_detail_backfill.py (не в packages/scraper-kit) — номера строк совпали.

Разбор всех точек выхода из цикла попыток

Воркер составил полную таблицу (9 точек): 7 корректны (break до attempted += 1 или с начисленным исходом), 2 теряли попытку:

  • L473-482 «пул пуст» (дефект из issue) → failed += 1; причина не размывается — no_proxy_stop=1 и mark_failed("пул прокси пуст…") остаются, тест проверяет;
  • L448 save-False (второй дефект того же класса, найден при разборе) → failed += 1 + warning.

Общей точки выхода нет (break-и в разных except-ветках); сведение остатка в failed пост-циклом было бы тождеством по построению и обессмыслило бы контроль — поэтому две точечные правки.

Счётчик — существующий failed: blocked был бы ложью (запрос к площадке не уходил — комментарий #3283 прямо это говорит), gone/skipped у провайдера нет.

Тесты

test_3332_domclick_counter_identity.py: 3 passed. Фальсификация (git apply -R только исходника):

AssertionError: тождество нарушено: attempted=3, сумма исходов=2 … потеряно 1 попыток без исхода
AssertionError: тождество нарушено: attempted=2, сумма исходов=0 … потеряно 2

— diff=1 ровно как на проде. Третий тест (контроль двойного начисления) зелёный на обеих версиях, как и должен. Соседний test_3196_domclick_ban_kind.py — 18 passed вместе с новым.

Прод-приёмка после деплоя

Следующие прогоны domclick_detail_backfill: attempted − (enriched+failed+blocked) = 0 (у старых прогонов diff остаётся — это метка эры).

Closes #3332 (отпочковано из #3319). Прод-факт: 5 прогонов с diff=1. Уточнение к issue: файл живёт в `tradein-mvp/backend/app/tasks/domclick_detail_backfill.py` (не в packages/scraper-kit) — номера строк совпали. ## Разбор всех точек выхода из цикла попыток Воркер составил полную таблицу (9 точек): 7 корректны (break до `attempted += 1` или с начисленным исходом), 2 теряли попытку: - **L473-482 «пул пуст»** (дефект из issue) → `failed += 1`; причина не размывается — `no_proxy_stop=1` и `mark_failed("пул прокси пуст…")` остаются, тест проверяет; - **L448 save-False** (второй дефект того же класса, найден при разборе) → `failed += 1` + warning. Общей точки выхода нет (break-и в разных except-ветках); сведение остатка в failed пост-циклом было бы тождеством по построению и обессмыслило бы контроль — поэтому две точечные правки. Счётчик — существующий `failed`: `blocked` был бы ложью (запрос к площадке не уходил — комментарий #3283 прямо это говорит), `gone/skipped` у провайдера нет. ## Тесты `test_3332_domclick_counter_identity.py`: 3 passed. Фальсификация (`git apply -R` только исходника): ``` AssertionError: тождество нарушено: attempted=3, сумма исходов=2 … потеряно 1 попыток без исхода AssertionError: тождество нарушено: attempted=2, сумма исходов=0 … потеряно 2 ``` — diff=1 ровно как на проде. Третий тест (контроль двойного начисления) зелёный на обеих версиях, как и должен. Соседний `test_3196_domclick_ban_kind.py` — 18 passed вместе с новым. ## Прод-приёмка после деплоя Следующие прогоны domclick_detail_backfill: `attempted − (enriched+failed+blocked) = 0` (у старых прогонов diff остаётся — это метка эры).
bot-backend added 1 commit 2026-09-02 12:36:45 +00:00
fix(domclick): каждая попытка добора получает исход (#3332)
All checks were successful
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 / openapi-codegen-check (pull_request) Has been skipped
CI / changes (pull_request) Successful in 12s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 5m15s
e2e7e17f95
Обрыв «пул прокси пуст» уходил из цикла между attempted++ и записью исхода,
поэтому тождество attempted = enriched + failed + blocked ломалось ровно на 1
(прод: 5 прогонов с diff=1). Исход честно failed, не blocked: к площадке не
ходили, отказала наша инфраструктура — тот же разряд, что у транспортных сбоев
(#3283); причина прогона по-прежнему в no_proxy_stop=1 + mark_failed.

Та же дыра закрыта у save_detail_enrichment(...) is False: карточка разобрана,
но строки уже нет — попытка была, исхода не было.

Closes #3332
bot-backend merged commit 126608e1fc into main 2026-09-05 17:36:55 +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#3335
No description provided.