feat(sf): in-app future-supply pressure + pipeline competitors (6.6) (#958) #1125
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#1125
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/forecast-future-supply-competitors"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что
Подсекция «6.6 Будущее предложение и конкуренты» — рендер §16-трассируемого обоснования под прогнозом предложения, которое раньше жило только в экспортах:
future_market.future_supply(§9.3) — давление будущего предложения: открытый/скрытый сток, поглощение, месяцев давления, будущий ввод в горизонте, индекс давления.future_market.future_competitors(§9.7) — pipeline-конкуренты, взвешенные по релевантности (имя, класс, расстояние, квартир, скорость/мес, релевантность-бар), сортировка по релевантности.Относится к #958 (UI экран прогноза); визуализирует данные #950 (3-слойный склад/future-supply).
Честность (тема всей сессии)
FutureSupply/FutureSupplyBreakdown/FutureCompetitorвforecast.tsбыли over-non-nullable — исправлены под backend (FutureSupplyPressure.as_dict/Competitor-схему): null-метрики типизированы + рендерятся «нет данных», НЕ фабричный 0.supply_layersпуст до Monday-воркера → SQL даёт 0 строк → open/hidden = 0-не-null. Если гейтить по ним, панель показала бы «Открытый сток: 0 ед.» для КАЖДОГО участка — ложно читается как «будущего предложения нет = безопасно строить», хотя правда «данные ещё не загружены». Теперь панель в этом состоянии скрывается (таблица конкурентов всё равно рендерится); когда появится реальный index — панель показывает и стоки (настоящий 0 тогда честен).hasSupplySignal— единый helper вforecast-helpers.ts(дедуп parent/child гейтов).Качество
code-reviewer: ✅ APPROVE — оба гейта пройдены (нет null-регрессии у существующих consumer'ов future_supply; панель честно гейтится в not-loaded состоянии); тип-фикс сверен с backend; field-path top-level (assembler лифтит primary-horizon); no-regression к 6.1-6.5; нейтральные бары (relevance/index без валентности); RU-метки сверены с экспортами; токены, noany, no deps. Обе MINOR-правки (honesty-гейт + дедуп предиката) внесены.npm run buildзелёный.Тест-план (post-deploy)
/site-finder/analysis/66:41:0702048:27→ Секция 6 → «6.6 Будущее предложение и конкуренты»: таблица pipeline-конкурентов (ЖК «Малевич» и др., сорт по релевантности); панель давления предложения СКРЫТА покаsupply_layersпуст (до Monday-воркера) — не показывает ложные «0 ед.».