haha
This commit is contained in:
@@ -6,23 +6,34 @@ from __future__ import annotations
|
||||
|
||||
from typing import List, Optional
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
import json
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, Request
|
||||
|
||||
from common.protocol import TaskStatus
|
||||
from server.models import TaskCreate, TaskOut
|
||||
from server.core.worker_manager import worker_manager
|
||||
from server.core.task_dispatcher import task_dispatcher
|
||||
from server.api.deps import require_auth
|
||||
from server.api.deps import require_auth, parse_body
|
||||
|
||||
router = APIRouter(prefix="/api/tasks", tags=["tasks"], dependencies=[Depends(require_auth)])
|
||||
|
||||
|
||||
@router.post("", response_model=TaskOut, status_code=201)
|
||||
async def create_task(req: TaskCreate):
|
||||
async def create_task(request: Request):
|
||||
"""
|
||||
提交一个新任务。
|
||||
提交一个新任务(支持 JSON 和 form-data)。
|
||||
路由规则:worker_id > account_name。
|
||||
"""
|
||||
body = await parse_body(request)
|
||||
# form-data 中 params 可能是 JSON 字符串,需要解析
|
||||
params_raw = body.get("params", {})
|
||||
if isinstance(params_raw, str):
|
||||
try:
|
||||
body["params"] = json.loads(params_raw) if params_raw.strip() else {}
|
||||
except (json.JSONDecodeError, ValueError):
|
||||
body["params"] = {}
|
||||
req = TaskCreate(**body)
|
||||
target_worker_id = req.worker_id
|
||||
|
||||
if not target_worker_id and req.account_name:
|
||||
|
||||
Reference in New Issue
Block a user