GenDesign — full migration from GitHub including issues/PR/wiki (2026-05-16)
Find a file
2026-05-10 22:44:45 +05:00
.github/workflows sprint1: nspd scraper industrialization, per-bucket elasticity, cadastre cross-check, sentry releases 2026-04-30 21:51:19 +03:00
backend feat(objective): full sync pipeline + dynamic admin config 2026-05-10 19:54:15 +03:00
data feat(objective): full sync pipeline + dynamic admin config 2026-05-10 19:54:15 +03:00
docs Initial commit: Discovery MVP docs (v2.1 + v2.2) 2026-04-25 08:40:09 +03:00
frontend fix ui 2026-05-10 20:16:26 +03:00
memory Memory: +rel Project_GenDesign→SiteFinder_v0_2_May08 (deploys), SiteFinder_v0_2_May08→MVP_Scope_AreaSelect_Apr25 (contradicts... (2026-05-10 22:44:45 +05) 2026-05-10 22:44:45 +05:00
ops ops: alembic baseline, pre-commit, TIGER cleanup, pg_dump scripts 2026-04-26 13:08:51 +03:00
site-finder Import Site Finder app from analysis/ vibe-coding session 2026-05-10 22:42:25 +05:00
.editorconfig init 2026-04-25 13:45:19 +03:00
.env.example Fix env defaults: use Docker network hostnames + parametrize compose 2026-04-25 19:36:10 +03:00
.gitignore feat(objective): full sync pipeline + dynamic admin config 2026-05-10 19:54:15 +03:00
.pre-commit-config.yaml ops: alembic baseline, pre-commit, TIGER cleanup, pg_dump scripts 2026-04-26 13:08:51 +03:00
Caddyfile ops: real domain in Caddyfile + ignore egg-info 2026-04-26 12:49:20 +03:00
docker-compose.prod.yml feat(objective): full sync pipeline + dynamic admin config 2026-05-10 19:54:15 +03:00
docker-compose.yml ship #13-16: multi-target Dockerfile, per-object drill-in, CRM pipeline, 2026-04-27 19:32:37 +03:00
Makefile ops: alembic baseline, pre-commit, TIGER cleanup, pg_dump scripts 2026-04-26 13:08:51 +03:00
README.md fix+chore: NSPD migration applied to prod, README trim, analytics backlog +5 2026-04-30 23:04:19 +03:00
sshkey.txt add log 2026-04-27 18:52:21 +03:00

Generative Design + Site Finder

Две продуктовые линии в одной воронке: Site Finder (AI-подбор инвестиционных земельных участков) + Generative Design (автоматическая генерация концепций застройки) для девелоперов РФ. Целевой регион Discovery — Свердловская обл. (ЕКБ, ПЗЗ, МСК-66).

North Star

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


Текущий статус (апрель 2026)

Live: https://gendsgn.ru/ — HTTP/2+HTTP/3, валидный TLS, /health {"status":"ok"}. Полный CI/CD: GitHub Actions → GHCR → SSH-deploy на Beget VPS. Sentry активен (release tracking привязан к git-sha).

Слой Статус
Аналитический калькулятор /analytics/recommend (Tier 3 per-bucket эластичность, кадастр vs рынок)
DOM.РФ kn-API скрейпер (442 строящихся ЖК Свердл, sale_graph + infra + photos) Celery beat + admin UI
Rosreestr CSV-сделки 2024Q1—2026Q1 (9 квартирных партиций, 7M строк)
NSPD кадастровые кварталы + здания (709 cad-кварталов, 10 590 cad_buildings ЕКБ) Celery beat + admin UI
OSM ekb_districts_geom (PostGIS-полигоны 8 районов ЕКБ)
Concept page (/concept) — Stage 1 Generative 🟡 skeleton
Site Finder (/site-finder) — Stage 2 🔴 заглушка

Подробности и текущий backlogIssues, milestones по этапам.


Quick start (локально)

Требования: Docker Desktop, Node.js 20+, uv для backend dev.

cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.env
docker compose up -d --build
curl http://localhost:8000/health   # → {"status":"ok","environment":"dev"}
# Frontend:  http://localhost:3000
# Swagger:   http://localhost:8000/docs

Полезные make-таргеты: logs, backend-shell, migrate, test, lint, typecheck, codegen (TS-типы из OpenAPI).


Архитектура

Backend: Python 3.12, FastAPI, SQLAlchemy 2.0, GeoAlchemy2, Pydantic v2, Celery + Redis, httpx, Shapely 2, scikit-learn. БД: PostgreSQL 16 + PostGIS 3.4 (партиционированные rosreestr_deals, GIST на geom-полях, ~50 предметных таблиц). Frontend: Next.js 15, React 19, TypeScript 5, Tailwind 4, TanStack Query, Leaflet/Mapbox, ECharts. Экспорт: WeasyPrint (PDF), ezdxf (DXF), openpyxl (Excel). Dev: uv lockfile, ruff, mypy strict (на core + generative), pytest, pre-commit hooks.

Структура монорепо:

backend/    FastAPI app, services (analytics_queries, scrapers, generative, site_finder), workers (Celery)
frontend/   Next.js app router (analytics, admin, concept, site-finder)
data/sql/   ETL артефакты — миграции схемы, загрузчики rosreestr/anton/nspd
ops/        backup.sh + deploy скрипты
docs/       стратегия (снимок) — актуальное состояние в графе памяти
memory/     hardlink на C:\mcp\.aim\memory-gendesign.jsonl (knowledge graph)
.github/workflows/  deploy.yml (build → GHCR → SSH-deploy)

Аналитика — что доступно

В прод-БД ~50 предметных таблиц:

  • domrf_kn_* — DOM.РФ объекты, квартиры, sale_graph, infrastructure, photos (1500+ ЖК Свердл).
  • rosreestr_deals — партиционированные ДДУ/ДКП-сделки 2024Q1—2026Q1, ~7M строк, 27 мес истории.
  • cad_quarters_geom + cad_buildings — NSPD кадастровые кварталы и здания (cost_value, year_built, floors, geom).
  • ekb_districts_geom — PostGIS-полигоны OSM для spatial-join.
  • cbr_mortgage_series, yandex_realty_zk, domrf_realization, sber_ddf_metrics — макро/cross-validation.

Калькулятор /analytics/recommend считает квартирографию (5 size-бакетов) с per-bucket эластичностью через регрессию sale_graph, нормировкой на район/класс/конкурентов, кадастр-vs-рынок cross-check, и инверсным режимом «требуемая цена для срока X мес».

Подробное описание схемы БД, helper-views, FK и 27.04 history — в графе памяти, сущности Analytics_Dashboard_Apr27, DomRF_Lazy_Loaded_Apr27_2026, Anton_Imported_Apr27_2026, NSPD_Scrape_Complete_Apr30. См. также data/sql/*.sql (DDL артефакты).


Production хостинг

Beget Cloud, Москва, 2 vCPU / 4 GB / 40 GB NVMe. Стоимость ~1 140 ₽/мес сервер + ~17 ₽/мес домен.

5 контейнеров через docker-compose.prod.yml: postgres + redis + backend (FastAPI) + worker + beat (Celery, Chromium только в worker) + frontend + caddy (auto-TLS Let's Encrypt). Backend/frontend bind на 127.0.0.1 — наружу только Caddy.

SSH-only по ключу к non-root пользователю gendesign, fail2ban активен. UFW: 22/80/443.

GitHub Actions deploy (.github/workflows/deploy.yml):

  1. Build обоих образов (backend lean + worker-with-chromium + frontend)
  2. Push в приватный GHCR
  3. SSH git pull, пишет SENTRY_RELEASE=$IMAGE_TAG в backend/.env.runtime, compose pull && up -d, caddy reload, curl /health

GitHub Secrets: DEPLOY_HOST, DEPLOY_USER, DEPLOY_SSH_KEY, DEPLOY_PORT. Сервер авторизуется в GHCR однократно через PAT с read:packages.

Триггеры миграции на Yandex Cloud: 3-й платящий пилот / Раунд А / госзаказ (нужен реестр ПО) / БД >10 GB / >50 RPS. На YC ~1015 тыс ₽/мес.

Операционные грабли

  • docker compose restart НЕ перечитывает env_file: — после правки .env всегда up -d --force-recreate --no-deps backend.
  • deploy.yml использует git reset --hard origin/main — ручные правки в /opt/gendesign будут стёрты при следующем деплое (.env-файлы переживут — в .gitignore).
  • На проде всегда указывать -f docker-compose.prod.yml (без него поднимет dev compose без Caddy).
  • caddy reload не сбрасывает retry-queue для ACME. При смене hostname с битым cert-state: docker volume rm gendesign_caddy_data && up -d caddy.

Roadmap (12 недель)

Stage Сроки Что Acceptance
0 нед. 1 Скелет монорепо, CI, прод curl /health = ok
Sprint 1 конец апр 2026 NSPD-скрейпер + per-bucket эластичность + кадастр cross-check + Sentry release tracking recommend_mix Tier 3 в проде
1a нед. 23 Shapely-сервис, отступы, API-контракт /concept (#5) GeoJSON → 3 заглушки
1b нед. 45 Greedy-алгоритм, 3 стратегии, STRtree (#12) 3 варианта ≤15с на 1 га
1c нед. 67 ТЭП + финмодель + PDF/Excel/DXF (#6) Продаваемый артефакт
2a нед. 89 ПКК-парсер + sales_tracker (#7) ≥1000 участков ЕКБ
2b нед. 1011 Скоринг + API + UI Site Finder (#8) Карта с цветовой градацией
2c нед. 12 Site Finder ↔ Generative + реестр ПО (#9) 3 платящих пилота

Аналитический backlog: #17 velocity-anomaly, #18 ekb_districts median refresh, #19 competitor-360, #20 mortgage-rate sensitivity, #21 cad_buildings filters в Site Finder.


Команда и память проекта

2 фуллстек-разработчика, part-time 20 ч/нед, ритм: 1 синк/нед, daily-async в Telegram, PR-review обязательный, trunk-based. Codegen TS-типов из Pydantic — npm run codegen.

Все решения, факты, KPI, протоколы валидации хранятся в графе памяти (memory/memory-gendesign.jsonl, hardlink на C:\mcp\.aim\memory-gendesign.jsonl), не в .md-документах. Правило (Feedback_MemoryFirst): источник правды = граф, документы = снимки. Синхронизация между коллегами — через git pull/push.

Подключение коллеги к knowledge-graph (#11) — пошаговая инструкция в issue.


Полезные ссылки

🌐 Production https://gendsgn.ru/
🩺 Health https://gendsgn.ru/health
📚 OpenAPI https://gendsgn.ru/openapi.json · Swagger UI
Backlog Issues · Milestones
Деплой GitHub Actions · GHCR пакеты
Мониторинг Sentry
Инфра Beget VPS cp.beget.com/cloud/... · DNS

Стратегические документы (снимки): docs/MVP_Goals_Python.md, docs/Бизнес-план v2.1 - Site Finder + Roadmap 12 месяцев.md. При расхождении с графом — доверяем графу.