fix:[FL-99][修复ATP版本上传接口响应模型不匹配导致500错误]
问题:POST /api/v1/atp/assets/{asset_id}/releases/upload 接口声明
response_model=AtpAssetReleaseDetail,但实际返回 {task_id, status} 字典,
导致FastAPI响应验证失败,返回500错误。
解决方案:
1. 新增 AtpAssetReleaseUploadResponse 响应模型,包含 task_id 和 status 字段
2. 更新接口声明使用正确的响应模型
3. 返回类型注解改为 AtpAssetReleaseUploadResponse
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
@@ -14,6 +14,7 @@ from ...schemas.atp_asset import (
|
||||
AtpAssetReleaseDetail,
|
||||
AtpAssetReleaseListResponse,
|
||||
AtpAssetReleaseUpdateRequest,
|
||||
AtpAssetReleaseUploadResponse,
|
||||
AtpAssetRunDetail,
|
||||
AtpAssetRunListResponse,
|
||||
AtpAssetRunRequest,
|
||||
@@ -152,14 +153,14 @@ def create_atp_asset_release_endpoint(
|
||||
return create_release(db, asset_id=asset_id, payload=payload, actor_user_id=current_user.user.id)
|
||||
|
||||
|
||||
@router.post("/assets/{asset_id}/releases/upload", response_model=AtpAssetReleaseDetail)
|
||||
@router.post("/assets/{asset_id}/releases/upload", response_model=AtpAssetReleaseUploadResponse)
|
||||
def upload_atp_asset_release_endpoint(
|
||||
asset_id: str,
|
||||
release_tag: str | None = Form(default=None),
|
||||
archive: UploadFile = File(...),
|
||||
current_user: CurrentUser = Depends(require_permission("atp.manage")),
|
||||
db: Session = Depends(get_db),
|
||||
) -> dict:
|
||||
) -> AtpAssetReleaseUploadResponse:
|
||||
from ...tasks.atp_asset_tasks import process_release_archive_upload_task
|
||||
|
||||
try:
|
||||
@@ -178,7 +179,7 @@ def upload_atp_asset_release_endpoint(
|
||||
actor_user_id=current_user.user.id,
|
||||
)
|
||||
|
||||
return {"task_id": task.id, "status": "processing"}
|
||||
return AtpAssetReleaseUploadResponse(task_id=task.id, status="processing")
|
||||
|
||||
|
||||
@router.get("/releases", response_model=AtpAssetReleaseListResponse)
|
||||
|
||||
@@ -204,3 +204,8 @@ class AtpAssetRunRequest(BaseModel):
|
||||
extra_args: list[str] = Field(default_factory=list, max_length=32)
|
||||
environment: dict[str, str] = Field(default_factory=dict, max_length=16)
|
||||
dry_run: bool = False
|
||||
|
||||
|
||||
class AtpAssetReleaseUploadResponse(BaseModel):
|
||||
task_id: str
|
||||
status: str
|
||||
|
||||
Reference in New Issue
Block a user