Цена продажи в финмодели калибровалась по 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 |
||
|---|---|---|
| .. | ||
| public | ||
| src | ||
| .dockerignore | ||
| .env.example | ||
| .eslintrc.json | ||
| Dockerfile | ||
| next-env.d.ts | ||
| next.config.ts | ||
| package-lock.json | ||
| package.json | ||
| sentry.client.config.ts | ||
| sentry.edge.config.ts | ||
| sentry.server.config.ts | ||
| tsconfig.json | ||
| vitest-env.d.ts | ||
| vitest.config.ts | ||
| vitest.setup.ts | ||