feat(scrapers/ui): backfill+full-load триггеры, source-фильтр, pacing-слайдер, coverage-таблица #1830

Merged
lekss361 merged 1 commit from feat/scrapers-ui-completeness into main 2026-06-20 12:32:05 +00:00
Owner

Фронт для дыр из аудита /scrapers. Бэкенд для pacing/coverage — PR #1829 (мержить и задеплоить ДО этого PR; до деплоя секции pacing/coverage показывают «API недоступен» — graceful).

Часть 1 — недостающие триггеры (бэк уже в проде, был только UI-gap)

  • Cian-таб «Backfill»: cian-backfill-history, cian-price-history, cian-full-load (формы с параметрами + ResultPanel).
  • Cian Cookies: кнопка auto-login (camoufox, опц. override email/pass) рядом с ручным upload.
  • Yandex-таб «Backfill»: yandex-address-backfill, yandex-full-load, yandex-newbuilding-sweep.
  • Система: house-imv-backfill + geocode-missing-listings (POST-триггер + GET-статус с polling 60s).
    Все sweep/load → фоновый run → появляется в общей истории (cancel там уже есть, не дублировал).

Часть 2 — source-фильтр в RunsTable

<select> провайдер (все/avito/cian/yandex) → прокидывается в queryKey + ?source=. a11y label+aria.

Часть 3 — pacing-слайдер (PacingControl.tsx, новый)

GET /scraper/pacing → на провайдера number-input + range (0–60с, шаг 0.5) + «Применить» (PUT /scraper/pacing/{source}); подсказка env_default_s («сброс при рестарте»). Graceful: ошибка/404 → «pacing API недоступен», без краша.

Часть 4 — coverage-таблица (DataQualitySection.tsx, новый)

GET /scraper/data-quality → таблица source × поле (% fill, <50% красным), блок houses-enrichment. a11y th scope. Graceful: ошибка/404 → «coverage API недоступен».

Файлы

  • app/scrapers/page.tsx, components/scrapers/RunsTable.tsx, components/scrapers/PacingControl.tsx (new), components/scrapers/DataQualitySection.tsx (new)

Проверка

lint/prettier (pre-commit) pass. tsc в worktree без node_modules не гоняется полноценно (baseline); затронутые типы согласованы с контрактами #1829, без any.

Контракты pacing/coverage заданы идентично в #1829 — сверено дословно. Cross-ref аудит /scrapers.

Фронт для дыр из аудита `/scrapers`. Бэкенд для pacing/coverage — **PR #1829** (мержить и задеплоить ДО этого PR; до деплоя секции pacing/coverage показывают «API недоступен» — graceful). ## Часть 1 — недостающие триггеры (бэк уже в проде, был только UI-gap) - **Cian-таб «Backfill»**: `cian-backfill-history`, `cian-price-history`, `cian-full-load` (формы с параметрами + ResultPanel). - **Cian Cookies**: кнопка `auto-login` (camoufox, опц. override email/pass) рядом с ручным upload. - **Yandex-таб «Backfill»**: `yandex-address-backfill`, `yandex-full-load`, `yandex-newbuilding-sweep`. - **Система**: `house-imv-backfill` + `geocode-missing-listings` (POST-триггер + GET-статус с polling 60s). Все sweep/load → фоновый run → появляется в общей истории (cancel там уже есть, не дублировал). ## Часть 2 — source-фильтр в RunsTable `<select>` провайдер (все/avito/cian/yandex) → прокидывается в queryKey + `?source=`. a11y label+aria. ## Часть 3 — pacing-слайдер (`PacingControl.tsx`, новый) `GET /scraper/pacing` → на провайдера number-input + range (0–60с, шаг 0.5) + «Применить» (`PUT /scraper/pacing/{source}`); подсказка env_default_s («сброс при рестарте»). Graceful: ошибка/404 → «pacing API недоступен», без краша. ## Часть 4 — coverage-таблица (`DataQualitySection.tsx`, новый) `GET /scraper/data-quality` → таблица source × поле (% fill, `<50%` красным), блок houses-enrichment. a11y `th scope`. Graceful: ошибка/404 → «coverage API недоступен». ## Файлы - `app/scrapers/page.tsx`, `components/scrapers/RunsTable.tsx`, `components/scrapers/PacingControl.tsx` (new), `components/scrapers/DataQualitySection.tsx` (new) ## Проверка lint/prettier (pre-commit) pass. tsc в worktree без node_modules не гоняется полноценно (baseline); затронутые типы согласованы с контрактами #1829, без any. Контракты pacing/coverage заданы идентично в #1829 — сверено дословно. Cross-ref аудит `/scrapers`.
lekss361 added 1 commit 2026-06-20 09:51:54 +00:00
feat(scrapers/ui): backfill+full-load триггеры, source-фильтр runs, pacing-слайдер, coverage-таблица
All checks were successful
CI / backend-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 6s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
00cd30b765
Часть 1 — недостающие триггеры:
- CianBackfillSection: cian-backfill-history, cian-price-history (T8a), cian-full-load
- YandexBackfillSection: yandex-address-backfill (T10), yandex-full-load, yandex-newbuilding-sweep
- CianAutoLoginButton: POST /scrape/cian/auto-login в секцию Cookies
- HouseImvBackfillSection: house-imv-backfill (T7) в системный раздел
- GeocodeSection: geocode-missing-listings trigger + status polling

Часть 2 — source-фильтр в RunsTable:
- dropdown «Все / Avito / Cian / Yandex» + aria-label
- фильтр прокидывается в queryKey и query-param ?source=

Часть 3 — PacingControl:
- GET /api/v1/admin/scraper/pacing → PacingSection
- number-input + range slider (0–60с, шаг 0.5) + PUT /pacing/{source}
- env_default_s подсказка; graceful-degradation на ошибку/404

Часть 4 — DataQualitySection:
- GET /api/v1/admin/scraper/data-quality → таблица source × поле (% fill)
- <50% → красный акцент; th scope="col"/"row" a11y
- блок houses enrichment метрик; graceful-degradation на ошибку/404
lekss361 merged commit 7b69e5a675 into main 2026-06-20 12:32:05 +00:00
lekss361 deleted branch feat/scrapers-ui-completeness 2026-06-20 12:32:05 +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#1830
No description provided.