feat(tradein/sale-share): тумблер «Сейчас / За 45 дней» + фильтр «мин. объявлений» #2092
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#2092
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/tradein-sale-share-45d-toggle"
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?
По запросу юзера. Frontend-only (бэк/API/deps не тронуты — потому cadastre-батч в
tradein-backendне прерывается).#3 — переключатель «Сейчас / За 45 дней» (которого не было)
45-дневная метрика (
sale_share_pct_45d,listings_45d) уже была в API (схемаBuildingSaleShare+ сортыshare_45d_desc/count_45d_descвалидны на бэке), но фронт её не показывал → тумблера не было. Добавлен сегмент-переключатель окна:sale_share_pct↔sale_share_pct_45d),active_secondary↔listings_45d),share_desc↔share_45d_desc,active_desc↔count_45d_desc— мапится в page перед отправкой на API),#2 — фильтр «Мин. объявлений в доме»
Number-input → client-side фильтр: дом остаётся, если оконный счётчик (
45д ? listings_45d : active_secondary) ≥ min. Без изменения query-key/бэка (намеренно client-side, помечено в коде). Хедер «Найдено: N» отражает отфильтрованное.Файлы
types/sale-share.ts(45d-поля + сорты),app/sale-share/page.tsx(state window/minCount, sort-маппинг, фильтр),SaleShareControls.tsx(тумблер + поле),SaleShareList.tsx(оконный рендер),trade-in.css(сегмент-стили).Проверки
tsc --noEmitclean. Конвенции (no any/console, useMemo deps) — ок. ESLint headless недоступен (нет tracked-конфига в этом subproject).SaleShareMapпока по now-метрике (вне scope; мелкий follow-up если нужно).После мержа
Деплой рестартит ТОЛЬКО фронт-контейнер (cadastre-батч в бэке выживает). Verify: тумблер на /sale-share переключает %/счётчик/сортировку; фильтр «мин. объявлений» режет список.