feat(proxy-pool): scrape_proxies table + admin bulk-load/list endpoints (#2161) #2167

Merged
lekss361 merged 1 commit from feat/proxy-pool-table into main 2026-07-02 16:31:22 +00:00
Owner

Закрывает #2161 (Epic #2160, P1). Аддитивно — таблица + ручки загрузки, НЕ подключено к боевому сбору (это P3/P4).

Что

  • Миграция 157_scrape_proxies.sql — таблица (url UNIQUE, kind/provider_affinity CHECK-whitelist, health/lease/meta), индексы idx_scrape_proxies_pick (provider_affinity, enabled, leased_by) + idx_scrape_proxies_health. Idempotent, BEGIN/COMMIT, секретов нет.
  • Admin-ручки (app/api/v1/admin.py, auth = Caddy basic_auth на /admin/*):
    • POST /api/v1/admin/proxies/bulk — UPSERT по url (ON CONFLICT DO UPDATE, inserted/updated через RETURNING (xmax=0)), валидация affinity/kind → 422
    • GET /api/v1/admin/proxies?provider=&enabled= — список, пароли замаскированы (user:***@host)
    • PATCH /api/v1/admin/proxies/{id} — enable/disable, 404

Seed

Пропущен намеренно — перенос env-прокси требовал бы секретов в SQL. Таблица пустая, прокси грузятся через POST /proxies/bulk.

Verify

  • ruff clean; 11 новых тестов passed; регресс test_scraper_admin_apis+test_admin_ssrf 32/32 passed
  • psycopg v3 параметризация (без :x::type)
Закрывает #2161 (Epic #2160, P1). **Аддитивно** — таблица + ручки загрузки, НЕ подключено к боевому сбору (это P3/P4). ## Что - Миграция `157_scrape_proxies.sql` — таблица (url UNIQUE, kind/provider_affinity CHECK-whitelist, health/lease/meta), индексы `idx_scrape_proxies_pick (provider_affinity, enabled, leased_by)` + `idx_scrape_proxies_health`. Idempotent, BEGIN/COMMIT, секретов нет. - Admin-ручки (`app/api/v1/admin.py`, auth = Caddy basic_auth на `/admin/*`): - `POST /api/v1/admin/proxies/bulk` — UPSERT по url (`ON CONFLICT DO UPDATE`, inserted/updated через `RETURNING (xmax=0)`), валидация affinity/kind → 422 - `GET /api/v1/admin/proxies?provider=&enabled=` — список, **пароли замаскированы** (`user:***@host`) - `PATCH /api/v1/admin/proxies/{id}` — enable/disable, 404 ## Seed Пропущен намеренно — перенос env-прокси требовал бы секретов в SQL. Таблица пустая, прокси грузятся через `POST /proxies/bulk`. ## Verify - ruff clean; 11 новых тестов passed; регресс `test_scraper_admin_apis`+`test_admin_ssrf` 32/32 passed - psycopg v3 параметризация (без `:x::type`)
lekss361 added 1 commit 2026-07-02 16:31:15 +00:00
feat(proxy-pool): scrape_proxies table + admin bulk-load/list endpoints (#2161)
All checks were successful
CI / backend-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 8s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
412367ef16
lekss361 merged commit 90e4a741f7 into main 2026-07-02 16:31:22 +00:00
lekss361 deleted branch feat/proxy-pool-table 2026-07-02 16:31:22 +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#2167
No description provided.