Fixes 500 on /trade-in/api/v1/geocode/reverse when Nominatim bans prod IP
after geocode_missing batch. Cadastral lookup via main backend new
endpoint /api/v1/cadastral/reverse is primary (37k buildings in ЕКБ,
<10ms, no external API). Nominatim is fallback wrapped in try/except
so HTTPStatusError no longer bubbles to FastAPI 500.
Architecture:
- main backend: new GET /api/v1/cadastral/reverse — cad_buildings nearest
within radius, filters out гаражи/СНТ. Added to gendesign_shared network
with alias gendesign-backend for cross-stack DNS.
- tradein backend: _cadastral_reverse() calls main backend, returns None
on any error. reverse_geocode prefers cadastral → falls back to
Nominatim → returns None (endpoint becomes 404 instead of 500).
Env: MAIN_BACKEND_URL=http://gendesign-backend:8000 in tradein prod.
Tests: 7 new cases covering cadastral/nominatim/fallback/error paths.