2026-07-14 01:38:41 +00:00
|
|
|
import asyncio
|
|
|
|
|
|
|
|
|
|
from fastapi import APIRouter, Depends, HTTPException, Request
|
|
|
|
|
|
2026-07-15 06:33:33 +00:00
|
|
|
from app.core.security import require_permission
|
2026-07-14 01:38:41 +00:00
|
|
|
from app.services import publish_service
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
router = APIRouter()
|
|
|
|
|
PUBLISH_LOCK = asyncio.Lock()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.post("/admin/publish")
|
2026-07-15 06:33:33 +00:00
|
|
|
async def admin_publish_version(request: Request, auth=Depends(require_permission("publish:manage"))):
|
2026-07-14 01:38:41 +00:00
|
|
|
if PUBLISH_LOCK.locked():
|
|
|
|
|
raise HTTPException(status_code=409, detail="已有版本发布任务正在进行,请等待完成后再发布")
|
|
|
|
|
async with PUBLISH_LOCK:
|
|
|
|
|
return await publish_service.publish_version(request)
|