gendesign/backend/app/schemas
Light1YT 1ae8ae3ca0
Some checks failed
CI / openapi-codegen-check (pull_request) Successful in 1m52s
CI / backend-tests (pull_request) Failing after 11m33s
CI / changes (pull_request) Successful in 6s
CI / frontend-tests (pull_request) Successful in 54s
feat(financial): levered (equity) IRR for the developer financial model
Walk the existing debt schedule to emit the equity holder's monthly cashflow
((1−LTC) share of outflows; residual inflow after debt service) and run the
same DCF IRR + roi-proxy fallback over it. Degenerate cases (LTC≥1, no equity
at risk) → 0.0 / proxy, never a fabricated return. Levered IRR можно выше или
НИЖЕ проектной (отрицательный леверидж, если проект не покрывает стоимость долга
15%) — показываем честно, со знаком (Unicode «−»).

Инвариант Σ equity_cf == net_profit_after_financing держится точно. Unlevered
NPV/IRR/PBP и Σ cashflow == net_profit НЕ затронуты (levered чисто additive).

Schema: additive levered_irr / levered_irr_is_proxy на FinancialModel
(api-types.ts регенерён точной CI-цепочкой openapi-typescript+prettier).
Frontend: строка «IRR на собственные средства» в finance-drawer кокпита +
concept-каскаде (drawer-only — не раздуваем above-the-fold KPI), proxy/negative
помечаются честно. Завершает паритет с Excel-эталоном «Авангардная 13» (IRR).

Deep-review  (equity-cashflow математика независимо перепроверена, инвариант,
codegen byte-identical, blast radius contained).

Refs #1881
2026-06-25 13:25:25 +05:00
..
__init__.py init 2026-04-25 13:45:19 +03:00
chat.py fix(week-review): backend-аудит v2 — 82 фиксов (#1660) 2026-06-17 17:13:38 +00:00
complex_buildings.py feat(api,analytics): bulk geo backfill + complex_buildings query 2026-05-11 15:56:17 +03:00
concept.py feat(financial): levered (equity) IRR for the developer financial model 2026-06-25 13:25:25 +05:00
custom_poi.py feat(#254): user_custom_pois — backend schema + CRUD + scoring integration 2026-05-17 09:34:33 +03:00
insight.py feat(insights): manual-entry Insight entity CRUD + §19 audit (#948 part A) 2026-06-08 12:41:39 +05:00
job_settings.py feat(jobs): centralized job_settings API + DB-driven beat schedule 2026-05-11 15:38:13 +03:00
location.py feat(location): district-level Location entity + indices (#948 part B) 2026-06-08 13:28:19 +05:00
market.py feat(analytics): velocity-anomaly alerts (#17) + ARN ДДУ price indicator (#99) 2026-06-13 22:04:49 +05:00
nspd_bulk.py feat(site-finder): per-building помещения/машино-места + parking_ratio (on-demand MVP, #96) 2026-06-14 18:48:16 +05:00
own_project.py feat(site-finder): own-portfolio data source for §25.3 cannibalization (#1169 PR1) 2026-06-08 16:21:53 +05:00
parcel.py feat(site-finder): additive objective_lots price fallback for competitors (#307 OBJ-3) (#1332) 2026-06-14 16:10:02 +00:00
recommend.py fix(schemas): expose per-bucket elasticity + velocity_source в RecommendBucket (#1204) 2026-06-13 05:14:05 +00:00
trade_in.py fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00