FIX A (#1955) «Что хорошо продаётся»: убран фантомный класс 'Comfort'. - Миграция 172: v_bucket_success_score COALESCE(obj_class,'Comfort') → COALESCE(obj_class,'не указан'). Английский литерал заполнял 397 NULL и сливался отдельным классом от русского 'Комфорт' → визуальные дубли бакетов в UI. Источник уже канонически-русский (проверено на проде), synonym-mapping не нужен. - parcels.py: obj_class протаскивается в success-ranking query + dict. - TS SuccessRankingBucket.obj_class добавлен. FIX B (#1960) «Медиана рынка» = 64k (квартальная росреестровская n=1 ДКП): - district.median_price_per_m2 больше не COALESCE(median_12m, ekb_ref) в SQL. Basis-приоритет (newbuild-first): Objective по имени района → geo_radius (Objective в 3км) → ekb_districts reference → квартальная росреестровская медиана ТОЛЬКО при deals_count≥5. Для 66:41:0205010:287: 64k → 132690 (geo_radius, newbuild-consistent). - median_price_basis добавлен в payload + TS type (nullable median). - Frontend null-guards для нового nullable median. Tests: +4 (geo_radius basis, objective-приоритет, deals-guard, obj_class passthrough); обновлены district-моки в 9 analyze-тестах под новую SQL-сигнатуру. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| admin_cadastre.py | ||
| admin_etl.py | ||
| admin_jobs.py | ||
| admin_leads.py | ||
| admin_scrape.py | ||
| admin_weight_profiles.py | ||
| analytics.py | ||
| chat.py | ||
| concepts.py | ||
| custom_pois.py | ||
| insights.py | ||
| landing.py | ||
| locations.py | ||
| market.py | ||
| me.py | ||
| own_projects.py | ||
| parcels.py | ||
| photos.py | ||
| pilot.py | ||
| ping.py | ||
| trade_in.py | ||
| users.py | ||