gendesign/backend/app
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
..
api feat(sf-b7): GET /parcels/{cad}/snapshot.pdf — 1-page PDF export 2026-05-18 00:06:58 +03:00
core fix(infra): wire GlitchTip DSNs (build-arg + env_file) + reject sentry.io promote 2026-05-16 21:48:28 +03:00
models feat(jobs): centralized job_settings API + DB-driven beat schedule 2026-05-11 15:38:13 +03:00
observability feat(backend): sentry-sdk init для FastAPI + Celery (#204 backend) (#207) 2026-05-16 15:09:16 +00:00
schemas feat(trade-in): TI-1 mock /trade-in/estimate endpoint + Pydantic + SQL migration (#316) 2026-05-17 16:45:06 +00:00
scrapers Merge pull request 'feat(#263 sub-A): cad_* overlay schemas + cadastre territorial_zones (ПЗЗ)' (#265) from feat/263-sub-a-cad-nspd-overlay-schemas-and-pzz into main 2026-05-17 07:50:08 +00:00
services feat(sf-b7): GET /parcels/{cad}/snapshot.pdf — 1-page PDF export 2026-05-18 00:06:58 +03:00
templates feat(sf-b7): GET /parcels/{cad}/snapshot.pdf — 1-page PDF export 2026-05-18 00:06:58 +03:00
workers fix(scrape-objective): stream-parse lots_pf via ijson to avoid OOM (#315) 2026-05-17 16:37:30 +00:00
__init__.py init 2026-04-25 13:45:19 +03:00
main.py feat(trade-in): TI-1 mock /trade-in/estimate endpoint + Pydantic + SQL migration (#316) 2026-05-17 16:45:06 +00:00