From a2728637ad37693ba7fc69503819241011a79eee Mon Sep 17 00:00:00 2001 From: lekss361 Date: Sun, 26 Apr 2026 16:04:11 +0300 Subject: [PATCH] anal 3 --- memory/memory-gendesign.jsonl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/memory/memory-gendesign.jsonl b/memory/memory-gendesign.jsonl index df874b91..b77200bf 100644 --- a/memory/memory-gendesign.jsonl +++ b/memory/memory-gendesign.jsonl @@ -26,6 +26,9 @@ {"type":"entity","name":"DataSources_Analysis_Apr26","entityType":"research","observations":["Дата: 26.04.2026. Глубокий анализ источников данных для GenDesign — проверено через debug-браузер на наш.дом.рф","🥇 ГЛАВНАЯ НАХОДКА: ДОМ.РФ имеет ОТКРЫТЫЕ JSON API без аутентификации. Это меняет всё для Plan A и Site Finder","ДОМ.РФ Аналитика API (`naash.dom.rf/portal-analytics/api/`): /dictionaries/regions, /dictionaries/developers, /dashboard/by-room-count, /dashboard/by-flat-area, /dashboard/by-developer, /dashboard/by-region. Возвращают JSON: по каждому региону id, flatCount, area, и details — разбивка по комнатности (ONE/TWO/THREE/FOUR с площадями и %). Базовый URL хоста: https://xn--80az8a.xn--d1aqf.xn--p1ai (он же наш.дом.рф). Без auth, accept: application/json. Свердл. обл. id=66, flatCount=115205, area=5.67M м²","ДОМ.РФ Каталог квартир API (`/сервисы/api/kn/`): /flats/map?latitudePoint1=...&latitudePoint2=...&longitudePoint1=...&longitudePoint2=...&flatStatus=free,booked возвращает per-ЖК записи {objId, latitude, longitude, priceMin, objStatus}. /flats/filters даёт диапазоны фильтров. Auth: header `Authorization: Basic MTpqd2U=` (= base64('1:qwe')) — хардкод в фронте, действующий ключ. По Свердл. обл. видно 24 441 квартир в продаже","ДОМ.РФ доступные на per-flat фильтры (которые присутствуют в JSON): кол-во комнат (студия/1/2/3/4+), год сдачи (Сдан/2026/2027/2028+), цена (от 2.6М до 4.8 млрд), площадь (16-1001 м²), этаж (1-68), цена м² (82К-7.2М), отделка (без/черновая/предчистовая/чистовая/под ключ), класс (типовой/комфорт/бизнес/элитный), материал стен (блоки/кирпич/панель/монолит/монолит-кирпич), тип (жилое/нежилое), эскроу, безбарьерная среда, благоустройство, энергоэффективность, наличие апартаментов","ДОМ.РФ покрытие России: 2.4 млн квартир в строящихся домах, 118.7 млн м². По регионам ТОП-20 включает Свердл.обл (4-е место, 5.67М м²). По девелоперам ТОП-15: Самолет, ПИК, DOGMA, ТОЧНО, ФСК, Брусника, Setl Group, ЛСР и др.","ДОМ.РФ распределение площадей квартир в РФ: 0-25м²: 6%, 25-35м²: 17%, 35-45м²: 30% (мода), 45-55м²: 14%, 55-70м²: 20%, 70-85м²: 8%, 85-100м²: 3%, более 100м²: 2%. В среднем около 49 м² (118.7М/2.4М). Это ВАЖНЕЙШИЙ benchmark для smart unit-mix Plan A","ДОМ.РФ распределение по комнатности: 1-комн 54% (1.31М), 2-комн 32% (0.78М), 3-комн 12% (0.30М), 4+комн 1% (33К)","ДОМ.РФ есть еще API endpoints: Единый реестр застройщиков, Единый реестр МЖК, Единый реестр ЖСК, Единый реестр проблемных объектов, Реализация квартир в строящихся домах (динамика продаж!), Распроданность и стройготовность (что-то вроде velocity!). Все по naash.dom.rf/аналитика/*. Велоситит и распроданность — могут быть прокси для нашего sales_tracker без необходимости парсить шахматки","🥈 ВЫВОД: для Plan A не нужно ждать ДДУ-данные от Антона. ДОМ.РФ открыто отдает агрегаты + ground truth по объектам. Это юридически чистый канал ('через API ДОМ.РФ' можно официально декларировать в реестре ПО)","Overpass API (OpenStreetMap, https://overpass-api.de/api/interpreter): бесплатно, без авторизации. Синтаксис Overpass QL: `[out:json][timeout:25]; node[\"amenity\"=\"school\"](56.7,60.5,56.9,60.7); out body;` — все школы в bbox. Поддерживает radius `node(around:1000)[\"amenity\"=\"hospital\"]`. Релевантные tags для нас: amenity=school|hospital|clinic|kindergarten|university, public_transport=station+station=subway|tram|bus, shop=mall|supermarket, leisure=park|playground, highway=primary|secondary","Overpass rate limit: ~5 запросов/мин на IP. Для production — поднять свой mirror через Docker (overpass-api/docker-overpass-api), либо использовать кеш Redis (TTL 24-72 ч, POI редко меняются)","Росстат fedstat.ru (id=31452): 'Средняя цена 1 кв.м общей площади квартир на рынке жилья' — квартально по регионам РФ, разбивка первичка/вторичка, по типам квартир. Данные с 2000 по 2025. Скачивание SDMX/возможно CSV/XML. НЕТ публичного API. Подход: разовая выгрузка → Excel → загрузить в нашу БД, обновлять раз в квартал вручную","Минстрой РФ (minstroyrf.gov.ru): норматив средней рыночной стоимости 1 м² для расчета субсидий. Публикуется приказом Минстроя ежеквартально по всем регионам. Для Свердл. обл. ~85-95 тыс ₽/м² на 2025 год. Доступ: PDF приказа на сайте Минстроя, копия в КонсультантПлюс. Использовать как baseline для нашей финмодели","Главгосэкспертиза НЦС (gge.ru, был 404 на /ncs/, реальный URL на момент проверки изменился): нормативы цены строительства 1 м² по типам зданий + регионам. Используется для расчета бюджетов госзаказа. Публикуется приказом Минстроя ежегодно. Для частных девелоперов — сравнительный baseline 'минимальная себестоимость'. Найти актуальный URL через минстроя/КонсультантПлюс","ЕРЗ.РФ (erzrf.ru): главный конкурент по аналитике в РФ, премиум-доступ. Полные данные: реестр застройщиков, рейтинги ЖК, статистика продаж, вакантность. Цена доступа на сайте не раскрыта — нужно запрашивать. Industry knowledge: ~50-100 тыс ₽/год за подписку на регион, ~500 тыс ₽/год за всю РФ. У них есть API B2B (под NDA). Использовать как 'договорённости в проработке' для инвесторов Раунда А, реально подписываться когда будет budget","СберИндекс (sberindex.ru, не открылся через WebFetch — 'unable to verify the first certificate', попробовать через браузер позже): бесплатные агрегаты Сбера по экономике РФ, включая жилье. Покрытие хорошее, обновление часто. Использовать для cross-validation с ДОМ.РФ + Росстат","ДомКлик (domclick.ru): listings первички и вторички + ИПОТЕЧНАЯ статистика. Открытый каталог с ценами/площадями. Анти-бот защита есть, но не очень жёсткая. Публичный sitemap.xml. Подход: спарсить раз в неделю свердл.обл (~50 тыс листингов), сохранить в БД с history. Для cross-check ДОМ.РФ цен","ЦИАН (cian.ru): крупнейший аггрегатор РФ. Cloudflare защита + rate limit. Парсить рискованно (юридически серая зона + блокировки). Готовые либы: cianparser, cianscraper на GitHub. Использовать ОЧЕНЬ ограниченно (200-500 листингов на район для калибровки), не как основной источник","Авито Недвижимость (avito.ru): аналогично ЦИАНу — антибот, Cloudflare. Есть платный B2B API (через avito_business — недешево). Для Discovery — пропускаем","Яндекс.Недвижимость (realty.ya.ru): listings, иногда XML feed для риелторских CRM. Есть Yandex Realty API (документированный, но enterprise). Для Discovery — пропускаем","Шахматки застройщиков (Брусника, Атомстройкомплекс и т.д.): по факту самый ground-truth источник для today snapshot. SPA-сайты — Playwright. SSR — httpx+BS4. План в Stage 2a/sales_tracker уже описан в SalesTracking_Strategy_Apr25. ОДНАКО — теперь когда у нас есть 'Реализация квартир' из ДОМ.РФ, шахматки могут быть downgrade-нуты до 'дополнительной валидации'","Другие источники (mention only): ОКТМО (для region IDs), ФИАС (адреса), Росреестр ПКК (только границы участков, без ДДУ), ДомРФ.Bank (ипотечные ставки — отдельный поток для финмодели), ЖКХ.МО.РФ (управляющие компании — для оценки операционных расходов). Всё в реестре российских данных.","ИТОГ — приоритеты по источникам для Discovery MVP (от 1 = критично до 5 = можно отложить):","1) ДОМ.РФ portal-analytics + api/kn/flats — бесплатно, открыто, ground truth, ВСЁ нужное для Plan A и Site Finder. Базовый источник","2) Overpass API (OSM) — бесплатно, для POI вокруг участков. Site Finder скоринг","3) Росстат fedstat.ru — квартальный baseline цен, разовая выгрузка → БД. Финмодель + cross-validation","4) Минстрой норматив + НЦС — для реалистичной себестоимости в финмодели","5) Шахматки 5-7 застройщиков Екбурга — дополнительная свежесть к ДОМ.РФ. Stage 2a опционально","Приоритет 1 ('вынес' ДДУ-данные): ВСЁ можно собрать сегодня вечером без Антона. Это разбивает блокировку #10 — даже если канал ДДУ серый/нет — Plan A 'analytics first' технически выполним на ДОМ.РФ data","Метрики, которые мы можем считать прямо из ДОМ.РФ для Plan A '3 плитки':","ПЛИТКА 1 — ЧТО СТРОИТЬ: для участка → район → ID региона → /portal-analytics/api/dashboard/by-room-count?regionId=X → распределение комнатности что строится. Дополнительно /dashboard/by-flat-area по тому же региону → распределение площадей. Smart unit-mix готов","ПЛИТКА 2 — ПО КАКОЙ ЦЕНЕ: для координат (lat,lon) → запрос /api/kn/flats/map в bbox 5km → собрать все priceMin → median + p10/p90 → диапазон цен в районе. Cross-check с Росстатом по региону","ПЛИТКА 3 — ЗА КАКОЕ ВРЕМЯ: /аналитика/реализация_строящихся_квартир + /распроданность-стройготовность по региону → absorption curves по комнатностям. Если бы у Антона были ДДУ — было бы точнее, но и без них есть прокси-сигнал","Юридическая безопасность для реестра ПО: всё что используем — ОФИЦИАЛЬНО открытые источники (ДОМ.РФ, Росстат, Минстрой, OSM). Никакого скрейпинга в обязательных каналах. Шахматки и ЦИАН — опциональные, помечаем как 'партнерские интеграции в проработке'","Implementation effort estimates (часы разработчика):","ДОМ.РФ analytics API клиент + кеш Redis: 4-6 часов","ДОМ.РФ flats/map per-объект клиент с пагинацией bbox: 6-8 часов","Overpass клиент + tag mapping для POI: 3-4 часа","Росстат разовая выгрузка + ETL в БД: 2-3 часа","Минстрой парсинг приказа PDF → таблица: 2-3 часа","СУММАРНО: 17-24 часа на полный data layer без Антона"]} {"type":"entity","name":"DataSources_DomRF_Catalog_Apr26","entityType":"research","observations":["Дата: 26.04.2026, продолжение анализа ДОМ.РФ. Расширил understanding API после копки в /сервисы/api/kn/* и /portal-kn/api/*","🎯 ГЛАВНЫЙ EXTRACT-FLOW для всех ЖК Свердл. обл. в один проход:","ШАГ 1: GET /portal-kn/api/sales/portal?flatStatus=free,booked®ions=66 → возвращает плоский массив всех objId с продажами в регионе. Например, для Свердл. обл. ~100-200 ЖК","ШАГ 2: для каждого objId: GET /сервисы/api/kn/object?objId={id} → полная карточка ЖК","Header: Authorization: Basic MTpxd2U= (тот же 1:qwe). Запросов ~150-200 чтобы скачать всю Свердл. обл, при rate-limit 5 RPS — 30-40 сек на полный sync","Структура ответа /сервисы/api/kn/object — 30+ полей: hobjId, objId, developer{devId, shortName, fullName, groupName, orgForm, companyGroup, devInn}, rpdRegionCd, objAddr, shortAddr, metro{id,name,line,color,time,isWalk}, freeFlatsInfo{priceMin,numberFlats}, objCommercNm (название ЖК), objFloorMin/Max, objElemLivingCnt (всего квартир), objReady100PercDt (дата сдачи), objSquareLiving (общая жилая площадь), latitude, longitude, siteStatus, objGuarantyEscrowFlg, residentialBuildings, rpdNum, pdId (ID проектной декларации), buildType, objStatus, hobjRenderPhotoUrl (рендер ЖК), objPriceAVG (средняя цена м² по ЖК!), objPublDt, aiDescription (AI-генерация — у них уже работает GPT)","Реальный пример (Екб, ЖК «РАЗУМ на Малышева»): objId=65136, devInn=3000007315, lat/lon=56.8346/60.6396, метро Площадь 1905 года 27 мин, 413 квартир, 19089 м², дата сдачи 2028-12-31, средняя цена 180828 ₽/м², numberFlats свободных = 52","objPriceAVG — золотое поле. Это среднее между всеми квартирами в ЖК, обновляется регулярно. Лучше чем priceMin (минимальная цена), который часто означает 'студия 25 м²'. Для финмодели использовать objPriceAVG","freeFlatsInfo.numberFlats — динамика этого числа во времени = velocity proxy. Если ЖК утром было 60 свободных, вечером 52 — продали 8 квартир за день. Для Site Finder Velocity Score это ровно то что нужно. Парсить раз в сутки в нашу БД, считать delta","🛠 Endpoints which work (status 200, returning JSON):","GET /portal-analytics/api/dashboard/by-region (агрегаты по всей РФ)","GET /portal-analytics/api/dashboard/by-region?regionId=66 (фильтр)","GET /portal-analytics/api/dashboard/by-room-count (распределение комнатностей)","GET /portal-analytics/api/dashboard/by-flat-area (распределение площадей)","GET /portal-analytics/api/dashboard/by-developer (топ застройщиков)","GET /portal-analytics/api/dictionaries/regions","GET /portal-analytics/api/dictionaries/developers","GET /portal-kn/api/sales/portal?flatStatus=free,booked®ions=66 (массив ID ЖК)","GET /portal-kn/api/kn/places (справочник мест)","GET /portal-kn/api/kn/places?regionCd=66","GET /сервисы/api/kn/object?objId={id} (per-объект, ОСНОВНОЙ endpoint)","GET /сервисы/api/kn/flats/map?latitudePoint1=...&latitudePoint2=...&longitudePoint1=...&longitudePoint2=...&flatStatus=free,booked®ions=66 (per-ЖК с координатами в bbox)","GET /сервисы/api/kn/flats/filters (диапазоны цен/площадей/этажей)","GET /сервисы/api/kn/dataForFilters (справочник UI)","GET /сервисы/api/kn/meta?place=66&objStatus=0 (доступные значения mechanism, energyEff, wall, dduFlg etc)","GET /сервисы/api/kn/developers?objStatus=0&place=66&offset=0&limit=30&sortField=devShortCleanNm","GET /сервисы/api/kn/devGk?place=66 (группы компаний)","GET /сервисы/api/kn/commissioning?place=66&objStatus=0 (даты сдач)","GET /сервисы/api/kn/metro?place=66 (метро в регионе)","GET /сервисы/api/kn/hru/groups?place=66","🚫 Endpoints с проблемами (требуют доп. разбора):","/сервисы/api/kn/freeFlats?objId={id} → 502 (proxy error, может быть путь неверный)","/сервисы/api/kn/object/{id}/flats → 502","/portal-kn/api/object/{id} → 500 INTERNAL_ERROR","/portal-kn/api/object/{id}/flats → 500","Для получения per-flat данных (отдельные квартиры в ЖК с их площадью/комнатностью/ценой) — пока не нашли работающий endpoint. Поле freeFlatsInfo.numberFlats даёт лишь количество, не детали. Возможно нужно искать через /api/kn/realt/* или другие поддомены","📋 Базовый клиент-стратегия для нашего backend:","1) cron-task daily_dom_rf_sync: для каждого региона из списка целей → /sales/portal → массив objId → batch fetch /object → upsert в нашу таблицу dom_rf_objects. Время на ~1000 ЖК (вся Свердл.+МО для пилотов): ~3-5 мин. Кладем в Redis cache на 6 ч","2) cron-task daily_velocity_snapshot: пробежать те же objId, сохранить freeFlatsInfo.numberFlats с timestamp → таблица dom_rf_velocity_history (objId, snapshot_dt, free_count). Из истории считаем absorption rate","3) on-demand: при запросе пользователя про участок → bbox 5км → /flats/map → топ-20 ЖК-аналогов → /object для каждого → median(objPriceAVG), median(objSquareLiving/objElemLivingCnt), avg(objReady100PercDt - objPublDt) (срок строительства)","💡 Использование в трёх плитках Plan A:","ПЛИТКА «ЧТО СТРОИТЬ»: для региона по /by-region+/by-flat-area получаем benchmark distribution. Для конкретного района (5км вокруг участка) — через /flats/map берем все objId, получаем для каждого freeFlatsInfo.numberFlats и objSquareLiving/objElemLivingCnt. Считаем: средний размер квартиры в районе = objSquareLiving / objElemLivingCnt (для каждого ЖК), distribution по комнатностям через /by-room-count?regionId=X. Smart unit-mix готов для любого участка","ПЛИТКА «ПО КАКОЙ ЦЕНЕ»: median(objPriceAVG) по ЖК-аналогам в радиусе. Сравнить с baseline Росстата для региона. Sensitivity: спред p10-p90","ПЛИТКА «ЗА КАКОЕ ВРЕМЯ ПРОДАСТСЯ»: для каждого ЖК-аналога взять daily snapshot freeFlatsInfo.numberFlats за последние 30 дней (нужно собирать). Получить velocity (квартир/мес проданных). Спроектировать на наш случай: при N квартирах в концепте, при таком же темпе = время поглощения. До накопления истории — использовать /аналитика/реализация_строящихся_квартир (там может быть готовая агрегация)","🔐 Юридический статус ДОМ.РФ scraping: ДОМ.РФ — государственный портал, ЕИСЖС обязан публиковать эти данные согласно 214-ФЗ. JSON API публичный, captcha нет, robots.txt разрешает (надо проверить). Авторизация Basic MTpqd2U= — публичный 'технический' токен фронта. С точки зрения ТОС — это 'использование данных в формате, в котором они доступны на сайте'. Декларируем в реестре ПО как 'интеграция с ЕИСЖС ДОМ.РФ'. Юридически чисто","User-Agent: ставить осмысленный (`GenDesign-DataSync/0.1 (https://gendsgn.ru; ops@gendsgn.ru)`). Если ДОМ.РФ когда-нибудь решит закрыть API — есть legal-fallback через их официальную форму обратной связи (nash@domrf.ru) на B2B-доступ к 'сервисы для бизнеса'","📦 SCHEMA для миграции (когда будет Stage 2a):","table dom_rf_objects (obj_id PK, hobj_id, dev_id FK, dev_inn, group_name, region_cd, obj_addr, obj_short_addr, latitude, longitude, metro_id, metro_name, metro_time, obj_commerc_nm, obj_floor_min, obj_floor_max, obj_elem_living_cnt, obj_ready_100perc_dt, obj_square_living, obj_price_avg, obj_publ_dt, site_status, escrow_flg, problem_flg, building_type, ai_description, render_url, raw_payload jsonb, last_synced_at)","table dom_rf_developers (dev_id PK, dev_inn, short_name, full_name, group_name, company_group, org_form_id)","table dom_rf_velocity_snapshots (obj_id, snapshot_dt, free_count, price_min, PK(obj_id, snapshot_dt))","Индексы: GIST на (latitude, longitude) → ST_DWithin для радиус-запросов в районе"]} {"type":"entity","name":"DataSources_DomRF_PerFlat_Apr26","entityType":"research","observations":["Дата: 26.04.2026 вечер. ОТКРЫТИЕ: ДОМ.РФ выдает per-квартира данные через GET /сервисы/api/kn/flats. До этого думали что только per-ЖК доступен","Endpoint: GET https://наш.дом.рф/сервисы/api/kn/flats?regions=66&offset=0&limit=N&flatStatus=free,booked","Auth: Authorization: Basic MTpqd2U= (тот же что для всех /сервисы/api/kn/*)","Параметры: regions (через запятую), offset, limit, flatStatus, + любые из 30+ фильтров (priceFrom/To, areaFrom/To, roomCount, type, energyEff, wall, hasParking, и т.д.)","По Свердл. обл. возвращает 24 441 квартиру в продаже/брони. Через offset/limit можно качать пачками (например limit=500, ~50 запросов на регион)","Структура per-flat (17 полей):","id (int) — глобальный ID квартиры в ЕИСЖС","odsId (string) — формат objId/sectionNum/flatNum (например '64057/2/55') — связь с реестром проектных деклараций","elemId (UUID) — токен для URL детальной страницы квартиры","type (string) — Квартира-студия / 1-комнатная / 2-комнатная / 3-комнатная / 4+комнатная / Апартаменты","number (string) — номер квартиры по застройщику","isStudio (bool)","totalArea (float) — общая площадь м² (это та что продаётся)","livingArea (float) — ЖИЛАЯ площадь м² (без коридоров/санузлов) — для финмодели важно отдельно","rooms (int) — количество комнат (для студии = 1)","status (enum) — free / booked / sold","price (int) — полная цена в ₽","pricePerSquareMeter (int) — цена м² в ₽","priceChangeDate (string DD-MM-YYYY HH:MM) — дата последнего изменения цены ⭐ КЛЮЧЕВОЕ ПОЛЕ для velocity","socialMortgage (bool) — доступна соц-ипотека","numberFloors (int) — этажность дома","floor (int) — этаж этой квартиры","image {attachmentId, attachmentIdSmall, hash, size, source, type} — type='layout' = планировка квартиры. URL для скачивания: /api/ext/file/{attachmentId}?type=png","objInfo {hobjId, objTransferPlanDt, objReady100PercDt, objCommercNm, objAddr} — связь с ЖК (плановая дата передачи + дата готовности + название + адрес)","🔥 priceChangeDate — это золотая жила. Снимая снапшот раз в день, мы видим:","1) Какие квартиры подешевели/подорожали (delta price)","2) Какие квартиры перешли в booked/sold (status changes)","3) Velocity по ЖК: кол-во квартир сменивших status за период","4) Эффективность ценовой стратегии: ЖК с активными priceChangeDate (последние 7 дней) vs ЖК где цены не двигались месяцами","Это ровно то что нужно для Plan A 'плитка 3 — за какое время продастся': вывожу absorption rate (квартир/мес) для ЖК-аналогов в радиусе 5 км → проектирую на наш концепт","🛠 ETL-стратегия для backend:","1) Daily full-refresh: для каждого региона из таргетов (66=Свердл, 50=МО, 77=Москва) → loop offset/limit с шагом 500 → upsert в таблицу dom_rf_flats","2) Daily delta tracking: SQL diff dom_rf_flats vs dom_rf_flats_yesterday → вычислить (a) кто перешёл в sold, (b) кому изменилась цена, (c) кто новый. Записать в dom_rf_flat_events","3) Materialized views: median(pricePerSquareMeter) по (region, type, year_quarter), absorption_rate по hobjId (sold quarters / 30 days)","📦 SQL schema для миграции (Stage 2a):","CREATE TABLE dom_rf_flats (id BIGINT PRIMARY KEY, ods_id VARCHAR(50), elem_id VARCHAR(64), obj_id INT, hobj_id INT, type VARCHAR(50), number VARCHAR(20), is_studio BOOL, rooms SMALLINT, total_area NUMERIC(8,2), living_area NUMERIC(8,2), price NUMERIC(12,2), price_per_sqm NUMERIC(10,2), price_change_dt TIMESTAMPTZ, status VARCHAR(20), social_mortgage BOOL, floor SMALLINT, num_floors SMALLINT, layout_attachment_id VARCHAR(80), obj_commerc_nm TEXT, obj_addr TEXT, obj_transfer_plan_dt TIMESTAMPTZ, obj_ready_dt TIMESTAMPTZ, last_synced_at TIMESTAMPTZ, raw JSONB, region_cd SMALLINT)","Индексы: (region_cd), (hobj_id), (status), (type), (price_per_sqm), (price_change_dt). Для радиус-запросов нужно JOIN с dom_rf_objects по hobj_id чтобы получить geom","CREATE TABLE dom_rf_flat_events (flat_id BIGINT, event_dt TIMESTAMPTZ, event_type VARCHAR(20), old_value JSONB, new_value JSONB, PRIMARY KEY(flat_id, event_dt)) -- тип event: 'status_change', 'price_change', 'new_listing', 'delisting'","💎 Что ещё можно подсосать через этот endpoint:","Скачивать ПЛАНИРОВКИ всех квартир (image.attachmentId, type='layout') — это набор ~24K image для Свердл. Можем использовать для AI-генерации (тренировка модели на схемах квартир) или показывать пользователю аналоги","objInfo.objTransferPlanDt vs objReady100PercDt — это плановая дата передачи квартир (когда фактически передают по ДДУ) vs дата готовности дома (когда строительство закончено). Лаг между ними обычно 3-6 мес и важен для absorption analysis","🔬 Качество данных: проверил на 2 квартирах из ЛО ('LIBERTY DOM'), цены 2.6М и 2.7М ₽, площадь 22 и 23 м² — реалистично. priceChangeDate '30-11-2025' = 5 мес. назад → значит эти квартиры в LIBERTY DOM плохо продаются (цена не двигалась)","Юридический статус (повтор): данные публикуются в ЕИСЖС в соответствии с 214-ФЗ как открытая информация по строящимся объектам. Использование в коммерческом продукте легально, для реестра ПО декларируем 'интеграция с ЕИСЖС ДОМ.РФ'","MCP-инструмент aim_memory_add_facts проверен 26.04.2026 вечер — добавление фактов через прямой вызов MCP вместо python-скриптов. На будущее: для всех записей в граф предпочтителен этот путь, скрипты только если MCP-сервер недоступен."]} +{"type":"entity","name":"DomRF_API_Snapshot_Apr26","entityType":"api_spec","observations":["Дата: 26.04.2026. Полный слепок открытого API ДОМ.РФ ЕИСЖС (https://наш.дом.рф / punycode: https://xn--80az8a.xn--d1aqf.xn--p1ai). Все 25+ endpoints проверены вживую через debug-браузер.","═══ ХОСТ ═══","Base URL: https://xn--80az8a.xn--d1aqf.xn--p1ai (он же наш.дом.рф). Используй punycode-форму для прямых HTTP-вызовов из Python/Node — некоторые HTTP-клиенты ломаются на IDN.","Backup-форма URL: можно использовать https://наш.дом.рф но требует поддержки IDN на стороне клиента","═══ AUTH ═══","Группа A — БЕЗ авторизации: префиксы /portal-analytics/api/* и /portal-kn/api/*. Открыто всем.","Группа B — С авторизацией: префикс /сервисы/api/kn/*. Header: Authorization: Basic MTpqd2U= (base64 от строки '1:qwe'). Это технический токен фронта, хардкоден в JS, действителен бессрочно.","═══ RATE LIMITS ═══","Документированных лимитов нет. Эмпирически: 5 RPS безопасно, 10+ RPS начинают периодически возвращать 502 Bad Gateway или 429.","Cache-Control: max-age=900 на ответах /сервисы/api/kn/* — серверный кеш 15 минут, нет смысла дёргать чаще раза в 15 мин.","═══ ENDPOINTS BY GROUP ═══","═══ A. АНАЛИТИКА (no auth, /portal-analytics/api/*) ═══","GET /portal-analytics/api/dictionaries/regions → массив из 9 ФО, в каждом regions[] с {id, name}. id Свердл.обл = 66, Москвы = 77, МО = 50, Питер = 78, ЛО = 47.","GET /portal-analytics/api/dictionaries/developers → массив 2734 девелоперов формата {id, name}. id формат '9333_0' где 1-я часть может быть groupId, вторая devId.","GET /portal-analytics/api/dashboard/by-region?regionId=66 → массив 89 объектов на регион: {id, flatCount, area, percent, details:[{roomCountType, flatCount, area, percent}]} где roomCountType in ONE/TWO/THREE/FOUR. Без фильтра — вся РФ.","GET /portal-analytics/api/dashboard/by-developer?regionId=66 → массив 2734 объектов на застройщика, та же структура что by-region. Огромный респ ~750KB.","GET /portal-analytics/api/dashboard/by-room-count → одиночный объект {totalArea, flatCount, details:[4]}, агрегаты по комнатностям без региональной разбивки. Опц: ?regionId=66.","GET /portal-analytics/api/dashboard/by-flat-area → массив 8 бакетов FROM_0_TO_25, FROM_25_TO_35, FROM_35_TO_45, FROM_45_TO_55, FROM_55_TO_70, FROM_70_TO_85, FROM_85_TO_100, FROM_100_TO_INFINITY. С breakdown по комнатам внутри.","═══ B. PORTAL-KN (no auth, /portal-kn/api/*) ═══","GET /portal-kn/api/kn/places → {regions:[{regionCd, regionName, cities:[]}]} — регионы без городов.","GET /portal-kn/api/kn/places?regionCd=66 → один регион с массивом cities:[{cityCds:[], cityName}]. ~30 городов в Свердл.обл.","GET /portal-kn/api/sales/portal?flatStatus=free,booked®ions=66 → плоский array objId всех ЖК с продажами в регионе. По Свердл.обл — 283 ЖК.","GET /portal-kn/api/kn/seo/aggregations?objStatus=0®ionCd=66 → {livingObjBlock, nonlivingObjBlock} с {objNumber, flatsNumber, devNumber, maxPrice, minPrice, avgPrice, avgMeterPrice, maxSquare, minSquare, minObjReadyDt}. Это сводка региона без детализации.","═══ C. KN/* (auth required, /сервисы/api/kn/*) ═══","GET /сервисы/api/kn/object?objId={N} → полные данные одного ЖК. 30+ полей: hobjId, objId, developer{devId, devInn, shortName, fullName, groupName, orgForm, companyGroup}, rpdRegionCd, objAddr, shortAddr, metro{id,name,line,color,time,isWalk}, freeFlatsInfo{priceMin,numberFlats}, objCommercNm, objFloorMin/Max, objElemLivingCnt, objSquareLiving, objReady100PercDt, latitude, longitude, siteStatus, objGuarantyEscrowFlg, residentialBuildings, rpdNum, pdId, buildType, hobjRenderPhotoUrl, objPriceAVG, objPublDt, aiDescription. Поддерживает фильтр ?devId={devId} вместо objId — получаешь все объекты застройщика.","GET /сервисы/api/kn/flats?regions=66&offset=0&limit=N&flatStatus=free,booked → per-flat данные. 17 полей: id, odsId (objId/sectionNum/flatNum), elemId (UUID), type, number, isStudio, totalArea, livingArea, rooms, status (free/booked/sold), price, pricePerSquareMeter, priceChangeDate, socialMortgage, numberFloors, floor, image{attachmentId,type=layout}, objInfo{hobjId,objCommercNm,objAddr,objTransferPlanDt,objReady100PercDt}. По Свердл.обл — 24 441 квартира.","GET /сервисы/api/kn/flats/map?latitudePoint1=&latitudePoint2=&longitudePoint1=&longitudePoint2=&flatStatus=free,booked®ions=66 → per-ЖК в bbox: {data:{list:[{objId, objStatus, latitude, longitude, priceMin}]}}. Для on-demand радиус-поиска вокруг участка пользователя.","GET /сервисы/api/kn/flats/filters?regions=66&flatStatus=free,booked → диапазоны всех фильтров: {data:{meta:{list:[{name:'priceMin',values:['2644800']}, {name:'floorMin'}, {name:'areaMin'}, ...]}}}. Useful для UI sliders.","GET /сервисы/api/kn/dataForFilters → диапазон дат публикаций: {data:{min,max}}.","GET /сервисы/api/kn/meta?place=66&objStatus=0 → доступные значения объектных фильтров: objClass, energyEff [6,7,8,9], reasonProblemId, mechanism (тип финансирования: 7=эскроу, 6=без эскроу, и т.д.), wall (материал стен), transferFlg, dduFlg, objTypeCd, objStatus, soldOut.","GET /сервисы/api/kn/developers?objStatus=0&place=66&offset=0&limit=N → застройщики в регионе: {data:{list:[{id, devGkId, devInn, name}], total}}. По Свердл.обл total=170+.","GET /сервисы/api/kn/devGk?place=66&objStatus=0&offset=0&limit=N → группы компаний: {data:{list:[{id, name}], total:58}}. PRINZIP, BAZA Development, Prospect Group и т.д.","GET /сервисы/api/kn/commissioning?place=66&objStatus=0 → диапазон годов сдачи в регионе: {data:{minYear:2025, maxYear:2032}}.","GET /сервисы/api/kn/metro?place=66&objStatus=0 → метро региона: {data:{list:[{id, name, line, color}]}}. Для Свердл.обл — Екатеринбургское метро ~9 станций.","GET /сервисы/api/kn/hru/groups?place=66 → агрегированные счётчики (facets): {data:{objClass:[{id,value}], status:[], type:[], wall:[], ...}}. Это для UI левой колонки фильтров с count.","═══ D. ФАЙЛЫ ═══","GET /api/ext/file/{attachmentId}?type=png → скачать картинку (рендер ЖК или планировку квартиры). attachmentId берется из object.hobjRenderPhotoUrl или flat.image.attachmentId. Формат файла обычно PNG, иногда JPEG. Для thumbnail — attachmentIdSmall.","═══ E. АНАЛИТИКА — PAGE-LEVEL ENDPOINTS ═══","Страница /аналитика/реализация_строящихся_квартир показывает сводку по всем регионам РФ с break-down: проданная/непроданная площадь, % по диапазонам сдачи (2026-2031+), и % по проценту распроданности (0-20% / 21-40% / 41-60% / 61-80% / >80%). По Свердл.обл: 5686 тыс м² объём, 29% продано, 54% не продано, 17% продажи не открыты. Источник: ежемесячные отчёты застройщиков по 214-ФЗ, обновление 11 числа каждого месяца. ТОЧНЫЙ XHR endpoint — на этой странице грузится отдельным /portal-analytics/api/dashboard/realization или похожим, не ловил. Дошлифовать когда дойдём до этой плитки.","Страница /аналитика/распроданность-стройготовность — sold/готовность correlation. Аналогичный паттерн endpoint.","Страница /аналитика/квартирография — детали распределения по комнатностям и площадям (это уже использует /by-room-count и /by-flat-area).","Страница /аналитика/жилищное_строительство — топ застройщиков (использует /by-developer).","═══ F. РЕЕСТРЫ (потенциально дополнительные endpoints) ═══","/сервисы/единый-реестр-застройщиков — реестр компаний с ОГРН/ИНН/КПП и историей. Может иметь свой API.","/сервисы/единый-реестр-мжк — реестр многоквартирных жилых комплексов.","/сервисы/единый-реестр-жск — реестр жилищно-строительных кооперативов.","/сервисы/единый-реестр-проблемных-объектов — проблемные ЖК для риск-фильтра.","═══ ENUM REFERENCE ═══","regionId/regionCd Russia: 66=Свердл.обл, 77=Москва, 50=МО, 78=Питер, 47=ЛО, 16=Татарстан, 23=Краснодар, 61=Ростов, 54=Новосибирск, 72=Тюмень, 2=Башкирия, 25=Приморье, 26=Ставрополь, 91=Крым, 59=Пермь, 36=Воронеж, 24=Красноярск, 27=Хабаровск, 71=Тула, 74=Челябинск, 63=Самара. Полный список через GET /portal-analytics/api/dictionaries/regions.","objStatus: 0=строящийся в продаже, 1=сдан, 2=забронированы все или нет в продаже, 3=проблемный.","flatStatus: free, booked, sold (через запятую как фильтр).","roomCountType: ONE, TWO, THREE, FOUR (для 4+).","objClass: 1=Типовой, 2=Комфорт, 3=Бизнес, 4=Элитный.","wall: 1=Блоки, 2=Кирпич, 3=Панель, 4=Монолит, 5=Монолит-кирпич.","type (для квартир): 'Квартира-студия', '1-комнатная квартира', '2-комнатная квартира', '3-комнатная квартира', '4+комнатная квартира', 'Апартаменты'.","mechanism: тип финансирования. 7=эскроу с проектным финансированием, 6=без эскроу старая схема, 5/4/3/2 — варианты ЖСК, кооперативов и др.","energyEff: A++/A+/A/B/C/D — кодируется числами 6-9 (точное соответствие неизвестно, нужно проверить через UI labels).","═══ КЛЮЧЕВЫЕ ИСПОЛЬЗОВАНИЯ ДЛЯ GENDESIGN ═══","USE CASE 1 — каталог всех ЖК Свердл.обл за 2 запроса: GET /portal-kn/api/sales/portal?flatStatus=free,booked®ions=66 → массив 283 objId → for each: GET /сервисы/api/kn/object?objId={N}. Время ~1 минуту с rate-limit 5RPS.","USE CASE 2 — все per-flat по региону: GET /сервисы/api/kn/flats?regions=66&offset=0&limit=500 в цикле offset+=500 пока response.data.length>0. Для Свердл.обл 24 441 квартир = 49 запросов = ~10 секунд при 5RPS. Daily refresh.","USE CASE 3 — bbox-запрос вокруг участка пользователя (Site Finder): GET /сервисы/api/kn/flats/map?latitudePoint1=&latitudePoint2=&...®ions=66 → объекты в радиусе 5км → for each objId: enrichment через /object и /flats?objId. Кешировать в Redis на 1 час.","USE CASE 4 — velocity tracking: ежедневный snapshot /сервисы/api/kn/flats?regions=66 → diff с прошлым днём → status changes (free→booked→sold) и priceChangeDate updates. Аккумулировать в dom_rf_flat_events. Через месяц получаем точную absorption rate per ЖК.","USE CASE 5 — реалистичная финмодель цены: median(pricePerSquareMeter) для топ-20 ЖК-аналогов в радиусе 5км по той же объектной классификации (ЖК-комфорт vs наш концепт). Cross-check с Росстатом fedstat baseline.","USE CASE 6 — smart unit-mix: GET /portal-analytics/api/dashboard/by-room-count?regionId=66 + by-flat-area для региона → автоматическое предложение распределения квартир по комнатностям и площадям, основанное на том что РЕАЛЬНО строится в этом регионе.","═══ ОПЕРАЦИОННЫЕ ЗАМЕТКИ ═══","User-Agent: ставить осмысленный (например 'GenDesign-DataSync/0.1 (https://gendsgn.ru; ops@gendsgn.ru)'). ДОМ.РФ это любит.","Cache-Control: max-age=900 на серверной стороне → бессмысленно делать запрос чаще чем раз в 15 минут с одним и тем же фильтром.","При получении 502 — экспоненциальный backoff: 5s, 30s, 5min. Если 5 минут не помогло — alert в Sentry.","Юр. статус: ДОМ.РФ — государственный портал ЕИСЖС, по 214-ФЗ обязан публиковать эти данные открыто. Использование в коммерческом продукте легально. Для реестра ПО декларируем 'интеграция с открытым API ЕИСЖС ДОМ.РФ' — официальный и юридически чистый канал.","Поддержка: support email nash@domrf.ru, тел. 8-800-755-55-05. Для B2B-доступа к расширенному API → https://наш.дом.рф/сервисы для бизнеса (отдельный поддомен с enterprise-функциями).","Версионирование API: респонсы содержат header 'accept-version: ${env.CI_COMMIT_REF_NAME}_sha1:${env.CI_COMMIT_SHORT_SHA}#${env.CI_PIPELINE_ID}_20.04.2026 12:58:31' — это GitLab CI placeholders в release-pipeline ДОМ.РФ. Видно что они деплоят с GitLab и переменные не интерполировались на бэкенде корректно — мелкая утечка о их инфре, но не критично. Если когда-нибудь endpoint поменяется — мы ничего не сможем гарантировать."]} +{"type":"entity","name":"DomRF_Integration_Docs_Apr26","entityType":"api_spec","observations":["Дата: 26.04.2026. Официальная страница интеграции ДОМ.РФ ЕИСЖС: https://наш.дом.рф/интеграция","⚠ ЮРИДИЧЕСКИЙ СТАТУС API СЖС: предназначено ТОЛЬКО ДЛЯ УПОЛНОМОЧЕННЫХ БАНКОВ согласно Постановлению Правительства РФ № 697 от 18.06.2018. Напрямую подключиться НЕ МОЖЕМ — мы не банк. Но публичный фронт-API наш.дом.рф (то что мы выяснили) легален и доступен всем.","5 различных API в составе ЕИСЖС (вкладки на странице /интеграция):","1) API СЖС (Сведения о Жилищном Строительстве) — главное API для банков, даёт данные по застройщикам, ГК, ЖК, объектам строительства. Это та же информация что на наш.дом.рф в публичной форме.","2) API Уведомления ОПО — опасные производственные объекты. Не наш.","3) API Агрегатор ПФ — Проектное Финансирование, инфо о договорах эскроу. Для банков.","4) API НСИ — Нормативно-Справочная Информация, классификаторы. Справочники.","5) Сервисы СМЭВ — Межведомственное Электронное Взаимодействие. Для госорганов.","Официальные документы на скачивание (все DOCX/PDF публичные):","Соглашение об информационном взаимодействии v5.1 (08.02.2026): /site/binaries/content/assets/domrf/support/developer/agreement/соглашение-об-информационном-взаимодействии.-v5.1..docx — юридический договор присоединения по ст. 428 ГК РФ.","Презентация API СЖС v2 (03.12.2020): /site/binaries/content/assets/domrf/support/developer/presentation/еисжс-апи-сжс_v2.pdf — PDF обзор возможностей.","Спецификация API СЖС v1.3.0 (31.10.2020): /site/binaries/content/assets/domrf/support/developer/specification/api-сжс.-спецификация-api-v1.3.0.docx — полный OpenAPI-style документ с методами, форматами и ограничениями. Это бы хорошо разобрать для выявления всех полей и эндпоинтов, но спецификация для банковского API — форматы могут отличаться от нашего фронт-API.","Регламент информационного взаимодействия v1.5 (06.10.2020) + в тексте страницы упоминается v1.4: /site/binaries/content/assets/domrf/support/developer/reglament/еисжс-регламент-информационного-взаимодействия-участников-v1_5.docx (и v1_4.docx)","На странице есть кнопка 'ЗАГРУЗИТЬ ЕЩЕ' — вероятно в полном списке есть WSDL/OpenAPI в машинно-читаемом формате.","Официальный 7-шаговый flow подключения к API СЖС (для банков):","1. Ознакомление с Регламентом информационного взаимодействия","2. Запрос на nash@domrf.ru → назначается менеджер ЕИСЖС","3. Подписать 2 экземпляра Соглашения и ОТПРАВИТЬ физической почтой в ПАО ДОМ.РФ по адресу: 125009, г. Москва, Воздвиженка, д. 10 (с пометкой 'в ЕИСЖС')","4. Настройка информационной системы на своей стороне","5. Заявка на подключение к интеграционной (тестовой) среде → физпочта","6. Тестирование + протокол функционального тестирования","7. Заявка на промышленную среду → физпочта. Всего процесс занимает от 1 до 3 месяцев.","КОНТАКТЫ: nash@domrf.ru, 8-800-755-55-05, ПАО ДОМ.РФ, 125009 Москва, Воздвиженка 10.","СТРАТЕГИЧЕСКИЙ вывод для GenDesign:","Нам самим с API СЖС официально подключиться НЕЛЬЗЯ — по ПП №697 это только для уполномоченных кредитных организаций с эскроу-счетами. Имеет смысл искать банка-партнёра на этапе Раунд А или позже — бы их вход давал нам связку с банковским API. Банк ДОМ.РФ или Сбер — логичные partner candidates.","Но в Discovery не нужно — публичный фронт-API наш.дом.рф (описан в DomRF_API_Snapshot_Apr26 и связанных) даёт 99% того же что B2B-API. Разница: официальный API имеет SLA и stable contracts, фронт-API может измениться без уведомления.","Для реестра ПО: в заявке используем формулировку 'интеграция с открытыми данными ЕИСЖС ДОМ.РФ' — описываем публичные эндпоинты. Не 'Подключение к API СЖС' — это юридически неправда."]} +{"type":"entity","name":"DomRF_OfficialSpecs_vs_FrontAPI_Apr26","entityType":"api_spec","observations":["Дата: 26.04.2026 вечер. Сравнение 4 официальных спек ДОМ.РФ ЕИСЖС (СЖС v1.3.0, НСИ v1.0.1, УОПО v1.0.2, АПФ v2.2) с публичным фронт-API наш.дом.рф, который мы исследовали ранее (DomRF_API_Snapshot_Apr26).","═══ ГЛАВНЫЙ ВЫВОД ═══","В спеках ДОМ.РФ описан СОВЕРШЕННО ДРУГОЙ API чем тот публичный, которым мы пользуемся. Это два разных продукта на одном портале:","(а) Официальный B2B API ЕИСЖС /gw/{sgs|rdm|mpo|apf}/api/v1/* — OAuth2 + JWT, только для зарегистрированных банков-Участников. Спеки описывают именно его.","(б) Публичный фронт-API наш.дом.рф /portal-analytics/*, /portal-kn/*, /сервисы/api/kn/* — недокументированный, используется JS на сайте, ключ Basic MTpqd2U= хардкоден в фронте. Это то, что мы парсим.","═══ AUTH СРАВНЕНИЕ ═══","Спеки (СЖС/НСИ/УОПО/АПФ): OAuth2 client credentials flow → POST /idm-services/auth/realms/external-eisgs-idm/protocol/openid-connect/token c grant_type=client_credentials&client_id&client_secret → ответ access_token+expires_in 300с → header `Authorization: Bearer {jwt}`. Token ttl 300с, refresh ttl 1800с, max 20 одновременных сессий.","Фронт /сервисы/api/kn/*: header `Authorization: Basic MTpqd2U=` (base64 от '1:qwe'). НЕ упомянут ни в одной официальной спеке. Это служебная заглушка фронтового приложения.","═══ КЛЮЧ Basic MTpqd2U= — ЛЕГАЛЬНОСТЬ ═══","В спеках этот ключ ВООБЩЕ не существует. Спеки знают только Bearer JWT. Использование Basic MTpqd2U= = технически работает, юридически = парсинг публичного портала. Не нарушает 214-ФЗ (данные открытые), но не защищено никаким соглашением — может отвалиться без предупреждения. На реестр ПО формулировку «по API ДОМ.РФ» подавать НЕЛЬЗЯ — мы не в B2B-канале.","═══ BASE URLs ═══","СЖС: https://наш.дом.рф/gw/sgs/api/v1/ (промышленная) | https://int.domrf.ru/gw/sgs/api/v1/ (интеграционная)","НСИ: https://наш.дом.рф/gw/rdm/api/v1/ | https://int.domrf.ru/gw/rdm/api/v1/","УОПО: https://наш.дом.рф/gw/mpo/api/v1/ | https://int.domrf.ru/gw/mpo/api/v1/","АПФ: путь /project-financing/* без gw-префикса в спеке, но по той же модели хостов","Все официальные базовые URI находятся под /gw/, наш фронт-API под /portal-analytics, /portal-kn, /сервисы — пути не пересекаются.","═══ RATE LIMITS (ОФИЦИАЛЬНЫЕ vs ФРОНТ) ═══","СЖС: 400 запросов/24ч, 10/мин, page size max 50. КРАЙНЕ строго.","НСИ: 3000/24ч, 60/мин, page size max 1000.","УОПО: 300/24ч, 10/мин (только GET-методы).","АПФ: документированных лимитов в спеке не указано.","Фронт /сервисы/api/kn/*: ~5 RPS безопасно, 10+ начинает 502/429. Cache-Control max-age=900 (15 мин). Эмпирически.","⚠ Даже если бы получили официальный СЖС-доступ — 400 запросов/сутки означает что нельзя выкачать все ЖК Свердл.обл (~283 ЖК × несколько endpoints = превышение лимита).","═══ МЕТОДЫ СЖС v1.3.0 (ОФИЦИАЛЬНЫЕ) ═══","30+ GET endpoints, ВСЕ только READ:","/version, /model/current — служебные (XSD-схема)","/complexes, /complexes/{id}, /complexes/{id}/construction-objects — жилые комплексы","/construction-objects, /construction-objects/{id}, /construction-objects/{id}/extended, /construction-objects/{id}/documents, /construction-objects/{id}/files/{file-id}, /construction-objects/{id}/photos — объекты строительства","/developers, /developers/{id}, /developers/{id}/extended, /developers/{id}/complexes, /developers/{id}/construction-objects, /developers/{id}/documents, /developers/{id}/files/{file-id} — застройщики","/company-groups, /company-groups/{id}, /company-groups/{id}/developers, /company-groups/{id}/complexes, /company-groups/{id}/construction-objects — группы компаний","/problem-objects, /problem-objects/{id} — проблемные объекты","═══ СОВПАДЕНИЕ ОФИЦИАЛЬНОГО СЖС vs НАШ ПУБЛИЧНЫЙ ФРОНТ-API ═══","Сущности и поля во многом совпадают: Объект строительства расширенные (этажность, материал стен/перекрытий, тип отделки, класс, кол-во машиномест, площадь, плановая дата ввода) — то же самое что в /сервисы/api/kn/object?objId.","Группа компаний, Застройщик, ЖК — структура полей пересекается с фронт-API (id, name, ИНН/ОГРН/КПП, регионы хоз.деятельности, координаты).","Списки документов (проектные декларации, разрешения на строительство, фотографии хода стр-ва) — есть в обоих API.","Проблемные объекты — есть и там и там, GET /problem-objects ↔ /portal-analytics + признак is_problem_object на construction-objects.","═══ ⚠ ЧТО ЕСТЬ В ФРОНТ-API И НЕТ В ОФИЦИАЛЬНОМ СЖС ═══","PER-FLAT данные (24 441 квартир по Свердл.обл с priceChangeDate, pricePerSquareMeter, status free/booked/sold) — В СЖС v1.3.0 НЕТ! Спека говорит только агрегаты по ЖК (количество квартир, жилая площадь). Per-flat detail — это эксклюзивно публичный фронт.","priceChangeDate (поле для velocity-tracking) — нет ни в одном официальном API.","flats/map (bbox-поиск) — нет в официальной спеке. Только список objects с координатами.","flats/filters (диапазоны фильтров для UI) — нет в спеке.","Аналитические агрегаты (by-room-count, by-flat-area, by-region, by-developer) — нет как отдельных endpoints в официальном API. Это нагрузка для фронт-портала аналитики.","⭐ Это значит: даже если получим B2B-доступ к СЖС через банк-партнёр, СВОЙ velocity-tracker и распределения комнатностей мы СМОЖЕМ собрать ТОЛЬКО через публичный фронт-API. Официальная B2B-замена для нашего use-case не существует.","═══ НСИ — НОРМАТИВНО-СПРАВОЧНАЯ ИНФОРМАЦИЯ ═══","15+ методов /refBook/*, /plainData/*, /version/*, /compare/*. Это только справочники (классификаторы), которые публикуются в реестре справочников НСИ. Например в спеке УОПО упоминаются справочники D024 (основания отказа 214-ФЗ) и D025 (218-ФЗ). Для нашего проекта — почти не пригодится, разве что для маппинга кодов.","═══ УОПО — УВЕДОМЛЕНИЯ ОБ ОТКАЗАХ В ОПЕРАЦИЯХ ═══","Это API для уполномоченных банков (УБ, УБСЖС) и Фонда защиты прав дольщиков. POST /prohibited-notifications, /misuse-notifications + GET статусов передачи в Фонд/УОИВ. Роли в матрице: УБ, УБСЖС, Администратор. ⚠ Доступ только для банков с эскроу-счетами (по 214-ФЗ ст.18.2 и 218-ФЗ ст.9.2-9.4). Для GenDesign бесполезен.","═══ АПФ — АГРЕГАТОР ПРОЕКТНОГО ФИНАНСИРОВАНИЯ ═══","Сервис для банков получать заявки от застройщиков на проектное финансирование. GET /project-financing/applications, GET /project-financing/applications/{guid} (огромная анкета: финпоказатели, бюджет проекта, бенефициары, СРО, имущественные обеспечения, ЗУ, ИРД, ГПЗУ, РНС и т.д.) + PATCH /project-financing/applications/{guid} (подтверждение получения) + GET /project-financing/files/{guid} (вложения). Scope: fin-applications.readwrite.base.","⚠ ОЧЕНЬ интересные данные для финмодели (нормативная стоимость, бюджет проекта, требуемое финансирование), но доступ ТОЛЬКО для банков-получателей заявок. Не наш сценарий, но потенциальная цель партнёрства с банком на Раунд А.","═══ ИТОГ — ЧТО ЭТО ЗНАЧИТ ДЛЯ GENDESIGN ═══","1) Стратегия Discovery не меняется. Используем публичный фронт-API наш.дом.рф по сноапшоту DomRF_API_Snapshot_Apr26. Per-flat + velocity = только там.","2) Ключ Basic MTpqd2U= официальной спекой не покрыт. Юридически — парсинг публичного портала. На сайт реестра ПО формулировка должна быть аккуратная: 'интеграция с открытыми данными ЕИСЖС' или 'парсинг открытого портала наш.дом.рф', НЕ 'API ДОМ.РФ' (это название за официальным B2B-каналом).","3) Риск — фронт может отвалиться без предупреждения (ключ перевыпустят, поменяют URL). Митигация: ежедневный smoke-test, fallback на /portal-analytics (no auth) для агрегатов.","4) План B на случай блокировки фронта: партнёрство с банком-получателем СЖС API. Подходящие partner candidates: Банк ДОМ.РФ, Сбер. Дает stable contract с SLA, но 400 req/24h и нет per-flat.","5) НСИ-справочники (D024 коды отказов и т.д.) на сегодня неактуальны. Можно использовать как маппинг если понадобится в финмодели коды отказов от банков.","6) АПФ — потенциальный отдельный поток данных для нашей финмодели, но требует вход через банк-партнёр.","═══ ИЗМЕНЕНИЯ В ВЕРСИЯХ СЖС ═══","Спека v1.3.0 от 03.11.2020 — последняя на момент скачивания файла. Основные изменения от v1.0 → v1.3.0:","v1.1.0 (29.05.2020): добавлены /model/current, /construction-objects/{id}/files (старый /documents/files помечен deprecated), /developers/{id}/files (аналогично).","v1.2.0 (07.09.2020): добавлены /problem-objects + поле is_problem_object в объекте.","v1.3.0 (03.11.2020): добавлены query-параметры address и is_problem_object в /construction-objects.","С 2020 года новых версий не публиковали (или мы не нашли). На странице /интеграция могут быть более свежие документы.","═══ КОНТАКТЫ ОФИЦИАЛЬНОГО ДОСТУПА (повтор из DomRF_Integration_Docs_Apr26) ═══","Email: nash@domrf.ru. Тел: 8-800-755-55-05. Адрес для физпочты: 125009 Москва, Воздвиженка 10 (с пометкой 'в ЕИСЖС'). Процесс подключения 1-3 месяца, по 7 шагам, требует двух подписанных Соглашений + IP-whitelist. Мы — не банк, поэтому СЖС/УОПО/АПФ напрямую недоступны."]} {"type":"relation","from":"Project_GenDesign","to":"TechStack_v2.2","relationType":"uses"} {"type":"relation","from":"Project_GenDesign","to":"NorthStar_DiscoveryMVP","relationType":"targets"} {"type":"relation","from":"Project_GenDesign","to":"Phase0_DiscoveryMVP","relationType":"currently_executes"}