gendesign/backend/app/api/v1
lekss361 86c6070ff0 feat(sf-b7): GET /parcels/{cad}/snapshot.pdf — 1-page PDF export
Add 1-page A4 snapshot PDF endpoint for cadastral parcels (SF task B7).

- New service: app/services/exporters/snapshot_pdf.py — WeasyPrint +
  Jinja2 renderer with DejaVu Sans Cyrillic font support
- New template: app/templates/parcel_snapshot.html — styled A4 layout
  with header, KPI block, POI top-7 table, competitors top-5 table, footer
- New endpoint GET /parcels/{cad}/snapshot.pdf in parcels.py — fetches
  parcel meta (cad_parcels), geometry (cad_parcels_geom), POI (osm_poi_ekb
  1km), competitors (domrf_kn_objects 3km), district (ekb_districts),
  renders PDF and returns application/pdf attachment
- Add jinja2>=3.1.0 to pyproject.toml + uv.lock

Disclaimer included: not an official EGRN extract.
2026-05-18 00:06:58 +03:00
..
__init__.py init 2026-04-25 13:45:19 +03:00
admin_cadastre.py feat(cadastre): bulk_harvest worker + grid-walker + admin API (#168 PR3/5) (#171) 2026-05-15 13:31:32 +03:00
admin_etl.py feat(etl): fuzzy matcher v2 — pruned threshold 0.85→0.80 for objective mapping coverage 2026-05-17 16:28:20 +03:00
admin_jobs.py refactor(admin): extract _check_token into shared AdminTokenAuth dep (#133) 2026-05-14 23:45:44 +03:00
admin_leads.py refactor(admin): extract _check_token into shared AdminTokenAuth dep (#133) 2026-05-14 23:45:44 +03:00
admin_scrape.py feat(#104): add POST /admin/scrape/ekburg-permits for manual trigger 2026-05-17 08:13:32 +03:00
admin_weight_profiles.py feat(#114): seed 3 default weight presets + include_system API param 2026-05-16 22:49:56 +03:00
analytics.py feat(22k): object page — full exposure 9 blocks (sales/quartirography/metro/photos/docs/specs/checks) (#310) 2026-05-17 15:56:39 +00:00
concepts.py init 2026-04-25 13:45:19 +03:00
custom_pois.py feat(#254): user_custom_pois — backend schema + CRUD + scoring integration 2026-05-17 09:34:33 +03:00
parcels.py feat(sf-b7): GET /parcels/{cad}/snapshot.pdf — 1-page PDF export 2026-05-18 00:06:58 +03:00
photos.py fix ui 2026-04-27 20:42:18 +03:00
trade_in.py feat(trade-in): TI-2 PDF export 4-page + frontend enable button (#319) 2026-05-17 17:16:48 +00:00