P1 «Медиана рынка» 64k — квартальная n=1 ДКП-медиана вместо новостроечного базиса (эпик #1953) #1960

Closed
opened 2026-06-27 08:46:23 +00:00 by bot-backend · 1 comment
Collaborator

Часть аудита #1953.

A2-price. KPI «Медиана рынка 64 тыс ₽/м²» — НЕ медиана района и НЕ новостроек.

  • Root: district.median_price_per_m2 = COALESCE(mq.median_12m, d.median_price_per_m2) (parcels.py:1654-1655) — берёт median_12m MV mv_quarter_price_per_m2 по кадастровому КВАРТАЛУ 66:41:0205010, посчитанную из РОВНО 1 сделки за 12 мес (31.4 м², 2 млн ₽). MV (95_mv_quarter_price.sql) фильтрует только realestate_type_code='002001003000', НЕ фильтрует doc_type → в «новостройки» попадают ДКП (перепродажа); все 6 сделок квартала за 24 мес — ДКП (вторичка в промзоне). Все прочие цены на странице — новостроечный Objective/DOM.РФ: geo_radius 132 690 ₽, market_avg 197 469 ₽, velocity 116–198 тыс.
  • Fix:
    1. P1 backend (~0.5д): порог выборки на квартальную MV — брать mq.median_12m только при deals_count_12m >= 5, иначе fallback на ekb_districts.median_price_per_m2 (район).
    2. P2 БД (~0.5д): в 95_mv_quarter_price.sql добавить AND doc_type='ДДУ' (если базис — первичка).
    3. P1 стратегия: унифицировать базис KPI с тем, что использует фин-модель/таблицы продаж — Objective/DOM.РФ новостройки (geo_radius_price.median / районная Objective-медиана). NB: даже ДДУ-медиана Росреестра (~78 тыс ЕКБ) ~×2 ниже Objective (~159–163 тыс) — системное занижение Росреестра.
Часть аудита #1953. **A2-price.** KPI «Медиана рынка 64 тыс ₽/м²» — НЕ медиана района и НЕ новостроек. - Root: `district.median_price_per_m2 = COALESCE(mq.median_12m, d.median_price_per_m2)` (`parcels.py:1654-1655`) — берёт `median_12m` MV `mv_quarter_price_per_m2` по кадастровому КВАРТАЛУ 66:41:0205010, посчитанную из РОВНО 1 сделки за 12 мес (31.4 м², 2 млн ₽). MV (`95_mv_quarter_price.sql`) фильтрует только `realestate_type_code='002001003000'`, НЕ фильтрует `doc_type` → в «новостройки» попадают ДКП (перепродажа); все 6 сделок квартала за 24 мес — `ДКП` (вторичка в промзоне). Все прочие цены на странице — новостроечный Objective/DOM.РФ: geo_radius 132 690 ₽, market_avg 197 469 ₽, velocity 116–198 тыс. - Fix: 1. P1 backend (~0.5д): порог выборки на квартальную MV — брать `mq.median_12m` только при `deals_count_12m >= 5`, иначе fallback на `ekb_districts.median_price_per_m2` (район). 2. P2 БД (~0.5д): в `95_mv_quarter_price.sql` добавить `AND doc_type='ДДУ'` (если базис — первичка). 3. P1 стратегия: унифицировать базис KPI с тем, что использует фин-модель/таблицы продаж — Objective/DOM.РФ новостройки (`geo_radius_price.median` / районная Objective-медиана). NB: даже ДДУ-медиана Росреестра (~78 тыс ЕКБ) ~×2 ниже Objective (~159–163 тыс) — системное занижение Росреестра.
Author
Collaborator

Закрыто — отгружено на прод + verified. Медиана рынка 64k→132690: квартальная n=1 ДКП-rosreestr медиана заменена новостроечным базисом (geo_radius/Objective) (PR #1978). Заодно поймана и пофикшена recommend_mix-регрессия от той же view. См. финал эпика #1953.

✅ Закрыто — отгружено на прод + verified. Медиана рынка **64k→132690**: квартальная n=1 ДКП-rosreestr медиана заменена новостроечным базисом (geo_radius/Objective) (PR #1978). Заодно поймана и пофикшена recommend_mix-регрессия от той же view. См. финал эпика #1953.
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#1960
No description provided.