feat(macro): construction price index (СМР) via open Rosstat xlsx (#946) #1175
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#1175
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/macro-smr-946"
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
Lands the construction price index (СМР) — the last open piece of #946 — from the open Rosstat xlsx, NOT the reCAPTCHA-gated fedstat
dataGrid.do.rosstat.gov.ru/storage/mediabank/Invest_ind_stroitel_MM-YYYY.xlsx(«Индексы цен производителей на строительную продукцию по РФ»). Parses the monthly «к предыдущему месяцу» section →macro_indicator(indicator_type='construction_price_index', region='rf', monthly, %). Reachable from dev (verify=False, gov-CA — cbr_macro/ekburg_permits precedent).dataGrid.dopath is deliberately avoided (the open xlsx needs no captcha). EMISS id=31108 documented as a prod-only SDMX alternative (not wired)._fetch_construction_latestderives the URL fromdate.today()with bounded look-back (current month back to 6; first HTTP 200 wins; year-boundary handled; exhaustion raises; 404 breaks fast → no hang).rosstat_macro_syncwith per-source try/except (a СМР failure can't break demography/income) + SAVEPOINT-per-row. None-not-0 on blank/future months.Test plan
pytest tests/scrapers/test_rosstat_emiss.py tests/workers/test_rosstat_macro_sync.py→ 33 passed (incl. look-back resolution, year-boundary, exhaustion, blank-month skip, annual-section exclusion, graceful empty/garbage/missing-sheet, per-source isolation)ruffclean; no new dependency (pyproject/uv.lock untouched)"dataGrid" not in url_templatepython -m app.services.scrapers.rosstat_emissconfirms the look-back lands a real current file.Note
No construction-cost channel in
macro_coefficientyet (it's demand-side only) → this series is ingested/available for future cost-side use + display, not yet wired to a forecast coefficient (expected for #946 ingest scope).Refs #946