feat(admin): unified scrape/runs + scraper/health + rotate-ip API (scrapers UI Phase 1) #1818

Merged
lekss361 merged 1 commit from feat/scraper-admin-apis into main 2026-06-20 06:40:36 +00:00
Owner

Phase 1 backend для единой scrapers-страницы (frontend в PR feat/scrapers-unified-page).

API

  1. GET /api/v1/admin/scrape/runs?source=&status=&limit=&offset={total, rows:[run_id,source,run_type,status,params,counters,total_seen,new_count,started_at,finished_at,heartbeat_at,error_text]}. Unified (старые per-source /runs не тронуты). scrape_runs.list_all().
  2. GET /api/v1/admin/scraper/health{fetch_mode, browser:{reachable,browsers{}}, providers:[{source,proxy_host,proxy_port,rotate_supported,current_ip}]}. browser /health (5с) + параллельный ipify-пробинг per-source (8с).
  3. POST /api/v1/admin/scraper/{source}/rotate-ip{ok,new_ip,reason}. changeip GET; no rotate_url → ok=false.

Тесты

10 passed (новый файл) + 43 регресс (city-sweep/alert/ssrf). ruff clean.

На ревью

  • error AS error_text (колонка scrape_runs.error).
  • health ip-пробинг через прокси (timeout 8с, null на фейле) — не блокирует >10с.
  • SSRF: rotate-ip дёргает changeip из settings (не user-input host) — проверить.
Phase 1 backend для единой scrapers-страницы (frontend в PR feat/scrapers-unified-page). ## API 1. `GET /api/v1/admin/scrape/runs?source=&status=&limit=&offset=` → `{total, rows:[run_id,source,run_type,status,params,counters,total_seen,new_count,started_at,finished_at,heartbeat_at,error_text]}`. Unified (старые per-source /runs не тронуты). `scrape_runs.list_all()`. 2. `GET /api/v1/admin/scraper/health` → `{fetch_mode, browser:{reachable,browsers{}}, providers:[{source,proxy_host,proxy_port,rotate_supported,current_ip}]}`. browser /health (5с) + параллельный ipify-пробинг per-source (8с). 3. `POST /api/v1/admin/scraper/{source}/rotate-ip` → `{ok,new_ip,reason}`. changeip GET; no rotate_url → ok=false. ## Тесты 10 passed (новый файл) + 43 регресс (city-sweep/alert/ssrf). ruff clean. ## На ревью - `error AS error_text` (колонка `scrape_runs.error`). - health ip-пробинг через прокси (timeout 8с, null на фейле) — не блокирует >10с. - SSRF: rotate-ip дёргает changeip из settings (не user-input host) — проверить.
lekss361 added 1 commit 2026-06-20 06:38:05 +00:00
feat(admin): unified scrape/runs + scraper/health + rotate-ip API для единой scrapers-страницы
All checks were successful
CI / changes (pull_request) Successful in 5s
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
2f88a71915
lekss361 merged commit 3fa35be26e into main 2026-06-20 06:40:36 +00:00
lekss361 deleted branch feat/scraper-admin-apis 2026-06-20 06:40:36 +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#1818
No description provided.