Реальные цифры из скачанного dataset_СДЕЛКИ за Q1 2026 по Свердл.обл (region_code=66) — проверка качества источника.

ИТОГО сделок в Свердл.обл за Q1 2026: 37 310 (после умножения на number)

Распределение по типу объекта:

Помещения (квартиры/нежилые): 24 923

Земельные участки: 7 157

Здания: 3 130

Машиноместа: 2 100

Распределение по doc_type:

ДКП (вторичка+ГП): 26 655

ДДУ (ПЕРВИЧКА): 10 655

Практически все ДДУ = новостройки + прямая покупка от застройщика. ДКП — вторичка и прямые П в ГП

ЦЕНЫ ₽/м² ПО ПОМЕЩЕНИЯМ (выборка: area 5-500 м², price>100К):

Первичка ВДВОЕ дороже вторички в Свердл.обл — логично (вторичка включает хрущёвки 60-х годов, НП, МО подмосковье и т.д.)

Сверка с baseline: статистика ДОМ.РФ / Росстат по Свердл.обл в ~85-95 тыс ₽/м² (Apr 2025) — совпадает с ДКП median 82,594

ПРИМЕРЫ реальных сделок в Екб (квартал 66:41:*):

1.9М ₽ за 28.9 м² (66К ₽/м²), дом 1962 — хрущёвка

ТОП районы: 'Екатеринбург' (1642+1293=2935), Сысертский (1098), Белоярский (728)

Для GenDesign ПЛИТКИ 2 (ЦЕНА): рабочая выборка — сделки ПОМЕЩЕНИЙ в кадастровых кварталах в радиусе 5км от участка пользователя, раздельно ДКП vs ДДУ


ETL-план интеграции открытых данных Росреестра в GenDesign Stage 2a.

ИСТОЧНИКИ: 3 dataset типа на квартал: СДЕЛКИ (НАШ!), АРЕНДА, КАДАСТРСТОИМОСТЬ (4 файла)

ОБЪЁМ СДЕЛОК по кварталу: ZIP 9-30 MB, CSV 96-300 MB, ~600К-1.5М строк

ДОСТУПНО НА СЕЙЧАС: 9 кварталов (Q1 2024 - Q1 2026) + Архив до 2023г. (JSON-выгрузки по регионам, ~50-300 MB на регион в ZIP)

СТРАТЕГИЯ заливки:

Шаг 1: bootstrap — одноразовый скрипт скачивает все 9 кварталов СДЕЛОК → распакует → фильтрует region_code IN (66, 50, 77) → upsert в PostgreSQL

Шаг 2: cron-task quarterly_rosreestr_sync — раз в квартал (16-е число второго месяца после окончания квартала) проверять index и тянуть новый квартал

Шаг 3: обогащение: JOIN с ПКК Rosreestr по quarter_cad_number → получить geom квартала (полигон) + центроид

CREATE TABLE rosreestr_deals (id BIGSERIAL PK, region_code SMALLINT, district TEXT, city TEXT, quarter_cad_number VARCHAR(30), street TEXT, realestate_type_code VARCHAR(15), wall_material_code VARCHAR(15), year_build SMALLINT, floor TEXT, purpose_code VARCHAR(15), area NUMERIC(12,2), period_start_date DATE, deal_price NUMERIC(14,2), currency VARCHAR(10), doc_type VARCHAR(10), deal_count INT, raw_okato VARCHAR(15), source_quarter VARCHAR(10))

Индексы: (region_code), (quarter_cad_number), (period_start_date), (doc_type), (realestate_type_code), GIST на geom после энричмента

Materialized views: median(price/area) по (region, quarter, doc_type, realestate_type) и по радиусу 5км вокруг lat/lon

Объём работы: скачать+распаковать+лоаднуть 9 кварталов в PG для 3 регионов = 2-3 часа. ETL код = 4-6 часов. ПКК-энричмент = 1-2 дня

Для ПЛИТКИ 2 в GenDesign: это ОСНОВНОЙ источник фактических цен сделок (ДОМ.РФ остаётся для текущего прайс-листа и velocity)


ОГРАНИЧЕНИЯ открытого dataset Росреестра dataset_СДЕЛКИ — важно знать перед интеграцией.

1. НЕТ покупателя/продавца — персональные данные по 152-ФЗ НЕ выкладываются

2. НЕТ конкретной даты сделки — period_start_date = первое число квартала. Гранулярность времени = 90 дней

3. НЕТ кадастрового номера ОБЪЕКТА, только КАДАСТРОВЫЙ КВАРТАЛ. Нельзя связать с ДОМ.РФ odsId/elemId напрямую

4. ГРУППИРОВКА дубликатов в row + number: если 5 одинаковых квартир в одном жк проданы с похожими характеристиками — склеиваются в 1 ряд с number=5 и СРЕДНЕЙ ценой

5. НЕТ инфы о форме оплаты (наличные/ипотека), только итоговая цена

6. НЕТ комнатности квартиры. Можно инферить по площади (>50м² = 2к, >70 = 3к, ...) но не точно

7. НЕТ застройщика/ЖК в явном виде — выводим через JOIN ПКК → ДОМ.РФ /object по координатам квартала

8. Безвозмездные сделки (дарения, наследства) НЕ включены

9. ЛАГ: dataset публикуется ~через 1.5 месяца после конца квартала (Q1 2026 вышел 16.04.2026)

10. САМОСТОЯТЕЛЬНОСТЬ от ДОМ.РФ: СДЕЛКИ регистрируются все (и вторичка и первичка), тогда как ДОМ.РФ покрывает только первичку в строящихся ДОМАх = Росреестр ШИРЕ

11. ЮР.СТАТУС: официальный open data, в реестр ПО декларируем 'Интеграция с открытыми данными Росреестра (фИГС ЕГРН)' — легально и без NDA


Карта ресурсов Росреестра (обзор 26.04.2026 passive recon).

rosreestr.gov.ru — ОСНОВНОЙ портал (Bitrix CMS), TLS с self-signed-cert (Минцифры CA, не в system store)

├─ /eservices/ — электронные услуги (выписки ЕГРН 340-4160 ₽, регистрация прав, ДДУ-проверка)

├─ /opendata/ — 17 МАНДАТНЫХ open data наборов (СРО кадастровых инженеров, лицензии, проверки, ГКГН). Базовые реестры без сделок

├─ /open-service/data-sety-rosreestra/ — ⭐ 3 ДАТАСЕТА с РЫНОЧНЫМИ ДАННЫМИ:

│    ├─ СДЕЛКИ (ДКП+ДДУ) с ценами — см. DataSource_Rosreestr_DealsCSV_Apr26

│    ├─ КАДАСТРСТОИМОСТЬ (4 файла по регионам)

│    └─ АРЕНДА (договоры аренды)

├─ /data-sets/ — Apache OpenIndex файлы CSV по кварталам — см. DataSource_Rosreestr_DealsCSV_Apr26

└─ /open-service/statistika-i-analitika/ — только пресс-материалы, нет выгрузок

nspd.gov.ru — НОВЫЙ ПОРТАЛ НСПД (Национальная Система Пространственных Данных), заменил ПКК

├─ React SPA с Module Federation (микро-фронты)

├─ /api/{service-name}/{version} — микросервисы: notifications-controller/v2, ticket-support/v3, registers-manager/v2, tech-process/v2

├─ Все API требуют auth — ESIA через Госуслуги

pkk.rosreestr.ru — 301 → nspd.gov.ru/map?thematic=PKK (старый ПКК устарел)

lk.rosreestr.ru — Личный кабинет (React SPA, ESIA auth)

rosreestr.ru — старый домен (большинство поддоменов не отвечают в пробе)


Полный список 17 open data наборов на https://rosreestr.gov.ru/opendata/ (ПО идентификатору 7706560536 = ИНН Росреестра).

Наборы реестров СРО (полезные GenDesign):

1. СРО кадастровых инженеров — контрагенты для топосъёмки

2. СРО оценщиков — профессиональная оценка для финмодели

3. СРО арбитражных управляющих — для проблемных объектов (банкротство застройщиков)

4. Реестр лицензий на геодезическую и картографическую деятельность

5. Государственный каталог географических названий — полезно для нормализации адресов

Наборы НЕ полезные для GenDesign:

6-9. Планы/результаты проверок (землепользование, геодезия, СРО)

10. Перечень ГИС Росреестра

11-13. СРО медиаторов, РОК, СРО без полномочий, ЭП-площадок

14-17. Различные проверки и результаты

Это ГОС-МАНДАТ по 8-ФЗ 'O доступе к информации'. Реальные рыночные данные (СДЕЛКИ/КАДАСТР/АРЕНДА) НЕ здесь, а в отдельном блоке /open-service/data-sety-rosreestra/

Формат выгрузки (по паспорту): CSV/XML/JSON раз в квартал/месяц в зависимости от набора


НСПД (nspd.gov.ru) — новый портал Росреестра для пространственных данных, заменил ПКК (pkk.rosreestr.ru → 301)

Архитектура:

— React SPA с Vite билдом (видно по import-паттернам и vite_API_BASE)

— Module Federation с micro-frontends (видны runtime hooks @nspd-modules/*)

— Effector + atomic-router для state management

— Map: @nspd-modules/map-core, map-adapter

— Yandex Metrika (yandex-metrika-xOrTB1Q0.js)

— Special browser support: YaBrowser, Firefox, Chromium-Gost, Chrome (без Edge)

Microservices API base = '/api/{service}/{version}':

— /api/aeggis-portal/v3/spatial-data-info — инфо пространственные данные (AEGGIS = Application for Earth Geospatial Information System)

— /api/aeggis-portal/v1/auth-providers — провайдеры авторизации

— /api/services — сервисы НСПД

Все вызывают 403 без auth (видимо SSO через Госуслуги/ESIA)

Для GenDesign: НСПД не даёт прямого API без ESIA-входа. Альтернатива — старый ПКК-API community библиотек (rosreestr2coord) они могли сломаться после миграции


Passive recon наблюдения на rosreestr.gov.ru и nspd.gov.ru (26.04.2026). Только то что видно при просмотре публичных страниц и их bundle. Без active scan.

1. ⚠ dev-поддомен в prod-bundle (medium): в nspd.gov.ru/assets/api-ByMDT02-.js вывернута vite переменная VITE_PROXY_DOMAIN=https://dev.nspd.rosreestr.gov.ru — раскрывает существование dev-копии портала. Прямые пробы dev-хоста НЕ делали (active recon за рамками пользовательского запроса)

2. ⚠ X-Powered-CMS header (low): rosreestr.gov.ru отдаёт 'X-Powered-CMS: Bitrix Site Manager (d61e85ea0be7ddfb3fa5a12935cc91a6)' — раскрывает CMS + license-hash. Обычно хеш = SHA Bitrix лицензии (в отличие от просто 'Bitrix') — портрет продакшн инстанса

3. ⚠ Двойной Referrer-Policy header (low): выдаются два разных 'Referrer-Policy: origin-when-cross-origin' и 'Referrer-Policy: unsafe-url'. По спеке второй выигрывает — unsafe-url пропускает ПОЛНЫЙ URL+query в Referer на внешние сайты. Утечка приватности

4. ⚠ SameSite отсутствует в cookies (low): PHPSESSID, USER_REGION_ID, USER_CITY выдаются без SameSite-атрибута. CSRF risk при входе в ЛК

5. ⚠ P3P header устарел (info): policyref='/bitrix/p3p.xml' — P3P стандарт давно обсолетен (W3C прекратил в 2009)

6. ⚠ Typo в canonical URL (cosmetic): на nspd.gov.ru в <link rel=canonical> указан 'nspd.rosreetr.gov.ru' (rosreetr без 's') — опечатка в build

7. ⚠ Отсутствует Content-Security-Policy header на обоих доменах (low) — слабая защита от XSS

8. ⚠ robots.txt разрешает /opendata/ но НЕ учитывает /open-service/data-sety-rosreestra/ и /data-sets/ — это не баг, это отсутствие стратегии (файлы индексируются)

9. Открытая директория /data-sets/ (info, НЕ уязвимость, это полезный listing) — Apache mod_autoindex. Но кодировка имён в листинге = cp1251 (mojibake в UTF-8 браузере), свидетельство legacy Apache config

10. SSL TLS с российским CA (Russian Trusted CA / Минцифры) — не в trust store обычных OS/браузеров. Браузер Chromium-Gost или ruchnoe доверие в system store нужны. Для ETL в GenDesign — curl -k или ручное включение CA

Severity общая: все наблюдения LOW-MEDIUM. Ничего критичного не найдено (и не искали active scan'ами)

ДЛЯ GenDesign: из утечек ничего не используем. На реестр ПО декларируем только легальные источники: 'open data Rosreestr' (data-sety-rosreestra)


Росреестр (rosreestr.gov.ru, nspd.gov.ru) использует TLS-сертификат от российского CA (Russian Trusted CA Минцифры), который НЕ включен в браузеры/OS из коробки за пределами РФ.

Why: после санкций 2022 российские госресурсы перевели выдачу TLS на Минцифры. Обычный Chrome показывает ERR_CERT_AUTHORITY_INVALID

1) При ETL/curl используй флаг -k (skip cert check) — это безопасно потому что это открытые данные без auth/PII

2) Для строгой валидации в проде — добавь в trust store: https://www.gosuslugi.ru/crt/MinCifry_RootCA.pem

3) Python requests: используй verify=False или verify=path_to_minciftry_ca

4) Браузеры: Yandex Browser и Chromium-Gost включают CA по умолчанию

Не связано с security: это инфраструктурная особенность. Наблюдаемые данные в открытом доступе легальны


NSPD (nspd.gov.ru) auth: собственный OAuth2/OIDC сервер на sso.nspd.gov.ru, провайдер = ESIA Госуслуги.

Token endpoint: POST https://nspd.gov.ru/oauth2/token (прокси на sso.nspd.gov.ru)

Body: {grant_type: 'refresh_token'|'authorization_code', client_id: 'nspd'} — как JSON, NOT form-urlencoded

JWT issuer: https://sso.nspd.gov.ru, algo: RS256

JWT TTL: 1800с (30 мин). Refresh ttl: лонже (30+ мин, точно не известно — не проверяли)

Cookie storage: authAccessToken + authRefreshToken в cookie с HttpOnly, secure, SameSite=None, domain=nspd.gov.ru. Недоступны JS, но видны в DevTools Network

ESIA scope (при входе запрашивается): ОРГАНИЗАЦИИ, АДРЕСА, ДР, фИО, ИНН, СНИЛС, емаил, телефон, ПАСПОРТ — очень широко для сервиса карты. Для GenDesign это предупреждение же — НЕ интегрируем НСПД с ESIA в наш продукт (слишком большой PII surface)

JWT claims (PII!): aud, client_id, display_name, email, family_name, given_name, middle_name, sub (UUID), uid (UUID), preferred_username, sid, scope='profile email uid', updated_at

X-TIMEZONE обязателен в каждом запросе

Backend сигнатура: x-backend: dc1-gw-8-1, x-api-header: af, x-request-id: hex


Доступ к NSPD API для physic-аккаунта (физлицо через ESIA) — проверено эмпирически 26.04.2026.

GET /api/registers-manager/v2/pages/main → 200, typeAccount: 'physic', 18 сервисов:

approvalInConstruction (согласования в строительстве), integratedDevelopmentOfTheTerritory (КРТ), individualHousingConstruction (ИЖС), myProperties (мои объекты), arcticPeopleLanguages, urbanPlanningStudyOnline (градопроработка), smallBusiness, assistantSurveyor (помощник изыскателя), geodataVisualization, cadastralValuation, landNspd, farmLand, buildingLand, tourismNspd, marketAnalytics (НАШ!), complexCadastralWorks, specialTools, thematicUserLayers

/construction-nspd → buildingLand (земля для стройки)

GET /api/notifications-controller/v2/notifications → 200 (totalCount: 0 для нового юзера)

GET /api/portal-tools/v1/page-assistant/{pageCode} → 200 (флаг assistant)

POST /api/portal-tools/v1/audit → 200 (аудит пользовательских действий)

ЗАКРЫТО для physic (403 Forbidden код=3):

/api/registers-manager/v2/registers/can-get-tree — дерево реестров

/api/aeggis-portal/v3/* — портал пространственных данных (объекты, registry-list, spatial-data-info, auth-providers)

Эти endpoints видимо для organisation-аккаунта (юрлицо) или госслужащих

Для GenDesign: physic-аккаунта хватит для marketAnalytics + WMTS-карта. Реестры/объекты — требуют юрлица


Сервис nspd.gov.ru/market-analysis — 'Аналитика рынка недвижимости', официальный сервис Росреестра.

Источник данных: Цены сделок по продаже квартир на вторичном рынке из ФГИС ЕГРН с 2018 года

Разрезы: федокруг / субъект РФ / населённый пункт / кадастровый квартал. Визуализация: тепловая карта, графики, таблица

GET /filters/indicators → [{id:1,title:'Индикатор цен ежемесячный',type:M},{2,'Квартальный',Q},{3,'Полугодовой',H},{4,'Годовой',Y}]

GET /filters/calculationMethod → [К базисному, К предыдущему, К аналогичному периоду годом ранее]

GET /filters/dataSource → [{1,ФГИС ЕГРН,fgisEgrn},{2,Внешние,externalSource}]

GET /federal-district → [8 ФО с codes 1-8]. Уральский=6, Сибирский=7, Дальневосточный=8, Приволжский=5, СКФО=4, СЗФО=2, ЦФО=1, ЮФО=3

GET /groups/fgisEgrn → полная схема фильтров: dataSource, indicators, calculationMethod, periodFrom/periodTo, federalDistrict, federalSubject, settlement, cadastralQuarter, areaRanges. limit=10 на множественные выборы

GET /layers-tree → 6 MVT-слоёв на разные площади. layerId 872964-872969. categoryId 470043. visualType=bubble, minZoom=2, tileExtent=512

POST /period (body: {type, dataSourceSysName}) — периоды доступные для индикатора (POST, валидации проверены)

POST /settlement (body: другой формат — не выявлен) — нас.пункты

GET /federal-subject?federalDistrict={code} — видимо есть но ожидает другой формат параметров

Data endpoint (чарт/таблица) — НЕ НАЙДЕН без реального UI-выбора. Связаные endpoints для рендера в SPA ловятся только при полном set выборе фильтров

КОНЦЕПЦИЯ для GenDesign: это ГОТОВЫЙ official aggregation API по сделкам ПО КАДАСТРОВЫМ КВАРТАЛАМ. В отличие от CSV-датасета (сырые сделки раз в квартал) — это предварительно вычисленные индикаторы с выбором временного окна (M/Q/H/Y) и динамики относительно базы/предыдущего/ГОГ


AEGGIS WMTS API НСПД — картирование слоёв в стандарте OGC WMTS.

GET /api/aeggis/v4/{layerId}/wmts/{z}/{x}/{y}.png — PNG растровые тайлы. layerId=235 — 'Цифровая объектовая схема' (базовый справочный слой)

GET /api/aeggis/v4/{layerId}/mvt/{z}/{x}/{y} — Mapbox Vector Tiles (предположение по schema layers-tree)

Base layers (/api/geoportal/v1/baselayers): id=235 (ЦОС), id=36347 (ЕЭКО), id=36344 (Ортофото планы 2000) и другие

Cache: в ответе видны cache.levels_to (max zoom), refresh_before для временного инвалидирования

External tiles: есть в базовом списке с 'external' source. Пример 'https://nspd.gov.ru/cgk/map/38/tms/{z}/{x}/{y}.png' (TMS-паттерн)

Для GenDesign: можно встраивать эти тайлы в наши Mapbox/Leaflet как base/overlay. Авторизация через cookie session, но physic-вход работает для layer 235

/api/geoportal/v1/page-search-settings?pageCode={code} — настройки поиска. Для marketAnalytics regex='^\d{2}:\d{2}:\d{1,7}:\d+$' — формат кадастрового номера


Security observation НСПД (26.04.2026): ПД в localStorage браузера.

После ESIA-входа SPA сохраняет в localStorage ключ NSPD_API_CLIENT_USER (~657 char) с данными текущего юзера (вероятно ID, name, email, expires и др.)

Парный ключ NSPD_API_CLIENT_USER_EXPIRES с ISO-датой истечения (обычно +30 мин от входа)

Риск (medium): любой скрипт на странице (в т.ч. 3rd-party вроде Yandex Metrika, или при XSS) может прочитать ПД. Best practice = хранить ПД только в HttpOnly cookie или server-side, не в localStorage

Yandex Metrika с _ym_uid + _ym_d + webvisor (96513913) работает на всех страницах включая профиль — теоретически может видеть PII в страницах

JWT в cookie HttpOnly — это ок, JS не видит. Но всё равно видно в DevTools Network и в cookie storage браузера

JWT response body в ответе /oauth2/token (в сыром plaintext): возвращает распакованные claims в JSON в ответе — display_name, email, family_name, given_name, middle_name, sub UUID, uid UUID, sid — всё это PII

Для GenDesign: прямая интеграция НСПД в наш продукт = ПЛОХО: брал бы слишком большую поверхность PII. Лучше server-side прокси с одним общим сервис аккаунтом (если будет выдан) или использовать CSV-датасеты (DataSource_Rosreestr_DealsCSV_Apr26) и WMTS-плитки без входа (если публичные слои работают без cookie)


Дата: 26.04.2026 вечер. Полная архитектура /api/market-analytics/v1/* — раскрыта через debug-браузер с физик-аккаунтом ESIA.

АРХИТЕКТУРНЫЙ ПАТТЕРН: серверная сессия фильтров. Фронт сохраняет выбор фильтров на бэке через saveUserFilters → бэк хранит как userFiltersId (число). Все data-endpoints читают активные фильтры из этой сессии — поэтому body=`{}` или совсем без body.

FLOW (порядок вызовов):

1) GET /user-filters/userFilters → текущее состояние фильтров пользователя {userFiltersId, dataSourceSysName, filters[]}

2) Пользователь меняет фильтры в UI → собирающие вызовы /period, /region-list, /settlement, /cadastral-quarter (все POST с подсказками для следующего уровня)

3) Кнопка «Применить» → POST /user-filters/saveUserFilters с полным телом фильтров. Возвращает {userFiltersId: N}

4) После save фронт автоматически дёргает: graphEgrnHistogram, graphEgrnLineIndicator, graphEgrnCandleMedian, graphEgrnLineMedian, tableEgrn, geomDataForHeatMap, dataOnLegend, titleHeatMap

BODY saveUserFilters (правильный формат):

{ dataSourceSysName: 'fgisEgrn', filters: [

{sysName:'dataSource', options:{value:'ФГИС ЕГРН', id:1}},

{sysName:'calculationMethod', options:{value:'К предыдущему периоду', id:2}},

{sysName:'areaRanges', options:{value:'от 25 до 40', id:1}},

{sysName:'indicators', options:{value:'Индикатор цен квартальный', id:2, periodType:'Q'}},

{sysName:'periodFrom', options:{value:'4 квартал 2025', sortOrder:32, isRemote:true}},

{sysName:'periodTo', options:{value:'1 квартал 2026', sortOrder:33, isRemote:true}},

POSTПОДСКАЗКИ при выборе фильтров (важная деталь — все обёрнуты в params!):

POST /period body={params:{type:'M'|'Q'|'H'|'Y', dataSourceSysName:'fgisEgrn'}} → список доступных периодов с sortOrder

POST /region-list body={districtIds:[6]} → список субъектов в выбранных ФО (НЕ /federal-subject!)

POST /settlement body={subjectIds:[1,2,3,4]} → нас.пункты по subject id (массив до 4-5 за раз, фронт батчит)

POST /cadastral-quarter body={subjectIds:[1,2,3,4]} → массив кадастровых кварталов формата '02:55:020113'

DATA ENDPOINTS (body={} или GET, читают по userFiltersId из cookie):

POST /tableEgrn/fgisEgrn?page=0&count=10 → {headers:[{key,name,columnType}], bodyData:[{1:Территория, 2:значение_period1, 3:значение_period2}], meta:{page,count,totalCount}}

POST /fgisEgrn/geomDataForHeatMap → GeoJSON FeatureCollection. Координаты в EPSG:3857 (Web Mercator). 13 цветовых бакетов: <0.25, 0.25-0.5, 0.5-0.7, 0.7-0.85, 0.85-0.95, 0.95-1.0, 1.0_unchanged, 1.0-1.05, 1.05-1.15, 1.15-1.3, 1.3-1.5, 1.5-1.75, >1.75. MultiPolygon границы кадастровых кварталов с цветом по индикатору

GET /graphEgrnHistogram/fgisEgrn → {chartType:'histogramChart', data:[{title, indicatorValueCurrent:0.88, indicatorValuePrevious:1.12, period:'02.2026', percentValue:-21}]}

GET /graphEgrnLineIndicator/fgisEgrn → {chartType:'lineChartIndicator', data:[{title, indicatorValue:1.12, period:'01.2026', periodType:'Месяц'}, ...]}

GET /dataOnLegend/fgisEgrn → описание легенды теплокарты

GET /fgisEgrn/titleHeatMap → {title:'Индикатор цен ежемесячный по выбранной территории...'}


Дата: 26.04.2026. ⚠ КРИТИЧНОЕ ОТКРЫТИЕ — endpoints скрытые от physic-аккаунта (403 Forbidden):

GET /api/market-analytics/v1/graphEgrnCandleMedian/fgisEgrn — СВЕЧНОЙ график медианной АБСОЛЮТНОЙ цены сделок (₽/м²)

GET /api/market-analytics/v1/graphEgrnLineMedian/fgisEgrn — линия медианной АБСОЛЮТНОЙ цены сделок

Все остальные graph endpoints (Histogram, LineIndicator) возвращают только относительные индикаторы (текущий период / предыдущий = 0.88), а Candle/Line Median должны возвращать реальные ₽/м² по кадастровому кварталу.

Для physic (как у юзера сейчас) — 403 'Forbidden'. Проверено эмпирически в браузере 26.04.2026.

ГИПОТЕЗА: доступно для organisation-аккаунта (юрлицо в ESIA) или для аккаунтов с расширенным scope.

ЭКВИВАЛЕНТНОСТЬ ДАННЫХ: эти endpoints дублируют то, что мы уже получаем из CSV-датасета Росреестра (DataSource_Rosreestr_DealsCSV_Apr26) — медианные цены сделок по кадастровым кварталам. Только тут это онлайн-API с фильтрами по периоду/площади/нас.пункту, а CSV — сырые сделки покварталу.

ДЛЯ GenDesign: ничего не теряем. Используем CSV-датасет (per-deal сырые данные) + публичные индикаторы NSPD (относительная динамика) + dom.рф per-flat snapshot. Org-аккаунт NSPD — НЕ требуется.


Дата: 26.04.2026. Конкретный value NSPD MarketAnalytics для GenDesign Plan A.

ИСТОРИЯ ДАННЫХ: 33 квартала (Q1 2018 — Q1 2026, 8 лет longitudinal)

ВРЕМЕННЫЕ РАЗРЕЗЫ: M (месяц), Q (квартал), H (полугодие), Y (год). Месячный показатель работает с лагом ~1-2 мес (на 26.04.2026 показывает 02.2026)

МЕТРИКА: индикатор цен — отношение текущего периода к базе/предыдущему/ГОГ. Безразмерное число (0.88 = -12% к предыдущему). Полезно для тренда, не для абсолютных значений

ГРАНУЛЯРНОСТЬ: до уровня кадастрового квартала (формат XX:YY:ZZZZZZ). Это в 100-1000 раз тоньше чем Росстат (агрегат по региону).

КОНКРЕТНЫЙ КЕЙС Свердл.обл, Екатеринбург, площадь 25-40 м², 02.2026 vs 01.2026: индикатор=0.88 (цены упали на 12%), предыдущий период 1.12.

1) Cross-validation цен сделок с Росреестра CSV — индикатор NSPD должен совпадать с (median_current_quarter / median_previous_quarter) из CSV

2) ВЕЛОСИТИ (sigma trend): тренд цен по конкретному кадастровому кварталу — для финмодели это хороший signal

3) ВЫБОР АНАЛОГОВ: GeoJSON-полигоны кадастровых кварталов с раскраской по индикатору → для участка пользователя автоматически найти кадастровые кварталы вокруг с похожей динамикой

4) WMTS-тайлы (через /api/aeggis/v4/235/wmts/{z}/{x}/{y}.png) можно встроить как base layer в Mapbox/Leaflet GenDesign

ПЛАН ИНТЕГРАЦИИ В Stage 2a:

Шаг A: ESIA-логин в headless Chrome (или через cookie из user-input) → получаем JWT в authAccessToken cookie

Шаг B: для каждого региона интереса (Свердл.обл, МО, Москва) сохраняем фильтры (saveUserFilters) и тянем geomDataForHeatMap → сохраняем GeoJSON в PostGIS как материализованное представление

Шаг C: cron 1×в сутки обновляем индикаторы по периоду и пересчитываем materialized views

Шаг D: для каждого участка пользователя — JOIN с PostGIS по геометрии → находим включающий кад.квартал → читаем индикатор

JURISDICTION: NSPD — государственный сервис Росреестра по 8-ФЗ. Использование физик-аккаунта легально как пользователя. ⚠ автоматизированный сбор через ESIA — серая зона. Лучше ОДНОРАЗОВО собрать с физик-аккаунта и кешировать локально.

ОГРАНИЧЕНИЯ:

1) physic-аккаунт через ESIA — доступ только для одного юзера, RPS-лимиты на сессию

2) JWT TTL=30 мин (refreshable). Для cron нужно либо хранить refresh_token, либо на каждом запуске re-auth через ESIA (что НЕ автоматизируется без обхода капчи)

3) Авторизация через ESIA подвержена captcha/2FA — недетерминирована для headless

4) absolute medians (Candle/Line Median) — 403, требуют org-аккаунт

5) Лимит на массовые запросы кадастровых кварталов: фронт батчит по 4-5 субъектов за раз — видимо есть soft-rate-limit