This commit is contained in:
Your Name
2026-02-14 14:33:38 +08:00
parent c030902c0a
commit c7d694d771

View File

@@ -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: