diff --git a/backend/app/api/v1/admin_scrape.py b/backend/app/api/v1/admin_scrape.py index 368f314f..a5cab861 100644 --- a/backend/app/api/v1/admin_scrape.py +++ b/backend/app/api/v1/admin_scrape.py @@ -367,6 +367,23 @@ def list_logs( # ── Objective ETL (Антоновский SQLite → PG) ───────────────────────────────── +@router.post("/poi-sync") +def trigger_poi_sync( + x_admin_token: Annotated[str | None, Header(alias="X-Admin-Token")] = None, +) -> dict[str, Any]: + """Manual trigger для синхронизации OSM POI ЕКБ из Overpass API. + + Обычно запускается еженедельно через beat (понед 3:00 МСК). + Этот endpoint — для ad-hoc запуска (например после первого деплоя + или при создании нового тестового участка). + """ + _check_token(x_admin_token) + from app.workers.tasks.poi_sync import sync_osm_poi_ekb + + result = sync_osm_poi_ekb.apply_async() + return {"task_id": result.id, "queued_at": "now"} + + class TriggerObjectiveEtlRequest(BaseModel): sqlite_path: str | None = Field( default=None,