gendesign/backend/tests/api/v1
lekss361 0135f3c7c4 feat(#104): add POST /admin/scrape/ekburg-permits for manual trigger
Wraps refresh_all / refresh_year Celery tasks behind the existing
AdminTokenAuth gate so the table can be populated on demand after
first deploy instead of waiting for the monthly beat (1st of month).

- TriggerEkburgPermitsRequest: year int|None, ge=2022 le=2030
- year=None  -> refresh_all.apply_async()  (scope all_years_2022_2026)
- year=N     -> refresh_year.apply_async(args=[N])  (scope year_N)
- 4 smoke tests: all/year/invalid_year/no_token
2026-05-17 08:13:32 +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_admin_ekburg_permits.py feat(#104): add POST /admin/scrape/ekburg-permits for manual trigger 2026-05-17 08:13:32 +03:00
test_analyze_inline_weights.py feat(permits): Celery beat monthly + analyze recent_permits (#105 Phase 4+5) (#213) 2026-05-16 12:23:52 +00:00
test_analyze_market_price.py feat(permits): Celery beat monthly + analyze recent_permits (#105 Phase 4+5) (#213) 2026-05-16 12:23:52 +00:00
test_analyze_recent_permits.py feat(permits): Celery beat monthly + analyze recent_permits (#105 Phase 4+5) (#213) 2026-05-16 12:23:52 +00: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 fix(#112): remove broken status='sold' filter from competitors avg_price query 2026-05-16 22:46:10 +03: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