from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.ext.asyncio import AsyncSession from backend.app.core.dependencies import require_permissions from backend.app.db.session import get_db from backend.app.services.center_sync import get_sync_status, get_sync_token, trigger_center_sync router = APIRouter(prefix="/sync", tags=["sync"]) @router.post("/center", dependencies=[Depends(require_permissions(["users.view"]))]) async def sync_center(db: AsyncSession = Depends(get_db)): token = await get_sync_token(db) if not token: raise HTTPException(status_code=400, detail="未找到中台同步 token,请先通过带 token 的地址登录") await trigger_center_sync(token, restart=True, wait=False) return {"success": True} @router.get("/center/status", dependencies=[Depends(require_permissions(["users.view"]))]) async def sync_center_status(db: AsyncSession = Depends(get_db)): return await get_sync_status(db)