gendesign/frontend/src/components/site-finder/ptica
Light1YT adf3ec7c00
All checks were successful
CI / changes (pull_request) Successful in 6s
CI / frontend-tests (pull_request) Successful in 1m5s
CI / openapi-codegen-check (pull_request) Successful in 1m59s
CI / backend-tests (pull_request) Successful in 10m9s
fix(site-finder): velocity fallback 4500→750, coverage/proxy disclosure, market_trend staleness honesty (audit #1871 P2)
Три honesty/correctness-фикса из audit-issue #1871 (🟠 P2). Все факты
подтверждены prod-DB + разведкой. ETL не трогаем (отдельная задача).

velocity.py:
- _EKB_MEDIAN_FALLBACK 4500→750 (audit-verified медиана ЕКБ 593-766;
  4500 завышало знаменатель нормализации 7.6× → занижало velocity_score
  при DB-error fallback, latent). Консервативно 750 (верх диапазона).
- VelocityResult + as_dict() раскрывают: objective_coverage_pct,
  proxy_used, proxy_sqm_per_deal — теперь видно что объём rosreestr-пути
  фабрикуется count×45 м²/сделка при низком покрытии Objective (<50%).
  Проброшено во все 4 конструктора, additive.

parcels.py (market_trend producer):
- Различать «источник устарел» от «нет сделок». rosreestr_deals
  MAX(period_start_date)=2026-01-01 (stale 5.5 мес) → recent-окно пусто →
  раньше голый null. Теперь status ∈ {ok, source_stale, no_deals} +
  as_of_date + label + recent_deals_count. MAX(deal_date) добавлен в CTE.
  Consumer scoring читает recent_deals_count защищённо (без регрессии).

frontend (types + MarketTrendBlock + VelocityBlock + ptica market-drawer
+ Section3 verdict + legacy guard):
- staleness/no_deals → честный caveat вместо фейкового тренда.
- velocity → caption «объём оценочный (прокси N м²/сделка, покрытие P%)».
- formatAsOfMonth парсит YYYY-MM напрямую (TZ-safe).
- Типы MarketTrend/Velocity расширены (optional, backward-compat;
  отсутствие status = "ok").

Тесты: +3 velocity unit + extended as_dict contract. 17 velocity passed,
138 frontend vitest passed.

Refs #1871
2026-06-23 12:04:08 +05:00
..
__tests__ test(ptica): use tracked mock fixtures instead of git-excluded __preview (CI fix) 2026-06-23 11:25:33 +05:00
cockpit feat(ptica): live 3D massing in Инсоляция card + honest Recommended Product verdict 2026-06-21 03:11:15 +05:00
compare feat(ptica): build Отчёты + Сравнение cockpit tabs (PR#3) 2026-06-20 15:58:50 +05:00
drawers Merge pull request 'feat(ptica): wire real КСИТ/height/zone/density into cockpit (frontend of #1843)' (#1849) from feat/ptica-real-ksit-frontend into main 2026-06-20 19:05:39 +00:00
massing feat(ptica): live 3D massing in Инсоляция card + honest Recommended Product verdict 2026-06-21 03:11:15 +05:00
reports feat(ptica): close tab prototype-parity gaps (Сценарии 6.6 + Отчёты Параметры) 2026-06-21 11:34:11 +05:00
scenarios fix(forecasting): honest scenarios collapse when β rate-sensitivity gate fails (audit #1871 P1) 2026-06-22 19:06:22 +05:00
BuildabilityGauge.tsx feat(ptica): complete cockpit lower-grid + bottom-grid sections 2026-06-21 00:33:15 +05:00
DevelopmentScan.tsx fix(ptica): populate scan cards with real /analyze data + product tabs + map zoom 2026-06-21 02:18:20 +05:00
InvestScoreBlock.tsx fix(ptica): visual parity 1:1 with prototype (incl. ОКС empty-card stretch) 2026-06-21 01:10:36 +05:00
ParcelPassportCard.tsx feat(ptica): right-slider detail drawer system + 17 drawers wired (PR#4) 2026-06-20 16:16:39 +05:00
ptica-adapt.ts fix(site-finder): velocity fallback 4500→750, coverage/proxy disclosure, market_trend staleness honesty (audit #1871 P2) 2026-06-23 12:04:08 +05:00
PticaHero.tsx fix(ptica): restore left-rail to 7 icon+label items with working nav 2026-06-21 00:45:24 +05:00
PticaMap.tsx feat(ptica): rich dark cockpit map + ПТИЦА as the default analysis route 2026-06-21 00:04:00 +05:00
PticaMapInner.tsx feat(ptica): map glyph pins + compass, equal-height grids, full-height rail; dark Site Finder 2026-06-21 03:41:13 +05:00
PticaPlaceholderPanel.tsx feat(site-finder): ПТИЦА dark cockpit — increment 1 (shell + hero + Development Scan) 2026-06-20 15:29:53 +05:00
PticaShell.tsx fix(ptica): load Inter, surface map legend, drop flag, honest product chart, home link 2026-06-21 01:41:13 +05:00
ScanCard.tsx fix(ptica): visual parity 1:1 with prototype (incl. ОКС empty-card stretch) 2026-06-21 01:10:36 +05:00