gendesign/frontend/src/app
Light1YT 67b65c8d8a
All checks were successful
CI / frontend-tests (pull_request) Successful in 57s
CI / openapi-codegen-check (pull_request) Successful in 1m49s
CI / changes (pull_request) Successful in 6s
CI / backend-tests (pull_request) Successful in 9m54s
feat(site-finder): bridge финмодели (DCF) в кокпит Investment Clearance (epic #1881 PR-4)
Investment Clearance в site-finder кокпите больше не «—»: синтезируем лёгкий
ТЭП из buildability участка (площадь + предельные параметры зоны НСПД/ПЗЗ —
КСИТ/%застройки/этажность) → прогоняем через полноценную финмодель (каскад
затрат PR-1 + калибр.цена PR-2 + помесячный DCF PR-3) → GDV/Cost/Profit/ROI/
IRR/NPV/PBP в кокпите.

Backend:
- new app/services/site_finder/parcel_financial.py (ЧИСТЫЕ функции, без БД):
  synthesize_teap_from_buildability (GFA=area×max_far, degradation pct+floors;
  residential=GFA×eff; apartments/parking — нормативы teap.py, не дублируются)
  + synthesize_parcel_financial (housing_class из цены, development_type из
  этажей, land_cost=кадастровая). None когда нельзя строить МКД / нет зонинга /
  нет площади.
- parcels.py: 1 вызов в try/except (hot-path-safe → None при сбое) + ключ
  financial_estimate в /analyze. Схема не тронута (AnalyzeResponse extra=allow,
  codegen не нужен). +18 тестов.

Frontend:
- ParcelFinancialEstimate тип (site-finder.ts, hand-typed).
- adaptInvestmentClearance(financial)/adaptFinanceDrawer(financial): реальные
  числа (GDV/Cost/Profit/ROI/IRR + NPV + срок окуп.) или честный placeholder
  когда null. Локализация класса/типа (high_rise→высотная). Прокинут analysis
  через PticaBottomGrid/drawer-registry. +6 тестов, 144 passed.

HEAVY caveat везде: ОРИЕНТИРОВОЧНАЯ модель по МАКС.застройке НСПД, НЕ реальная
концепция; land=кадастровая (не рыночная); график — типовой; IRR proxy-флаг.
mypy strict clean (generative.*), ruff/tsc/lint clean.

Закрывает эпик #1881 (финмодель = полноценная DCF, видна в кокпите).
Follow-up: финансирование (кредит/займы), §22 sales-pace, гео-радиус калибровки.

Refs #1881
2026-06-23 22:44:04 +05:00
..
%5F%5Fpreview fix(week-review): дожим ревью — #1569, #1590, #1642 + feat #801 MSW-preview 2026-06-17 11:24:34 +05:00
_legacy feat(sf-fe-a12): Landing redesign + PilotCTA с real B3/B4 data (v2 rebased) (#367) 2026-05-18 05:16:57 +00:00
admin fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
analytics fix(analytics): drop false market verdict from per-object Sold % KpiCard (#1407) 2026-06-17 20:22:29 +03:00
concept fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
data-sources fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
docs/b2b-channels fix(docs): block javascript: URLs in renderMarkdown href (XSS guard) (#131) 2026-05-14 23:39:47 +03:00
legacy/site-finder fix(site-finder): honest POI-score label + drop duplicate MOI column (audit #1871 P2) 2026-06-23 12:29:02 +05:00
site-finder feat(site-finder): bridge финмодели (DCF) в кокпит Investment Clearance (epic #1881 PR-4) 2026-06-23 22:44:04 +05:00
trade-in fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
error.tsx fix(site-finder): handle 202 on-demand geometry in analyze + error boundaries (#1001) 2026-06-05 16:12:21 +05:00
globals.css fix(ptica): load Inter, surface map legend, drop flag, honest product chart, home link 2026-06-21 01:41:13 +05:00
layout.tsx fix(ptica): load Inter, surface map legend, drop flag, honest product chart, home link 2026-06-21 01:41:13 +05:00
page.tsx fix(site-finder): honest POI-score label + drop duplicate MOI column (audit #1871 P2) 2026-06-23 12:29:02 +05:00
providers.tsx add interactive analytics dashboard for Sverdlovsk market and PRINZIP 2026-04-27 16:55:30 +03:00