feat(macro): ЕМИСС income_per_capita → macro_indicator (#946 pt2) #1144
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#1144
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/emiss-macro-indicators-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?
Что
#946 part 2: ЕМИСС/fedstat-индикатор «Среднедушевые денежные доходы населения» (fedstat
id=57039, OKATO 65 Свердл, квартальный, ₽) вmacro_indicator(source='emiss'). Это высокоценный индикатор для affordability-слоя прогноза.Как (ключевой момент про reachability)
ЕМИСС блокирует dev-IP WAF'ом, но доступен с прод-IP. Поэтому:
emiss_income_57039.xml).data.do?id=57039&format=sdmxизgendesign-worker-1→ 200 + SDMX, парсер извлёк 9 Свердл-квартальных строк (2024-Q1…2026-Q1).65000000000(фикстура содержит РФ/ЦФО/Адыгею для теста исключения).Содержимое
rosstat_emiss.py—parse_emiss_sdmx()+ EMISS-fetch (_http_post, verify=False как у open-data).rosstat_macro_sync.py— dual-source таска (open-data + ЕМИСС, per-source try/except: один источник падает — другой всё равно апсертит, ошибка re-raise в Celery/GlitchTip).UPSERT_EMISS_SQL: SAVEPOINT-per-row,CASTnot::, ON CONFLICT по PK.site_finder/macro.py—income_per_capita→ region-aware (additive).НЕ landed (честно, задокументировано в коде)
data.doне содержит Свердл-срез, нужнаdataGrid.do-выборка (selectedFilterIds+ filter-tree AJAX) + reCAPTCHA на странице индикатора. reCAPTCHA = не обходим (правило). Field-id-карта (57831/58273/57937/33560/3) сохранена для будущей итерации.Качество
code-reviewer: ✅ APPROVE — оба gate (SDMX region-filter + period→date mapping; SQL-upsert) пройдены; region-фильтр exact-match (adversarial-фикстура + flip-target тест), quarter→month сверено на 4 реальных кварталах, dual-source guard корректен, macro.py no-regression, без новых deps, scope-honesty. Полный backend-suite 2309 passed, 0 failed, ruff чисто,uv sync --frozenок.parcels.pyне тронут (без коллизий с ИРД/КРТ-треком).Refs #946 (доходы landed; ИПЦ/СМР reCAPTCHA-blocked).