feat/domrf-cad-match-parking-wire-96
main
domrf-конкуренты живут в lat/lon без cad_num — PostGIS-мост resolve_cad_for_domrf (GIST KNN nearest ≤50м + ST_Contains footprint) → on-demand НСПД premises → parking_ratio. Prod: 47% domrf-объектов (1543) матчатся ≤50м, медиана 56м. Доставка через ленивый POST /{cad}/competitors-parking (top-3), НЕ inline в analyze/forecast (N×НСПД убил бы p95). cad_buildings.objdoc_id short-circuit (1 НСПД-запрос вместо 2). Graceful → None. 16 тестов. Завершает #1326 MVP (premises_lookup) — parking_ratio теперь доходит до конкурентов. Closes #96