feat(yandex): ingest novostroyki via gate-API newFlat=YES #1715
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#1715
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/yandex-novostroyki-newflat"
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
Closes the yandex novostroyki segment gap. The gate-API sweep previously fetched only
newFlat=NO(vtorichka) and hardcodedlisting_segment="vtorichka". Now runs BOTH passes (newFlat=NO + newFlat=YES) and tags segment per pass.Verified on prod gate-API (home IP, this session)
...&newFlat=YES&roomsTotal=2&page=1...→pager.totalItems=11784, totalPages=25; every entitynewFlat:true, flatType:"NEW_FLAT", dealStatus∈{PRIMARY_SALE,REASSIGNMENT}, building.siteName=ЖК. Same JSON shape as newFlat=NO →_parse_gate_jsonunchanged. We were dropping ~all novostroyki (prod: yandex novostroyki=0).Changes
yandex_realty.py:_build_url(new_flat="NO")param feedsnewFlat; threaded through_fetch_page_json/fetch_around/_parse_gate_json/_entity_to_lot;listing_segment=_segment_for(new_flat)(novostroyki for YES).fetch_around_multi_room(segments=["NO"])loops outermost over segments sharing ONE dedupseendict.scrape_pipeline.py::run_yandex_city_sweep:segmentsparam default["NO","YES"]; watchdog scaled ×len(segments) (was 30 combos×3p≈2190s/#1659 → now ×2 segments; defaults 30×2×2≈2820s). No separate total-sweep deadline exists; per-anchorasyncio.wait_foris the only cap.scheduler.py: pass-throughsegments=params.get("segments")for operator override via default_params.Test plan
pytest tests/test_yandex_realty_serp.py→ 58 passed;test_yandex_city_sweep.py+test_anchor_watchdog.py→ 28 passed; ruff clean_build_urlnewFlat=YES/NO; segment tagging per pass; both-pass run with shared dedupSELECT source,listing_segment,count(*) FROM listings WHERE source='yandex' GROUP BY 2Refs #1658