fix(tradein-v2): пустая выборка сделок больше не рисуется нулями — «0,00 млн · −100%» зелёным исчезает #3328
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3328
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/3320-v2-honest-zeros"
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?
Closes #3320, пп. 1-3 (п.4 про бейдж квоты закрыт ранее в #3326). Аудит 01-02.09, линза v2-front.
Пункт 1 (high) — count=0 рендерился как данные
Бэкенд при отсутствии сделок по улице возвращает нули по схеме (не трогали), фронт пропускал их как числа: «0,00 млн ₽ · −100% к цене объявления» зелёным. Фикс — один guard
usableStreetDeals()на границе маппера (count <= 0или медиана не > 0 →null), применён во всех четырёх местах-потребителях:mapResultPanel,mapSummary,mapSources, KPI вmapHistory— тот же нулевой ответ кормил и §03 СВОДКУ, и ДКП-KPI истории.nullниже по коду уже везде = «нет данных» (прочерк + существующийEmptyTableNote), нового состояния не заводили. Если у оценки есть СВОИactual_deals— блок не гасится, а падает на них (закреплено тестом).Пункт 2 (medium) — «Показано N из M» из разных выборок
N был из
estimate.actual_deals, M изstreetDeals.count— возможно «Показано 10 из 3». Тотала у выборкиactual_dealsв контракте нет, поэтому знаменатель честно убран: «Показано N фактических сделок».Пункт 3 (medium) — deals-only полоса врала про источник
При
n_analogs=0полоса оставалась «ДИАПАЗОН ЦЕН В ОБЪЯВЛЕНИЯХ», данные — из ДКП. Теперь: «РЕКОМЕНДОВАННЫЙ ДИАПАЗОН / ПО СДЕЛКАМ РОСРЕЕСТРА (ДКП)» — формулировка согласована с карточкой 1 после #2629. Полоса не скрыта: её числа = числа карточки 1, это единственная визуализация диапазона.Тесты
Новый
__tests__/honestZeros.test.tsx(5 тестов). Полный прогон:Test Files 28 passed (28)/Tests 218 passed (218),tsc --noEmitrc=0.Фальсификация (
git apply -Rтолько по mappers/SourcesView, тесты не тронуты) — 4 из 5 красные ПО ЗНАЧЕНИЮ (expected { median: '0,00' } to deeply equal { median: '—' }и т.п.); пятый зелёный по построению — он про нетронутую ветку с объявлениями.Проверка глазами после деплоя
§05 для адреса без ДКП по улице: три прочерка + плашка, ни одного «−100%»; футер без «из M»; §02 при
n_analogs=0: полоса подписана сделками Росреестра.Оговорка воркера: цвет «МЕДИАНА СДЕЛОК» остаётся зелёным и при «—» — вне рамок, одна строка в SourcesView, если понадобится.