feat(cockpit): поверхностить financial_estimate в Development Scan / Investment Clearance (#1881 rank-5) #1894

Merged
bot-backend merged 1 commit from feat/cockpit-financial-honesty into main 2026-06-24 16:20:20 +00:00
Collaborator

Контекст

После PR #1891 (decouple зон-резолвера) и #1892 (area-gate ЗОУИТ) финансовая модель
отрабатывает для строящегося большинства участков. Числа стали значимыми — теперь их
нужно отобразить пользователю.

Изменения (3 файла, frontend-only)

ptica-adapt.ts

  • adaptEconomyCard(financial?) — новый параметр. При наличии financial_estimate
    карточка «Экономика» в Development Scan показывает реальные числа (выручка/маржа/ROI/IRR)
    с честным caption источника цены (рынок vs норматив класса). Без финмодели — прежние
    плейсхолдеры «после финмодели», badge «предв.». С финмоделью — badge «ориент.».
  • adaptFinanceDrawer — добавлена строка «Горизонт продаж» (sales_duration_months).
    Caption говорит источник: «дефолт-норматив» (schedule_is_default=true) или
    «по темпу поглощения рынка» (velocity-driven, #1890).
  • adaptInvestmentClearance — когда financing_enabled=true: прибыль до
    финансирования переименована «Profit · до финанс.», добавлен bignum «После финанс.»
    с net_profit_after_financing_rub и caption ставки кредита.
  • adaptSiteVerdictverdict_label === "С ограничениями" → word="С ограничениями",
    tone="warn" (было "Приобретать"/good). Корректно для участков с ЗОУИТ area-gate (#1892).

DevelopmentScan.tsx

  • Передаёт analysis.financial_estimate в adaptEconomyCard.

ptica-adapt.honesty.test.ts

  • +6 тест-кейсов: economy null/real, Горизонт продаж × 2 ветки, clearance financing,
    verdict «С ограничениями» / «Можно».
  • Итого: 20/20 тестов.

Проверки

  • tsc --noEmit — чисто
  • vitest — 153/153 (полный suite)
  • code-reviewer APPROVE

isReal-contract

Все новые isReal:true поля привязаны исключительно к backend-полям (number,
non-nullable). sales_duration_months (number | null) guard-нуто через != null
с fallback в notReal("нет данных"). Ни одного fabricated числа.

## Контекст После PR #1891 (decouple зон-резолвера) и #1892 (area-gate ЗОУИТ) финансовая модель отрабатывает для строящегося большинства участков. Числа стали значимыми — теперь их нужно отобразить пользователю. ## Изменения (3 файла, frontend-only) ### `ptica-adapt.ts` - **`adaptEconomyCard(financial?)`** — новый параметр. При наличии `financial_estimate` карточка «Экономика» в Development Scan показывает реальные числа (выручка/маржа/ROI/IRR) с честным caption источника цены (рынок vs норматив класса). Без финмодели — прежние плейсхолдеры «после финмодели», badge «предв.». С финмоделью — badge «ориент.». - **`adaptFinanceDrawer`** — добавлена строка «Горизонт продаж» (`sales_duration_months`). Caption говорит источник: «дефолт-норматив» (`schedule_is_default=true`) или «по темпу поглощения рынка» (velocity-driven, #1890). - **`adaptInvestmentClearance`** — когда `financing_enabled=true`: прибыль до финансирования переименована «Profit · до финанс.», добавлен bignum «После финанс.» с `net_profit_after_financing_rub` и caption ставки кредита. - **`adaptSiteVerdict`** — `verdict_label === "С ограничениями"` → word="С ограничениями", tone="warn" (было "Приобретать"/good). Корректно для участков с ЗОУИТ area-gate (#1892). ### `DevelopmentScan.tsx` - Передаёт `analysis.financial_estimate` в `adaptEconomyCard`. ### `ptica-adapt.honesty.test.ts` - +6 тест-кейсов: economy null/real, Горизонт продаж × 2 ветки, clearance financing, verdict «С ограничениями» / «Можно». - Итого: **20/20** тестов. ## Проверки - `tsc --noEmit` — чисто - `vitest` — 153/153 (полный suite) - `code-reviewer` — ✅ APPROVE ## isReal-contract Все новые `isReal:true` поля привязаны исключительно к backend-полям (`number`, non-nullable). `sales_duration_months` (`number | null`) guard-нуто через `!= null` с fallback в `notReal("нет данных")`. Ни одного fabricated числа.
bot-backend added 1 commit 2026-06-24 16:17:41 +00:00
feat(cockpit): поверхностить financial_estimate в Development Scan / Investment Clearance
All checks were successful
CI / changes (pull_request) Successful in 6s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Successful in 55s
CI / openapi-codegen-check (pull_request) Successful in 1m53s
c1541962dc
- adaptEconomyCard(financial?) — показывает выручку/маржу/ROI/IRR из финмодели
  когда financial_estimate присутствует; badge «предв.» → «ориент.», caption
  честно говорит источник цены (рынок vs норматив класса), IRR — proxy-флаг
- DevelopmentScan: передаёт analysis.financial_estimate в adaptEconomyCard
- adaptFinanceDrawer: добавлена строка «Горизонт продаж» (sales_duration_months
  + caption: дефолт-норматив vs по темпу поглощения рынка)
- adaptInvestmentClearance: financing_enabled=true → «Profit · до финанс.» +
  новый bignum «После финанс.» с post-financing net profit и caption ставки
- adaptSiteVerdict: verdict_label «С ограничениями» → word=«С ограничениями»
  tone=warn (вместо Приобретать/good), корректно для ЗОУИТ area-gate parcels
- Тесты: +6 кейсов (economy real/null, sales horizon, clearance financing,
  verdict «С ограничениями» / «Можно»); 20/20 pass
bot-backend merged commit 5a73f1d0b6 into main 2026-06-24 16:20:20 +00:00
bot-backend deleted branch feat/cockpit-financial-honesty 2026-06-24 16:20:20 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1894
No description provided.