P0 4.2 Планировки: «срок продажи 0 мес» / «% продано —» — per-object snapshot (регрессия #1944) (эпик #1953) #1956

Closed
opened 2026-06-27 08:45:04 +00:00 by bot-backend · 0 comments
Collaborator

Часть аудита #1953. Регрессия от моего же фикса supply fan-out #1944.

B2. _SUPPLY_BATCH_SQL (best_layouts.py:522,279) джойнит flats строго по ОДНОЙ глобальной дате f.snapshot_date = MAX(snapshot_date) (=2026-06-22). Но domrf_kn_flats — per-object time-series: каждый ЖК скрейпится в свой день. На глобальном max-снапшоте flats есть лишь у 1 объекта во всей таблице → supply_units_in_radius=0 для всех строк → salesPeriodMonths(0,v)=0 → «0 мес»; sold_pct_of_supply=null → «—».
Прод: 9 объектов в радиусе = 5344 flats суммарно, но 0 на глобальном max. При per-object latest snapshot тот же радиус даёт 2675 flats.

  • Fix: в _SUPPLY_BATCH_SQL заменить фиксированную глобальную дату на per-object latest snapshotDISTINCT ON (obj_id) ... ORDER BY obj_id, snapshot_date DESC, затем JOIN flats. (Тот же паттерн, что в objects-CTE из #1944, но применить и к flats.) Сохранить дедуп от fan-out.
  • ⚠️ Связано с монитором свежести #1945: данные domrf flats частично сломаны (latest snapshot=9), так что даже после фикса supply будет занижен, пока loader не починят. Проверить эффект на проде.
Часть аудита #1953. **Регрессия от моего же фикса supply fan-out #1944.** **B2.** `_SUPPLY_BATCH_SQL` (`best_layouts.py:522,279`) джойнит flats строго по ОДНОЙ глобальной дате `f.snapshot_date = MAX(snapshot_date)` (=2026-06-22). Но `domrf_kn_flats` — per-object time-series: каждый ЖК скрейпится в свой день. На глобальном max-снапшоте flats есть лишь у 1 объекта во всей таблице → `supply_units_in_radius=0` для всех строк → `salesPeriodMonths(0,v)=0` → «0 мес»; `sold_pct_of_supply=null` → «—». Прод: 9 объектов в радиусе = 5344 flats суммарно, но 0 на глобальном max. При per-object latest snapshot тот же радиус даёт 2675 flats. - Fix: в `_SUPPLY_BATCH_SQL` заменить фиксированную глобальную дату на **per-object latest snapshot** — `DISTINCT ON (obj_id) ... ORDER BY obj_id, snapshot_date DESC`, затем JOIN flats. (Тот же паттерн, что в objects-CTE из #1944, но применить и к flats.) Сохранить дедуп от fan-out. - ⚠️ Связано с монитором свежести #1945: данные domrf flats частично сломаны (latest snapshot=9), так что даже после фикса supply будет занижен, пока loader не починят. Проверить эффект на проде.
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#1956
No description provided.