Блок «что рядом» в оценке молчал для Москвы — poi_loader.py тянул Overpass
строго по EKB_BBOX константе. Параметризовал регионом: REGION_BBOX содержит
"ekb" (дефолт, поведение weekly-расписания tasks.poi_sync.sync_osm_poi_ekb не
меняется) и "msk" (bbox_product_core региона 77 из tradein-mvp regions.py,
продублирован явно — Site Finder не импортирует tradein-mvp).
Живой замер Overpass (13.09.2026, count-only + один тайл) показал, что просто
разрешить region было бы недостаточно: в Москве 12 181 bus_stop — больше, чем
ВСЕ 14 категорий ЕКБ вместе (4 850) — и уже один uniform-тайл 0.25×0.25° (размер
ЕКБ) вернул 504 на этой категории. Единый безопасный размер тайла заранее не
подобрать — плотность Москвы неравномерна (плотный центр / разреженная
периферия), а у Overpass нет сигнала "это частичный ответ", кроме HTTP-ошибки.
Поэтому вместо фиксированного тайла — адаптивное дробление: тайл, дважды
упавший в Overpass, дробится на 4 четверти и перезапрашивается рекурсивно (до
RECURSIVE_SPLIT_MAX_DEPTH=3), вместо того чтобы тихо потерять данные по тайлу.
Для ЕКБ (единственный тайл исторически всегда отвечал 200) рекурсия не
срабатывает — поведение дефолта не меняется.
Таблицу osm_poi_ekb НЕ переименовывал: она читается ещё в двух местах вне
Site Finder (FDW gendesign_osm_poi_ekb + локальное зеркало osm_poi_ekb_local
в tradein), переименование задело бы миграции обеих половин ради красоты
имени. tradein-mvp/backend/app/tasks/osm_poi_ekb_refresh.py менять не
потребовалось — зеркало уже делает безусловный full-scan FDW-таблицы без
фильтра по bbox, так что московские точки подхватятся тем же кодом.
Загрузку Москвы в прод не запускал — по заданию это делает главная сессия:
sync_poi_to_db(region="msk").