# Цели Discovery MVP — Python-стек **Версия:** 2.2 **Дата:** апрель 2026 **Статус:** Discovery MVP, месяцы 1–3 **Изменение vs v2.1:** переход с .NET на Python для backend, TypeScript для frontend --- ## 1. North Star Metric **К концу месяца 3 получить 3 платящих пилотных клиента (≥30 тыс. ₽/мес каждый) и подать заявку в реестр российского ПО — это даст право пройти в Раунд А на 20–25 млн ₽.** Этот критерий не зависит от стека и остаётся неизменным. --- ## 2. Технический стек MVP ### Backend - **Язык:** Python 3.12 - **Web-фреймворк:** FastAPI 0.115+ - **ORM:** SQLAlchemy 2.0 + GeoAlchemy2 (для PostGIS) - **Миграции:** Alembic - **Валидация:** Pydantic v2 - **Background tasks:** Celery + Redis (или RQ для простоты) - **HTTP-клиент:** httpx (async) ### Геометрия и геоданные - **Shapely 2.0** — основная геометрия (полигоны, отступы, пересечения) - **GeoPandas 1.0** — работа с табличными геоданными - **Pyproj** — преобразования систем координат (WGS84 ↔ UTM ↔ МСК-66 для Свердловской обл.) - **Rasterio** — если будем работать с растровыми данными (DEM, спутник) ### ML - **XGBoost** — основной алгоритм скоринга участков - **scikit-learn** — препроцессинг, метрики, простые модели - **pandas** — обработка табличных данных - **NumPy** — численные расчёты ### Экспорт документов - **ReportLab** или **WeasyPrint** — PDF-отчёты (WeasyPrint удобнее для HTML-вёрстки) - **ezdxf** — экспорт в DXF для архитекторов - **openpyxl** — экспорт в Excel ### База данных - **PostgreSQL 16** + **PostGIS 3.4** — основная БД - **Redis 7** — кэш и очереди ### Frontend - **Next.js 15** + **React 19** + **TypeScript 5** - **Tailwind CSS 4** — стили - **shadcn/ui** — базовые компоненты - **TanStack Query** — работа с API - **Mapbox GL JS** или **Leaflet + OSM** — карты ### Инфраструктура - **Yandex Cloud** или **VK Cloud** (российские) - **Docker + Docker Compose** для разработки - **GitHub Actions** для CI/CD - **Sentry** для мониторинга ошибок ### Dev tools - **uv** или **poetry** — менеджер зависимостей (uv быстрее) - **ruff** — линтер + форматтер (заменяет black + flake8 + isort) - **mypy** — статическая типизация - **pytest** — тесты --- ## 3. Цели по модулю A: Site Finder ### Функциональные цели (Discovery MVP) **Загрузка данных** - Парсер Росреестра ПКК для Свердловской области - Сохранение ≥ 1000 участков в PostgreSQL/PostGIS - Атрибуты: кадастровый номер, ВРИ, площадь, границы (геометрия), адрес - Скрипт ежесуточной синхронизации (Celery beat) **Фильтрация** - 3 базовых фильтра: ВРИ, площадь (от-до), регион/город - Геопространственный фильтр: участки внутри произвольно нарисованного полигона - Текстовый поиск по адресу/кадастровому номеру **Скоринг** - 3 критерия в Discovery: расстояние до центра города, наличие инфраструктуры в радиусе 1 км (POI из OSM), средняя цена жилья в районе (ДОМ.РФ) - Веса критериев настраиваемые пользователем - Итоговый рейтинг 0–100 с разбивкой по компонентам **Отображение** - Карта (Mapbox/Leaflet) с участками-полигонами - Цветовая градация по рейтингу - Табличный список с сортировкой по любому параметру - Детальная карточка участка с обоснованием рейтинга **Интеграция с Generative Design** - Кнопка «Обсчитать концепцию» в детальной карточке - Передача геометрии участка через внутренний API в модуль B - Возврат результатов в карточку ### Что НЕ делаем в Discovery MVP - API ЕГРН с собственниками (требует платежей и юридического оформления — отложено на Фазу 1) - Изохроны Яндекс.Карт (хорошо бы иметь, но не критично — Фаза 1) - Скоринг по 15+ параметрам — Фаза 1 - Множественные регионы (только Свердловская обл.) — Фаза 1 - Алертинг на новые подходящие участки — Фаза 2 --- ## 4. Цели по модулю B: Generative Design (пятно застройки) ### Функциональные цели (Discovery MVP) **Вход** - Полигон участка (ручная отрисовка на карте или передача из Site Finder) - Параметры пользователя: класс жилья (эконом/комфорт/бизнес), целевая этажность, тип застройки (точечная/средне-этажная/многоэтажная) - Региональные нормативы (для Discovery — Свердловская обл., ПЗЗ Екатеринбурга) **Алгоритм генерации** - Расчёт нормативных отступов от границ участка (через Shapely buffer) - Размещение прямоугольных корпусов МКД методом «жадного заполнения»: подбор сетки положений, проверка отступов между корпусами и от границ - 3 варианта: «максимум площади», «максимум инсоляции дворов», «оптимальный микс» - Время генерации одного варианта ≤ 10 секунд **Расчёт ТЭП** - Площадь застройки, общая площадь корпусов - Жилая площадь по типам квартир (1/2/3-комн в задаваемых пропорциях) - Количество квартир, средняя площадь - КЭП (коэффициент использования территории), плотность застройки - Площадь придомовой территории, парковка (упрощённо: норматив × количество квартир) **Финансовая модель** - Выручка: жилая площадь × средняя цена м² по району (из ДОМ.РФ) - Себестоимость: квадратный метр × норматив (из ФАУ «Главгосэкспертиза») - Стоимость земли (вход параметром) - Валовая маржа, чистая прибыль (упрощённая модель без налогов) - Базовый IRR (без дисконтирования cash flow по периодам — это в Фазе 1) **Экспорт** - PDF-отчёт с тремя вариантами, графиками, ТЭП и финмоделью (WeasyPrint) - Excel с расчётами (openpyxl) - DXF упрощённой схемы участка (ezdxf) — для передачи архитектору ### Что НЕ делаем в Discovery MVP - Расчёт инсоляции по СП 52.13330 — Фаза 1, месяцы 7–9 - Произвольная форма корпусов (только прямоугольники) — Фаза 1 - Парковка по детальному нормативу — Фаза 1 - УДС (улично-дорожная сеть) — Фаза 1 - Социнфраструктура (школы, сады, поликлиники) — Фаза 1 - 3D-визуализация (Three.js) — Фаза 2 (год 2) - Квартирография (планировки квартир внутри корпусов) — Фаза 2 - Фотореалистичный рендер — Год 2+ --- ## 5. Цели по продажам и валидации ### Месяц 1 - 50 целевых клиентов в CRM (можно использовать Notion/AmoCRM/HubSpot Free) - 5 cold-outreach писем отправлено - 3 встречи назначено - ООО зарегистрировано, расчётный счёт открыт - Прототип Site Finder работает локально с 1000 участков ### Месяц 2 - 15 встреч кумулятивно проведено - 2 LOI (Letters of Intent) подписано - 1 платящий пилот подписан (≥ 30 тыс. ₽/мес) - Демо прототипа на реальных участках клиентов - Первая статья в профильном медиа (DigitalDeveloper, vc.ru, Bisnow Russia) ### Месяц 3 - 20+ встреч кумулятивно - 3 платящих пилота - 7+ LOI - 1 региональная администрация в активных переговорах - Заявка в реестр российского ПО подана - Подготовлен инвестиционный deck для Раунда А (12 слайдов) - Финансовая модель в Excel на 5 лет - Data room для инвесторов --- ## 6. Технические цели MVP ### Качество кода - Все публичные API эндпоинты типизированы (Pydantic) - Покрытие тестами ключевой бизнес-логики ≥ 60% - Линтер ruff проходит без ошибок - mypy --strict проходит для core-модулей ### Производительность - Time to First Value ≤ 10 минут (от регистрации до первого обсчёта) - Загрузка участков по фильтру ≤ 2 секунд - Генерация одного варианта концепции ≤ 10 секунд - Генерация PDF-отчёта ≤ 5 секунд ### Надёжность - 99% uptime в рабочие часы (для демо клиентам) - Все ошибки в Sentry - Бэкап БД ежедневно - Recovery time ≤ 2 часов ### Безопасность - Все данные пользователей шифруются at rest (PostgreSQL TDE или приложением) - HTTPS обязательно - API Rate limiting - JWT-авторизация с refresh-токенами - Логирование всех доступов к чувствительным данным (требование под реестр ПО) --- ## 7. Структура репозитория (предлагаемая) ``` project-root/ ├── backend/ │ ├── app/ │ │ ├── main.py # FastAPI entrypoint │ │ ├── api/ │ │ │ ├── v1/ │ │ │ │ ├── parcels.py # Site Finder endpoints │ │ │ │ ├── concepts.py # Generative Design endpoints │ │ │ │ └── auth.py │ │ ├── core/ │ │ │ ├── config.py # Pydantic Settings │ │ │ ├── security.py # JWT, hashing │ │ │ └── db.py # SQLAlchemy session │ │ ├── models/ # SQLAlchemy ORM │ │ ├── schemas/ # Pydantic schemas │ │ ├── services/ │ │ │ ├── site_finder/ │ │ │ │ ├── parser.py # Росреестр, ФИАС │ │ │ │ ├── scorer.py # XGBoost скоринг │ │ │ │ └── filters.py │ │ │ ├── generative/ │ │ │ │ ├── geometry.py # Shapely алгоритмы │ │ │ │ ├── teap.py # Расчёт ТЭП │ │ │ │ └── financial.py # Финмодель │ │ │ └── exporters/ │ │ │ ├── pdf.py # WeasyPrint │ │ │ ├── excel.py # openpyxl │ │ │ └── dxf.py # ezdxf │ │ └── workers/ # Celery tasks │ ├── tests/ │ ├── alembic/ # миграции │ ├── pyproject.toml # uv/poetry │ └── Dockerfile ├── frontend/ │ ├── app/ # Next.js 15 App Router │ ├── components/ │ ├── lib/ │ └── package.json ├── docker-compose.yml # dev окружение ├── .github/workflows/ # CI/CD └── README.md ``` --- ## 8. План на первый месяц (под Python) ### Неделя 1 - Установить **uv** (`pip install uv`) - Создать проект: `uv init project-root && uv add fastapi sqlalchemy geoalchemy2 shapely pydantic` - Поднять PostgreSQL + PostGIS в Docker (`postgis/postgis:16-3.4`) - Первый эндпоинт `GET /parcels` возвращает заглушку - Зарегистрировать ИТ-ООО (УСН 6%, ESOP пул в устав) ### Неделя 2 - Парсер Росреестра ПКК на httpx (асинхронный) - Загрузка 1000 участков Екатеринбурга в БД - Базовая модель `Parcel` в SQLAlchemy с PostGIS-геометрией - Первый фильтр по площади и ВРИ - Дизайнер-фрилансер делает 7 экранов в Figma ### Неделя 3 - Frontend Next.js: страница «Site Finder» с картой Leaflet - API endpoint `POST /parcels/search` с фильтрами - 5 cold-outreach писем целевым клиентам - 3 встречи назначены ### Неделя 4 - Базовый скоринг (расстояние до центра + цена района) - Первый прототип задеплоен в Yandex Cloud - 5 встреч проведено - Лендинг опубликован - Первая статья в DigitalDeveloper или vc.ru опубликована --- ## 9. Что меняется в Custom Instructions проекта В системный промпт проекта в Claude добавьте: ``` ТЕХНИЧЕСКИЙ СТЕК (актуальный с v2.2) - Backend: Python 3.12 + FastAPI + SQLAlchemy 2.0 + Pydantic v2 - Геометрия: Shapely 2.0 + GeoPandas + GeoAlchemy2 - ML: XGBoost + scikit-learn + pandas - БД: PostgreSQL 16 + PostGIS 3.4 - Очереди: Redis + Celery - Frontend: Next.js 15 + React 19 + TypeScript + Tailwind + shadcn/ui - Карты: Mapbox GL JS или Leaflet - Экспорт: WeasyPrint (PDF), ezdxf (DXF), openpyxl (Excel) - Облако: Yandex Cloud - Dev: uv (зависимости), ruff (линт+формат), mypy (типы), pytest КОММЕНТАРИЙ Я перешёл с .NET на Python для MVP, потому что геометрия и ML в Python-экосистеме намного сильнее. Опыт в C#/.NET 6 лет — это база, на Python переключаюсь сейчас. При написании кода учитывай, что я понимаю backend архитектуру отлично, но синтаксис и идиомы Python ещё догоняю — давай явный type-hints и комментарии к pythonic-конструкциям, которые могут быть непривычны после C#. ``` --- ## 10. Cost of switching: что реально потратите ### Время на «вкатывание» - Неделя 1: 60% производительности vs привычный .NET - Недели 2–3: 80% - С недели 4: 100% и быстрее, чем на .NET (за счёт экосистемы) ### Что почитать в первую очередь - **«Python for C# Developers»** (бесплатные статьи на Real Python) - Документация **FastAPI** — отличная, начать с tutorial - **Shapely manual** — для понимания геометрии - **SQLAlchemy 2.0 docs** — async раздел ### Что НЕ читать сразу - Книги «Python для начинающих» — вы не начинающий программист - Гайды по Django — вам нужен FastAPI - Старые туториалы (Python 3.8 и ниже) — слишком много изменилось ### Полезные привычки от .NET, которые работают и в Python - Dependency Injection (FastAPI поддерживает через Depends) - Strong typing (Pydantic + mypy) - Repository pattern (через SQLAlchemy) - Async/await (есть и работает) ### Что отучиться - `Dictionary` → используй Pydantic-модели - LINQ → list comprehensions + библиотека `more_itertools` - async всегда — в Python async только когда нужно (I/O bound) - Heavy interfaces — Python предпочитает duck typing и Protocol --- ## 11. Acceptance Criteria для MVP К концу месяца 3 продукт считается готовым к Раунду А, если: **Функционально:** - [ ] Site Finder загружает и показывает 1000+ участков Свердловской обл. - [ ] Фильтр работает по 3 параметрам - [ ] Скоринг по 3 критериям с настраиваемыми весами - [ ] Generative Design генерирует 3 варианта за ≤ 10 секунд - [ ] Расчёт ТЭП и базовая финмодель работают - [ ] PDF/Excel/DXF экспорт работает - [ ] Связь модулей (передача участка) работает **Бизнесово:** - [ ] 3 платящих пилота - [ ] 7+ LOI - [ ] Заявка в реестр ПО подана - [ ] 1 администрация в переговорах - [ ] Инвестиционный deck готов - [ ] Финмодель на 5 лет готова **Технически:** - [ ] 60%+ покрытие тестами core-логики - [ ] mypy --strict проходит - [ ] Деплой в Yandex Cloud работает - [ ] Sentry подключен - [ ] Бэкапы БД ежедневно Если все три блока выполнены — идём в Раунд А. Если выполнены 2 из 3 (например, технически + функционально, но только 2 пилота) — возможно продление Фазы 0 на 1–2 месяца за счёт собственных средств. Если выполнен только 1 блок или меньше — стоп проекта. --- **Документ создан в апреле 2026. Версия 2.2 (Python-стек).**