From 13119f9cb52ba99f93065db409c6d3d4e321be93 Mon Sep 17 00:00:00 2001 From: lekss361 Date: Mon, 11 May 2026 23:36:02 +0300 Subject: [PATCH] feat(docs): /docs/b2b-channels (rendered) + /docs/b2b-channels.md (raw) for sharing --- frontend/next.config.ts | 12 ++ frontend/public/docs/b2b-channels.md | 84 ++++++++++++++ frontend/src/app/docs/b2b-channels/page.tsx | 83 ++++++++++++++ .../app/docs/b2b-channels/renderMarkdown.ts | 103 ++++++++++++++++++ 4 files changed, 282 insertions(+) create mode 100644 frontend/public/docs/b2b-channels.md create mode 100644 frontend/src/app/docs/b2b-channels/page.tsx create mode 100644 frontend/src/app/docs/b2b-channels/renderMarkdown.ts diff --git a/frontend/next.config.ts b/frontend/next.config.ts index 891ee6d7..dd8fb5a8 100644 --- a/frontend/next.config.ts +++ b/frontend/next.config.ts @@ -33,6 +33,18 @@ const nextConfig: NextConfig = { }, ]; }, + // Markdown в public/docs/ — отдаём с text/markdown + charset, чтобы + // браузер показывал inline (не download). + async headers() { + return [ + { + source: "/docs/:path*.md", + headers: [ + { key: "Content-Type", value: "text/markdown; charset=utf-8" }, + ], + }, + ]; + }, }; export default nextConfig; diff --git a/frontend/public/docs/b2b-channels.md b/frontend/public/docs/b2b-channels.md new file mode 100644 index 00000000..efb4c48a --- /dev/null +++ b/frontend/public/docs/b2b-channels.md @@ -0,0 +1,84 @@ +# B2B-каналы для site-finder данных + +**Эшелон:** 🤝 B2B / коммерческий канал — для Макса + +## Контекст / проблема + +Текущий scoring строится на open-data (OSM, ДОМ.РФ public API, ФГИС ТП HTML, ДДУ из открытых выгрузок). Это покрывает ~70% сигналов, но **30% решающих факторов для МКД требуют B2B-договорённостей** с разными контрагентами. + +Этот документ — **реестр всех известных B2B-вопросов**, которые надо отдать Максу для проработки/договорённостей. По мере появления — комментарии. + +## Реестр B2B-направлений + +### 1. Инженерные сети (РСО) — высокий приоритет + +- **МРСК Урала (электроэнергия):** доступная мощность по подстанции, прогноз очерёдности подключения, тариф за кВт мощности + - Вопрос: есть ли API/выгрузка по нагрузке per substation? Иначе нужен подписанный договор обмена данными. +- **МУП «Водоканал» Екатеринбурга:** наличие магистральных сетей в radius 200м, мощность, точки подключения + - Вопрос: предоставляют ли GIS-слой публичных сетей? Условия? +- **Газпром межрегионгаз / ГРО** — газоснабжение +- **СТК (Свердловская теплоснабжающая компания) / Т Плюс** — теплосеть, доступная нагрузка + +**Альтернатива:** покупка от одного агрегатора (есть провайдеры типа ТехУслуги/Атон) — узнать у Макса контакты. + +### 2. ЗОУИТ из ФГИС ТП — high priority для G3 + +- **Минэкономразвития РФ / Росреестр** — ФГИС ТП (fgistp.economy.gov.ru) даёт shape ЗОУИТ, но через личный кабинет / HTML-парсинг. Возможен ли B2B-доступ к структурированным выгрузкам? +- **Прокадастр / EGRN.reestr.net** — платные API ~10-30K ₽/мес выдают декодированные ЗОУИТ. Узнать у Макса какой провайдер удобнее. + +### 3. ПЗЗ — medium priority для G1 + +- **Минстрой Свердл / Администрация ЕКБ** — официальный shape ПЗЗ с параметрами. data.midural.ru может не отдавать полноту. +- Узнать у Макса контакт в Минстрое. + +### 4. Шахматки застройщиков — high priority для data moat + +- **Топ-7 застройщиков Екб** (Атомстрой, Брусника, ТЭН, Стройтек, Прогресс, УГМК, КОРТРОС) — публичные шахматки на сайтах +- Web-scrape технически возможен, но **юр-партнёрство снижает риск исков** +- Из SalesTracking_Strategy_Apr25: «партнёрство возамен аналитики» с топ-3 +- Узнать у Макса, кто открыт к диалогу + +### 5. Аналитика продаж конкурентов — medium priority для D5 + +- **Объектив API** — уже используем (Антон), но ограниченный план + - Узнать про upgrade тариф и full Свердл coverage +- **Сбер ДДФ** — есть `sber_ddf_metrics` в БД, но не полно + - Узнать про подписку + +### 6. Демография — medium priority для I1 + +- **Росстат** — публично, но per-район ЕКБ грануляр­ность OKATO/OKTMO +- Альтернатива: купить срез у Финама/Спарка/etc + +### 7. CRM данных других девелоперов — long-term для D5 + +- Сейчас только PRINZIP (через Антона) +- B2B-предложение «вы даёте свой CRM, мы аналитику соседей» — нужны 2-3 договорённости для значимой агрегации + +### 8. ОКН (объекты культурного наследия) + +- Свердл реестр не структурирован, нужен HTML-парсинг +- Узнать про официальный shape от Управления ОКН Свердл + +## Что от Макса + +- ✅ Подтвердить приоритеты в реестре (что критично сейчас vs «можно подождать») +- ✅ Контакты в РСО, Минстрое, Минэкономразвития +- ✅ Бюджет на платные API (Прокадастр ≈30K ₽/мес, Объектив upgrade — узнать прайс) +- ✅ Аналог LOI или MOU с топ-3 застройщиками Екб +- ✅ Кто готов давать данные за аналитику (partnership offer) + +## Acceptance + +- [ ] Этот документ — **постоянный реестр** (живёт до Раунда А) +- [ ] Каждый new B2B-вопрос → добавление в раздел с тегом контрагента +- [ ] Раз в 2 недели — sync с Максом, статусы переводятся (📞 contacted / ✅ agreed / ❌ declined) + +## Owner + +- **Coordinator:** main session ↔ Макс +- Реализация после получения каналов: соответствующий worker-агент (database-expert для shapefile import, backend-engineer для API integration) + +## Effort + +multi-week (не technical, organizational) diff --git a/frontend/src/app/docs/b2b-channels/page.tsx b/frontend/src/app/docs/b2b-channels/page.tsx new file mode 100644 index 00000000..cdbc76fe --- /dev/null +++ b/frontend/src/app/docs/b2b-channels/page.tsx @@ -0,0 +1,83 @@ +import fs from "node:fs"; +import path from "node:path"; +import Link from "next/link"; + +import { renderMarkdown } from "./renderMarkdown"; + +export const metadata = { + title: "B2B-каналы для site-finder · GenDesign", + description: "Реестр B2B-вопросов для координации с Максом", +}; + +export default function B2BChannelsPage() { + const mdPath = path.join(process.cwd(), "public", "docs", "b2b-channels.md"); + const raw = fs.readFileSync(mdPath, "utf-8"); + + return ( +
+
+ + ← Главная + + + ↓ Скачать .md + +
+ +
+ +