gendesign/backend/app/services/site_finder
lekss361 0cf0ab3358 fix(site-finder): narrow except clauses, fix quarter fallback WKT, add LIMIT to zouit query
Addresses review-bot blockers on PR #190 (4 reviews flagged same issues):

1. Narrow except in quarter_dump_lookup.py:
   - line 579/651: except Exception -> (OperationalError, ProgrammingError) для outer DB queries
   - line 598/668: except Exception -> (ValueError, json.JSONDecodeError) для json.loads fallback

2. _get_parcel_wkt fallback (line 506-521): cad_quarters_geom хранит 3-segment quarter keys,
   а cad_num передавался 4-segment -> fallback всегда возвращал NULL. Теперь derive_quarter_cad(cad_num).

3. _get_zouit_engineering_overlaps: добавлен LIMIT 100 для unbounded jsonb_array_elements fan-out
   (engineering_structures query уже имел LIMIT 50).
2026-05-16 08:55:53 +03:00
..
__init__.py init 2026-04-25 13:45:19 +03:00
cadastre_fetch.py feat(site-finder): auto-fetch cadastre geometry on-demand (#93) (#95) 2026-05-12 09:02:17 +03:00
competitors.py feat(parcels): competitors endpoint (Forgejo #112 Phase 1 backend) (#191) 2026-05-15 22:21:05 +00:00
filters.py init 2026-04-25 13:45:19 +03:00
gate_verdict.py feat(site-finder): gate verdict aggregator — can-build-MKD signal (#32 G5 sub-PR 1/2) (#142) 2026-05-15 00:59:53 +03:00
noise_loader.py feat(site-finder): isochrones UI + networks VKH + OSM substations 2026-05-11 21:48:21 +03:00
parser.py init 2026-04-25 13:45:19 +03:00
poi_loader.py feat(site-finder): v3.1 — cad_parcels_geom, analyze fallback, POI lat/lon, OSM expand 2026-05-11 19:52:19 +03:00
pzz_loader.py fix(pzz_loader): replace bare db.rollback() with SAVEPOINT per-row (#124) 2026-05-14 23:29:23 +03:00
quarter_dump_lookup.py fix(site-finder): narrow except clauses, fix quarter fallback WKT, add LIMIT to zouit query 2026-05-16 08:55:53 +03:00
scorer.py init 2026-04-25 13:45:19 +03:00
velocity.py feat(velocity): per-room-bucket breakdown in VelocityResult (#163) 2026-05-15 10:09:03 +03:00
weight_profiles.py fix(site-finder): SQLAlchemy syntax error :weights::jsonb → CAST(:weights AS jsonb) (#152) 2026-05-15 08:12:18 +03:00