feat(scrapers/ui): backfill+full-load триггеры, source-фильтр, pacing-слайдер, coverage-таблица #1830
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#1830
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/scrapers-ui-completeness"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Фронт для дыр из аудита
/scrapers. Бэкенд для pacing/coverage — PR #1829 (мержить и задеплоить ДО этого PR; до деплоя секции pacing/coverage показывают «API недоступен» — graceful).Часть 1 — недостающие триггеры (бэк уже в проде, был только UI-gap)
cian-backfill-history,cian-price-history,cian-full-load(формы с параметрами + ResultPanel).auto-login(camoufox, опц. override email/pass) рядом с ручным upload.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. a11yth 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.Часть 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