Заменяет straight-line ST_Distance в POI-скоринге /analyze реальным дорожным расстоянием центроид→POI из локального OSRM (/table GET с annotations=distance → метры), за флагом use_osrm_distances. Флаг default OFF → деплой поведенчески-нейтрален: при OFF OSRM не дёргается вообще, /analyze байт-в-байт как сегодня. Включение сдвигает все POI-score на ~20-30% (дорога длиннее прямой) — осознанное позднее решение после валидации, НЕ этот PR. Graceful fallback: любой сбой OSRM (HTTP / timeout / code!=Ok / битая форма) → OsrmLocalUnavailableError → straight-line по всем POI, /analyze НЕ падает в 500. Недостижимый POI (null от OSRM) → сохраняет straight-line. Покрыто и для OSM POI (osm_poi_ekb), и для custom POI (user_custom_pois). Refs #39 |
||
|---|---|---|
| .. | ||
| api | ||
| core | ||
| models | ||
| observability | ||
| schemas | ||
| scrapers | ||
| services | ||
| templates | ||
| workers | ||
| __init__.py | ||
| main.py | ||