feat(trade-in): OfferCard — убрать редактируемую цену + ползунок торга, разбивка на дефолтах #939

Merged
bot-reviewer merged 1 commit from fix/offercard-remove-controls into main 2026-05-31 22:31:21 +00:00
Collaborator

Что

Убраны два интерактивных контрола из OfferCard.tsx (Секция 4 «Оффер») по запросу:

  • «Цена в объявлении» — редактируемый input (askingPrice);
  • «Торг с покупателем» — ползунок (bargainPct).

Разбивка издержек/выгоды остаётся, но считается на фиксированных дефолтах:

  • цена = Math.round(estimate.median_price_rub);
  • торг = DEFAULT_BARGAIN_PCT (середина DEFAULT_OFFER_RATES.bargain).

Изменения (2 файла, −130/+7)

  • OfferCard.tsx: удалён блок .offer-calc-controls (price input + bargain slider + reset), убран неиспользуемый код (useState/askingPrice/bargainPct/onPriceInput/resetPrice/isCustomPrice/askingMln, импорт BARGAIN_SLIDER), computeBreakdown вызывается с фиксированными дефолтами.
  • trade-in.css: удалены осиротевшие правила .offer-calc-controls / .occ-* (+ адаптив).

Остальная логика (заголовок, card-meta, разбивка, brandSlug/PDF) не тронута.

Проверка

  • tsc --noEmitчисто (TS strict; неиспользуемые vars/imports убраны → build не падает).
  • pre-commit hooks — passed.

Не в этом PR

  • Живой UI-smoke через Playwright (визуал убранных контролов + проверка месячной квоты 15 оценок) — отдельно из qa/playwright-окна (в backend-сессии Playwright нет). Квота=15 подтверждена в коде (account_quota.MONTHLY_LIMIT = settings.estimate_quota_limit, default 15).
## Что Убраны два интерактивных контрола из `OfferCard.tsx` (Секция 4 «Оффер») по запросу: - **«Цена в объявлении»** — редактируемый input (`askingPrice`); - **«Торг с покупателем»** — ползунок (`bargainPct`). Разбивка издержек/выгоды **остаётся**, но считается на **фиксированных дефолтах**: - цена = `Math.round(estimate.median_price_rub)`; - торг = `DEFAULT_BARGAIN_PCT` (середина `DEFAULT_OFFER_RATES.bargain`). ## Изменения (2 файла, −130/+7) - `OfferCard.tsx`: удалён блок `.offer-calc-controls` (price input + bargain slider + reset), убран неиспользуемый код (`useState`/`askingPrice`/`bargainPct`/`onPriceInput`/`resetPrice`/`isCustomPrice`/`askingMln`, импорт `BARGAIN_SLIDER`), `computeBreakdown` вызывается с фиксированными дефолтами. - `trade-in.css`: удалены осиротевшие правила `.offer-calc-controls` / `.occ-*` (+ адаптив). Остальная логика (заголовок, `card-meta`, разбивка, `brandSlug`/PDF) не тронута. ## Проверка - `tsc --noEmit` — **чисто** (TS strict; неиспользуемые vars/imports убраны → build не падает). - pre-commit hooks — passed. ## Не в этом PR - **Живой UI-smoke через Playwright** (визуал убранных контролов + проверка месячной квоты 15 оценок) — отдельно из qa/playwright-окна (в backend-сессии Playwright нет). Квота=15 подтверждена в коде (`account_quota.MONTHLY_LIMIT = settings.estimate_quota_limit`, default 15).
bot-backend added 1 commit 2026-05-31 22:18:26 +00:00
bot-backend added the
status/review
label 2026-05-31 22:18:36 +00:00
bot-reviewer approved these changes 2026-05-31 22:31:09 +00:00
bot-reviewer left a comment
Collaborator

APPROVE — чистое frontend-удаление, внутренне консистентно. Мержу.

Verified

  • Удалены useState/BARGAIN_SLIDER импорты + state askingPrice/bargainPct + хендлеры onPriceInput/resetPrice/isCustomPrice/askingMln + JSX-блок .offer-calc-controls (единственный их потребитель) + осиротевший CSS (.occ-* + адаптив). Нет dangling-ссылок внутри diff.
  • Сохранены: useMemo (используется breakdown), computeBreakdown(fixedPrice, DEFAULT_BARGAIN_PCT, DEFAULT_OFFER_RATES) с корректной dep [fixedPrice]. DEFAULT_BARGAIN_PCT/fmtRub/pct retained (используются в benefit/breakdown рендере).
  • tsc --noEmit clean (автор) покрывает главный риск такого удаления — unused-import/var под TS strict (noUnusedLocals). Frontend-only, без backend/data импакта. Разбивка по-прежнему рендерится на дефолтах (median_price_rub + DEFAULT_BARGAIN_PCT).
  • Продуктовое решение (убрать интерактив) — явный запрос, не ревьюю по существу; код корректен.

🟡 Post-merge (не блокер — qa-окно)

Playwright UI-smoke (визуал убранных контролов + рендер разбивки на дефолтах) корректно вынесен в qa-окно (в backend-сессии Playwright нет) — это не reviewer-задача.

Squash-merge + delete branch.

<!-- gendesign-review-bot: sha=5dbcc45 verdict=approve --> ✅ **APPROVE** — чистое frontend-удаление, внутренне консистентно. Мержу. ## Verified - Удалены `useState`/`BARGAIN_SLIDER` импорты + state `askingPrice`/`bargainPct` + хендлеры `onPriceInput`/`resetPrice`/`isCustomPrice`/`askingMln` + JSX-блок `.offer-calc-controls` (единственный их потребитель) + осиротевший CSS (`.occ-*` + адаптив). Нет dangling-ссылок внутри diff. - Сохранены: `useMemo` (используется `breakdown`), `computeBreakdown(fixedPrice, DEFAULT_BARGAIN_PCT, DEFAULT_OFFER_RATES)` с корректной dep `[fixedPrice]`. `DEFAULT_BARGAIN_PCT`/`fmtRub`/`pct` retained (используются в benefit/breakdown рендере). - **`tsc --noEmit` clean** (автор) покрывает главный риск такого удаления — unused-import/var под TS strict (noUnusedLocals). Frontend-only, без backend/data импакта. Разбивка по-прежнему рендерится на дефолтах (median_price_rub + DEFAULT_BARGAIN_PCT). - Продуктовое решение (убрать интерактив) — явный запрос, не ревьюю по существу; код корректен. ## 🟡 Post-merge (не блокер — qa-окно) Playwright UI-smoke (визуал убранных контролов + рендер разбивки на дефолтах) корректно вынесен в qa-окно (в backend-сессии Playwright нет) — это не reviewer-задача. Squash-merge + delete branch.
bot-reviewer merged commit 921c14e054 into main 2026-05-31 22:31:21 +00:00
bot-reviewer deleted branch fix/offercard-remove-controls 2026-05-31 22:31:21 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
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#939
No description provided.