From c7d694d77129cb2c722d374665502e366f09bb95 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 14 Feb 2026 14:33:38 +0800 Subject: [PATCH] haha --- server/api/tasks.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/server/api/tasks.py b/server/api/tasks.py index ee10048..a84479c 100644 --- a/server/api/tasks.py +++ b/server/api/tasks.py @@ -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: