chore(tradein/proxy-pool): добавить domclick в provider_affinity CHECK (residential ASocks для #2000) #2426

Merged
lekss361 merged 1 commit from chore/tradein-scrape-proxies-domclick-affinity into main 2026-07-04 14:25:41 +00:00
Owner

Summary

Расширяет scrape_proxies.provider_affinity CHECK-constraint на 'domclick' — нужно, чтобы выделить дедицированный residential ASocks-прокси (id=1, оплачен до 2026-07-28, автопродление ВКЛ) эксклюзивно под DomClick card-страницу.

Сейчас DomClick (scraper_kit/providers/domclick/serp.py:327, build_browser_fetcher(config, "domclick")acquire("domclick")) падает в общий 'any'-пул наравне с mobile-carrier прокси, которые QRATOR банит на card/offer-card хостах (#2000). Residential IP (тип id=1) по живому аудиту #2000 проходит QRATOR устойчиво — mobile-carrier не проходит.

Изменения

  • data/sql/173_scrape_proxies_add_domclick_affinity.sqlDROP CONSTRAINT IF EXISTS + ADD CONSTRAINT (обёрнут в DO $$ ... EXCEPTION WHEN duplicate_object THEN NULL; END $$; — idempotent re-run safety, в кодовой базе не было прецедента ADD CONSTRAINT-идемпотентности, IF NOT EXISTS для constraint в Postgres невалиден). Данные НЕ трогает — UPDATE ... WHERE id=1 применяется отдельно после деплоя этой миграции.
  • app/api/v1/admin.py:2468_PROXY_AFFINITIES whitelist +"domclick" (Pydantic-валидатор для POST /admin/proxies/bulk, зеркалит DB CHECK).

Test plan

  • Full suite: 2265 passed, 6 skipped, 1 failed (#2208 flake, unrelated).
  • tests/test_admin_proxies.py: 11 passed (нет теста, enumerating весь whitelist — обновлять нечего).
  • ruff check clean.
  • Constraint name подтверждён на проде через pg_constraint (не гадание по тексту ошибки): scrape_proxies_provider_affinity_check.

Refs #2000

## Summary Расширяет `scrape_proxies.provider_affinity` CHECK-constraint на `'domclick'` — нужно, чтобы выделить дедицированный residential ASocks-прокси (`id=1`, оплачен до 2026-07-28, автопродление ВКЛ) эксклюзивно под DomClick card-страницу. Сейчас DomClick (`scraper_kit/providers/domclick/serp.py:327`, `build_browser_fetcher(config, "domclick")` → `acquire("domclick")`) падает в общий `'any'`-пул наравне с mobile-carrier прокси, которые QRATOR банит на card/offer-card хостах (#2000). Residential IP (тип `id=1`) по живому аудиту #2000 проходит QRATOR устойчиво — mobile-carrier не проходит. ## Изменения - `data/sql/173_scrape_proxies_add_domclick_affinity.sql` — `DROP CONSTRAINT IF EXISTS` + `ADD CONSTRAINT` (обёрнут в `DO $$ ... EXCEPTION WHEN duplicate_object THEN NULL; END $$;` — idempotent re-run safety, в кодовой базе не было прецедента `ADD CONSTRAINT`-идемпотентности, `IF NOT EXISTS` для constraint в Postgres невалиден). Данные НЕ трогает — `UPDATE ... WHERE id=1` применяется отдельно после деплоя этой миграции. - `app/api/v1/admin.py:2468` — `_PROXY_AFFINITIES` whitelist +`"domclick"` (Pydantic-валидатор для `POST /admin/proxies/bulk`, зеркалит DB CHECK). ## Test plan - [x] Full suite: 2265 passed, 6 skipped, 1 failed (#2208 flake, unrelated). - [x] `tests/test_admin_proxies.py`: 11 passed (нет теста, enumerating весь whitelist — обновлять нечего). - [x] `ruff check` clean. - [x] Constraint name подтверждён на проде через `pg_constraint` (не гадание по тексту ошибки): `scrape_proxies_provider_affinity_check`. Refs #2000
lekss361 added 1 commit 2026-07-04 14:23:21 +00:00
chore(tradein/proxy-pool): добавить domclick в provider_affinity CHECK (residential ASocks для #2000)
All checks were successful
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 / changes (pull_request) Successful in 9s
CI Trade-In / changes (pull_request) Successful in 9s
CI Trade-In / backend-tests (pull_request) Successful in 49s
b238d3ef50
lekss361 merged commit b102c334d8 into main 2026-07-04 14:25:41 +00:00
lekss361 deleted branch chore/tradein-scrape-proxies-domclick-affinity 2026-07-04 14:25:41 +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#2426
No description provided.