feat(scrapers): extract + download DOM.РФ flat plan images (#2440) #2441
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#2441
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/domrf-flat-plan-image-harvest"
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?
Summary
domrf_kn_flat_plansбыло пусто (0 строк) — блокер для #299 (Potrace production-wiring) и #300 (CubiCasa), обе заявляли готовый корпус, которого на деле не было.parse_catalog_flat(domrf_catalog.py) теперь извлекаетplan_image_url: primary —__NEXT_DATA__pageProps JSON BFS, fallback — голый<img>по class-hint/соседству с текстом «Планировка»._TextCollectorполучает аддитивныйself.images-сбор строго ДО void-tag early-return — существующий stack/buffer не тронут, регрессия по #1608 (та самая void-tag desync баг) исключена отдельным тестом.download_plan_image_stub(былNotImplementedError) заменён на рабочую async-загрузку через уже существующийBrowserSession.download_binary(те же cookies/TLS/throttle), Pillow для width/height, идемпотентна.Известное ограничение (не блокер, задокументировано)
__NEXT_DATA__pageProps key — best-effort по паттерну, не подтверждён на живой HTML (WAF заблокировал фетч с IP агента). Fallback + absence-handling делают неверную догадку не-фатальной (вернётNone, не упадёт), но может молча давать 0 планировок пока не провалидировано на реальной странице.scrape_one_flat/scrape_catalog_batch(domrf_catalog.py) сейчас нигде не вызываются из Celery — отдельная предпосылка issue #2440 (изначально предполагалось, что уже вызываются — прод-проверка показала, что нет). Follow-up issue заведу отдельно: Celery-wiring +catalog_url_hashpropagation (elemId уже читается в domrf_kn.py:430, но не прокидывается в апсерт) + валидация pageProps-ключа на живой странице.Test plan
test_domrf_catalog_parse.py+test_domrf_catalog_object.py(обязательные регрессии) — зелёныеtest_domrf_flat_plan_url.py,test_flat_plan_download.py) — реалистичные фикстуры (реальный Next.js SSR JSON, реальный PNG round-trip через Pillow)::type-скан чист, секретов в диффе нетRefs #2440, #299, #300