fix(tradein/v2): address parse (Cyrillic \b bug) + scatter from listing_date #2049

Merged
lekss361 merged 1 commit from fix/tradein-v2-fe1-address-scatter into main 2026-06-28 12:05:00 +00:00
Owner

Follow-up к #2038 (FE-1). Прод-QA на реальной оценке 701795d8 вскрыла 2 дефекта мапперов:

  1. parseAddress / STREET_RE — JS \b НЕ ставит word-boundary вокруг кириллицы (только ASCII \w), поэтому street-токен никогда не матчился → object.address падал на голый номер дома ("14/3"), а город парсился как "14/3, Россия". Переписал parseAddress под оба порядка геокодеров (OSM house-first / DaData city-first); street-ключевик ограничен пробелом, не \b. Теперь "улица Яскина, 14/3" + город "Екатеринбург".
  2. scatter-minidays_on_market на проде null у всех лотов → scatter был пустой. Активные аналоги теперь фолбэчат на «дней в продаже» = today − listing_date (честный нижний bound; сделки по-прежнему требуют реальный days_on_market). TODO BE-1 (#2043) — заполнить days_on_market.

Verify

  • tsx-харнесс против реальной оценки 701795d8 — 25/25 (address="улица Яскина, 14/3", city="Екатеринбург", scatter analogs=4).
  • next build зелёный (/v2 34.2 kB).

Чистый mapper-only diff (1 файл, +65/−27), разметка компонентов не тронута.

Follow-up к #2038 (FE-1). Прод-QA на реальной оценке `701795d8` вскрыла 2 дефекта мапперов: 1. **parseAddress / `STREET_RE`** — JS `\b` НЕ ставит word-boundary вокруг кириллицы (только ASCII `\w`), поэтому street-токен никогда не матчился → `object.address` падал на голый номер дома (`"14/3"`), а город парсился как `"14/3, Россия"`. Переписал `parseAddress` под оба порядка геокодеров (OSM house-first / DaData city-first); street-ключевик ограничен пробелом, не `\b`. Теперь `"улица Яскина, 14/3"` + город `"Екатеринбург"`. 2. **scatter-mini** — `days_on_market` на проде null у всех лотов → scatter был пустой. Активные аналоги теперь фолбэчат на «дней в продаже» = `today − listing_date` (честный нижний bound; сделки по-прежнему требуют реальный `days_on_market`). TODO BE-1 (#2043) — заполнить `days_on_market`. ## Verify - tsx-харнесс против реальной оценки 701795d8 — **25/25** (`address="улица Яскина, 14/3"`, `city="Екатеринбург"`, scatter analogs=4). - `next build` зелёный (/v2 34.2 kB). Чистый mapper-only diff (1 файл, +65/−27), разметка компонентов не тронута.
lekss361 added 1 commit 2026-06-28 12:04:51 +00:00
fix(tradein/v2): address parse (Cyrillic \b bug) + scatter from listing_date (#2038)
All checks were successful
CI / changes (pull_request) Successful in 6s
CI / frontend-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
ad5c1913cb
QA on real prod estimate 701795d8 surfaced two mapper defects:
- STREET_RE used JS \b which does NOT word-boundary Cyrillic → street token never
  matched → object.address fell back to the bare house number ('14/3') and city
  mis-parsed ('14/3, Россия'). Rewrote parseAddress to handle both OSM (house-first)
  and DaData (city-first) orders; street keyword delimited by space, not \b. Now
  'улица Яскина, 14/3' + city 'Екатеринбург'.
- days_on_market is null across prod lots → scatter-mini rendered empty. Active
  analogs now fall back to 'days listed so far' = today-listing_date (deals still
  require a real days_on_market — today-deal-date is not exposure). TODO BE-1.

Verified via tsx harness against the real estimate (25/25); next build green.
lekss361 merged commit 510cf1cb80 into main 2026-06-28 12:05:00 +00:00
lekss361 deleted branch fix/tradein-v2-fe1-address-scatter 2026-06-28 12:05:00 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
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#2049
No description provided.