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:
chengkai3
2026-06-12 23:35:44 +08:00
parent 7a6dc9501b
commit 0f5b338a93
2 changed files with 9 additions and 3 deletions
+4 -3
View File
@@ -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)
+5
View File
@@ -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