trade-in/v2 [BE-3]: Коэффициент локации + POI-разложение (LocationDrawer) — DEFER / решение #2045

Closed
opened 2026-06-28 11:05:27 +00:00 by lekss361 · 1 comment
Owner

Под-issue #2036. Самый дорогой, net-new end-to-end. Данных НЕТ (только DaData metro_nearest).

LocationDrawer (coef 0.87, формула base×coef=result, positives/negatives POI-факторы, footer) + пилюля object.locationCoef + compass — сейчас полностью фабрикованы.

Полный путь: OSM POI / транспорт / шум-эко ingestion (новые таблицы data/sql) + скоринг-модель + GET /api/v1/trade-in/location-coef → {coef, base_price_rub, result_price_rub, factors:[{label,delta,poi_type}], geo_source}.

Решение нужно от человека/бизнеса:

  • (A) полноценный POI-движок (большой объём), либо
  • (B) деградировать drawer до фактов «расстояние до метро» из dadata_metro (дёшево, MVP), formula.base = median_price_rub, coef скрыть/=1.0.

FE-1 на время прячет/деградирует drawer. Помечено needs-human до решения.

Под-issue #2036. **Самый дорогой, net-new end-to-end. Данных НЕТ** (только DaData `metro_nearest`). LocationDrawer (`coef 0.87`, формула `base×coef=result`, positives/negatives POI-факторы, footer) + пилюля `object.locationCoef` + `compass` — сейчас полностью фабрикованы. Полный путь: OSM POI / транспорт / шум-эко ingestion (новые таблицы `data/sql`) + скоринг-модель + `GET /api/v1/trade-in/location-coef → {coef, base_price_rub, result_price_rub, factors:[{label,delta,poi_type}], geo_source}`. **Решение нужно от человека/бизнеса:** - (A) полноценный POI-движок (большой объём), либо - (B) деградировать drawer до фактов «расстояние до метро» из `dadata_metro` (дёшево, MVP), `formula.base = median_price_rub`, coef скрыть/=1.0. FE-1 на время прячет/деградирует drawer. Помечено needs-human до решения.
lekss361 added the
enhancement
needs-human
scope/backend
tradein
labels 2026-06-28 11:06:17 +00:00
lekss361 removed the
needs-human
label 2026-07-03 19:48:38 +00:00
Author
Owner

Закрыто (backend, BE-3). Реализовано по решению user («есть в Птице — посмотри как реализовано»): порт straight-line POI-скоринга из Site Finder через postgres_fdw мост.

  • PR-A (#2299, задеплоен): view v_tradein_osm_poi_ekb на gendesign + GRANT на существующую роль tradein_fdw_reader.
  • PR-B (#2314, задеплоен): foreign table → локальное зеркало (GIST) → daily refresh-таска → location_coef.py (порт CATEGORY_WEIGHTS, радиус 1200м для квартир, score→coef heuristic v1 явно помечена как неоткалиброванная) → GET /api/v1/trade-in/location-coef с IDOR-guard и graceful fallback (unavailable, не 500/фабрикация).

Smoke на проде (живой первый прогон моста): рефреш-таска загрузила 2926 POI из gendesign, эндпоинт вернул честный coef=0.987 с 7 реальными POI-факторами по тестовому адресу; RBAC-матрица (owner/non-owner/admin/unknown) корректна; GlitchTip чист.

Вне scope этого issue (был BE-3, backend-only): frontend LocationDrawer всё ещё показывает deferred-заглушку, эндпоинт не подключён. Завёл follow-up для wiring — см. следующий коммент со ссылкой.

Закрыто (backend, BE-3). Реализовано по решению user («есть в Птице — посмотри как реализовано»): порт straight-line POI-скоринга из Site Finder через postgres_fdw мост. - PR-A (#2299, задеплоен): view `v_tradein_osm_poi_ekb` на gendesign + GRANT на существующую роль `tradein_fdw_reader`. - PR-B (#2314, задеплоен): foreign table → локальное зеркало (GIST) → daily refresh-таска → `location_coef.py` (порт `CATEGORY_WEIGHTS`, радиус 1200м для квартир, score→coef heuristic v1 явно помечена как неоткалиброванная) → `GET /api/v1/trade-in/location-coef` с IDOR-guard и graceful fallback (`unavailable`, не 500/фабрикация). Smoke на проде (живой первый прогон моста): рефреш-таска загрузила 2926 POI из gendesign, эндпоинт вернул честный `coef=0.987` с 7 реальными POI-факторами по тестовому адресу; RBAC-матрица (owner/non-owner/admin/unknown) корректна; GlitchTip чист. Вне scope этого issue (был BE-3, backend-only): frontend LocationDrawer всё ещё показывает deferred-заглушку, эндпоинт не подключён. Завёл follow-up для wiring — см. следующий коммент со ссылкой.
Sign in to join this conversation.
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#2045
No description provided.