Цена продажи в финмодели калибровалась по name-match админ-района Objective — но только 4 из 9 районов ЕКБ совпадают по имени, 5 проваливались в class_norm. Добавлен ценовой tier "objective_geo_radius": ST_DWithin-медиана цен новостроек Objective (objective_lots ⋈ complexes по lat/lon) в радиусе 3 км от центроида участка, между квартальной MV и district_reference. Порог n≥10 лотов и ≥2 ЖК (один ЖК не задаёт цену). Прод: 5 «гео»-районов теперь дают реальную медиану (129–158k ₽/м²) вместо NULL. - data/sql/168: функциональный GIST-индекс complexes((ST_MakePoint(lon,lat))::geography) — без него ST_DWithin делает Seq Scan (+~90мс на /analyze, у которого уже таймаут-давление #1850). Прод EXPLAIN: Seq Scan 114мс → Index Scan 28мс. - guard: при вырожденном центроиде (fallback на центр ЕКБ) гео-радиус пропускается (source=no_data_centroid_fallback) — не выдаём центр-города медиану за калиброванную цену участка. - price_source="objective_geo_radius" (plain str, без schema-change). - ptica-adapt: price_source → честные RU-подписи (не сырой токен). - +4 теста (4-tier priority chain). deep-review ✅. Refs #1881 |
||
|---|---|---|
| .. | ||
| analysis_runs | ||
| analytics | ||
| cadastre | ||
| chat | ||
| etl | ||
| exporters | ||
| forecasting | ||
| generative | ||
| llm | ||
| photos | ||
| scrapers | ||
| site_finder | ||
| __init__.py | ||
| analytics_queries.py | ||
| analytics_refresh.py | ||
| forecast_request_cache.py | ||
| insights.py | ||
| job_settings.py | ||
| objective_etl.py | ||
| objective_sync_config.py | ||
| own_projects.py | ||
| weather_cache.py | ||