gendesign/backend/app
lekss361 1595157ebf feat(nspd): enable TIER 3 risk zones harvest + extract in analyze (#94 PR1)
- harvest_stale_quarters fanout passes include_risks=True to all queued tasks
- _get_risk_zones() with ST_Intersects + ST_Area intersection calc
- _extract_features_by_layer() generic helper for future PR2+ reuse
- RiskZone Pydantic schema; /analyze returns nspd_risk_zones list
- NspdRiskZonesBlock component with severity color-coding (red/yellow/orange)
- 11 unit tests for extract/intersect/null-area/db-exception paths

Part of #94 (TIER 3 risk layers — flooding, landslide, burns, erosion etc)
2026-05-16 16:11:59 +03:00
..
api feat(nspd): enable TIER 3 risk zones harvest + extract in analyze (#94 PR1) 2026-05-16 16:11:59 +03:00
core refactor(admin): extract _check_token into shared AdminTokenAuth dep (#133) 2026-05-14 23:45:44 +03:00
models feat(jobs): centralized job_settings API + DB-driven beat schedule 2026-05-11 15:38:13 +03:00
schemas feat(nspd): enable TIER 3 risk zones harvest + extract in analyze (#94 PR1) 2026-05-16 16:11:59 +03:00
scrapers feat(cadastre): per-category NSPD snapshot — Phase 1.5 (ZOUIT/ENK) (#180) 2026-05-15 16:53:49 +03:00
services feat(nspd): enable TIER 3 risk zones harvest + extract in analyze (#94 PR1) 2026-05-16 16:11:59 +03:00
workers feat(nspd): enable TIER 3 risk zones harvest + extract in analyze (#94 PR1) 2026-05-16 16:11:59 +03:00
__init__.py init 2026-04-25 13:45:19 +03:00
main.py feat(etl): objective_complex_mapping backfill via pg_trgm (#203) (#214) 2026-05-16 12:47:09 +00:00