gendesign/backend/tests/api/v1
lekss361 7eb686bd7d feat(permits): Celery beat monthly + analyze recent_permits (#105 Phase 4+5)
Closes #105 (Phase 3 geocoding — отдельный issue).

Phase 4: 'ekburg-permits-monthly' crontab(0 2 1 * *) → tasks.refresh_all
Phase 5: /analyze returns engineering.recent_permits_in_quarter +
permits_summary (rns/rve counts/area/units, by_developer top-3)

Filter: quarter prefix (3-segment cadastral match). Spatial 500m radius —
после Phase 3 geocoding.

Tests: test_analyze_recent_permits.py (3 mock), comment updates на
inline_weights/market_price (shifted execute ordering).
2026-05-16 15:03:01 +03:00
..
__init__.py feat(cadastre): bulk_harvest worker + grid-walker + admin API (#168 PR3/5) (#171) 2026-05-15 13:31:32 +03:00
test_admin_cadastre.py feat(cadastre): bulk_harvest worker + grid-walker + admin API (#168 PR3/5) (#171) 2026-05-15 13:31:32 +03:00
test_analyze_inline_weights.py feat(permits): Celery beat monthly + analyze recent_permits (#105 Phase 4+5) 2026-05-16 15:03:01 +03:00
test_analyze_market_price.py feat(permits): Celery beat monthly + analyze recent_permits (#105 Phase 4+5) 2026-05-16 15:03:01 +03:00
test_analyze_recent_permits.py feat(permits): Celery beat monthly + analyze recent_permits (#105 Phase 4+5) 2026-05-16 15:03:01 +03:00
test_parcel_best_layouts.py feat(parcels): best-layouts endpoint + service (#113 PR C) (#196) 2026-05-16 09:10:06 +00:00
test_parcel_competitors.py feat(parcels): competitors endpoint (Forgejo #112 Phase 1 backend) (#191) 2026-05-15 22:21:05 +00:00
test_parcel_connection_points.py feat(parcels): connection-points endpoint (Forgejo #115 Phase 1 backend) (#190) 2026-05-16 05:58:27 +00:00