gendesign/backend/app
Light1YT 1b77f479e7
All checks were successful
CI / changes (push) Successful in 6s
CI / frontend-tests (push) Has been skipped
CI / changes (pull_request) Successful in 7s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (push) Successful in 1m57s
CI / openapi-codegen-check (pull_request) Successful in 1m51s
CI / backend-tests (push) Successful in 8m52s
CI / backend-tests (pull_request) Successful in 8m50s
feat(site-finder): POI saturation per capita по районам ЕКБ (#42)
Демография 8 районов ЕКБ (Росстат 01.01.2025) + обеспеченность
социнфраструктурой на 1000 чел. целевой когорты vs норматив СП 42.13330.

- migration 154: ekb_district_demographics (население/площадь/ОКАТО факт,
  возрастные когорты — региональная оценка, помечены) + backfill
  ekb_districts.population
- saturation.py: provision_ratio (школа/детсад/поликлиника), severity,
  score_multiplier (x1.2 дефицит / x0.5 профицит)
- analyze: infra.saturation блок (best-effort, SAVEPOINT-изолирован)
- tests: 18 (вкл. acceptance — дефицитный район -> school x1.2)

Refs #42
2026-06-14 19:51:42 +05:00
..
api feat(site-finder): POI saturation per capita по районам ЕКБ (#42) 2026-06-14 19:51:42 +05:00
core fix(audit): run_in_threadpool для write_audit_row в async middleware (#1202) 2026-06-13 05:24:39 +00: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(site-finder): domrf→cad geom-match + parking_ratio конкурентов (#96) (#1327) 2026-06-14 14:49:28 +00:00
scrapers fix(cadastre): NSPD 500-retry + per-layer skip (#252) + disable dead pzz-beat (#259) + geom backfill (#200) 2026-06-13 20:45:05 +05:00
services feat(site-finder): POI saturation per capita по районам ЕКБ (#42) 2026-06-14 19:51:42 +05:00
templates fix(snapshot-pdf): Unicode '—' вместо HTML-entity '—' в Jinja or-fallback (#1234) 2026-06-13 15:04:12 +05:00
workers fix(cadastre): NSPD 500-retry + per-layer skip (#252) + disable dead pzz-beat (#259) + geom backfill (#200) 2026-06-13 20:45:05 +05:00
__init__.py init 2026-04-25 13:45:19 +03:00
main.py feat(analytics): velocity-anomaly alerts (#17) + ARN ДДУ price indicator (#99) 2026-06-13 22:04:49 +05:00