gendesign/docs/MVP_Goals_Python.md

20 KiB
Raw Permalink Blame History

Цели Discovery MVP — Python-стек

Версия: 2.2 Дата: апрель 2026 Статус: Discovery MVP, месяцы 13 Изменение vs v2.1: переход с .NET на Python для backend, TypeScript для frontend


1. North Star Metric

К концу месяца 3 получить 3 платящих пилотных клиента (≥30 тыс. ₽/мес каждый) и подать заявку в реестр российского ПО — это даст право пройти в Раунд А на 2025 млн ₽.

Этот критерий не зависит от стека и остаётся неизменным.


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), средняя цена жилья в районе (ДОМ.РФ)
  • Веса критериев настраиваемые пользователем
  • Итоговый рейтинг 0100 с разбивкой по компонентам

Отображение

  • Карта (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, месяцы 79
  • Произвольная форма корпусов (только прямоугольники) — Фаза 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
  • Недели 23: 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<string, object> → используй 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 на 12 месяца за счёт собственных средств. Если выполнен только 1 блок или меньше — стоп проекта.


Документ создан в апреле 2026. Версия 2.2 (Python-стек).