import Link from "next/link"; interface Route { href: string; label: string; desc: string; } const SECTIONS: { title: string; routes: Route[] }[] = [ { title: "Аналитика", routes: [ { href: "/analytics", label: "Свердл рынок", desc: "Динамика 14 мес · парадокс «строят vs покупают» · pipeline · районы ЕКБ.", }, { href: "/analytics/prinzip", label: "PRINZIP drill-down", desc: "Velocity vs benchmark · gap-bar к рынку · ЖК с sparkline · инсайты.", }, { href: "/analytics/developers", label: "Топ девелоперов", desc: "Sortable leaderboard · velocity scatter · сравнение sold% по месяцам.", }, { href: "/analytics/objects/60160", label: "Карточка ЖК (пример: Парк Победы)", desc: "KPI · sale-chart · корпуса ЖК (cad_quarter + buildings) · POI-таблица · фото-галерея. /analytics/objects/{obj_id}.", }, { href: "/analytics/recommend", label: "Рекомендатор квартирографии", desc: "Район + площадь + класс → распределение по 5 бакетам, цены p25/median/p75, выручка, comparable ЖК. Слайдеры под проект.", }, ], }, { title: "Site Finder", routes: [ { href: "/site-finder", label: "Анализ участка по cad-номеру", desc: "Вводишь кадастр → карта + score соц-инфраструктуры (школы/сады/магазины/парки +вес, трамваи −вес) + 20 ближайших конкурентов с подсветкой района. Данные: OSM POI обновляются еженедельно.", }, ], }, { title: "Админка (Token-protected)", routes: [ { href: "/admin/scrape/all", label: "Скрапер — единая панель", desc: "Все джобы (kn/nspd_geo/objective) в одном месте · job_settings inline-edit · bulk Свердл geo backfill · ScrapeLogsPanel.", }, { href: "/admin/leads", label: "Лиды PRINZIP CRM", desc: "Воронка Sankey · конверсия по месяцам · KPI · таблица лидов с фильтрами.", }, ], }, { title: "Generative (WIP)", routes: [ { href: "/concept", label: "Concept (Stage 1)", desc: "Импорт полигона → 3 варианта застройки. WIP — Stage 1a-c.", }, ], }, ]; export default function HomePage() { return (

GenDesign

Generative Design + Site Finder — Discovery MVP. Свердл рынок & PRINZIP.

{SECTIONS.map((section) => (

{section.title}

{section.routes.map((r) => (
{r.href}
{r.label}
{r.desc}
))}
))}
); }