fix(workflow): move file URL retrieval into try block to allow exceptions

This commit is contained in:
Eternity
2026-02-06 16:59:51 +08:00
parent c05d95924f
commit e253fba2e9
2 changed files with 25 additions and 32 deletions

View File

@@ -40,10 +40,7 @@ class FileInput(BaseModel):
@classmethod
def validate_type(cls, v):
"""验证文件类型"""
try:
return FileType.trans(v)
except ValueError:
raise ValueError(f"无效的文件类型: {v}")
return FileType.trans(v)
@field_validator("upload_file_id")
@classmethod

View File

@@ -446,19 +446,9 @@ class WorkflowService:
code=BizCode.CONFIG_MISSING,
message=f"工作流配置不存在: app_id={app_id}"
)
files = []
if payload.files:
for file in payload.files:
files.append(
{
"type": file.type,
"url": await self.multimodal_service.get_file_url(file),
"__file": True
}
)
input_data = {"message": payload.message, "variables": payload.variables,
"conversation_id": payload.conversation_id, "files": files}
"conversation_id": payload.conversation_id, "files": [file.model_dump() for file in payload.files]}
# 转换 conversation_id 为 UUID
conversation_id_uuid = uuid.UUID(payload.conversation_id) if payload.conversation_id else None
@@ -488,6 +478,17 @@ class WorkflowService:
from app.core.workflow.executor import execute_workflow
try:
files = []
if payload.files:
for file in payload.files:
files.append(
{
"type": file.type,
"url": await self.multimodal_service.get_file_url(file),
"__file": True
}
)
input_data["files"] = files
# 更新状态为运行中
self.update_execution_status(execution.execution_id, "running")
@@ -634,19 +635,8 @@ class WorkflowService:
message=f"工作流配置不存在: app_id={app_id}"
)
files = []
if payload.files:
for file in payload.files:
files.append(
{
"type": file.type,
"url": await self.multimodal_service.get_file_url(file),
"__file": True
}
)
input_data = {"message": payload.message, "variables": payload.variables,
"conversation_id": payload.conversation_id, "files": files}
"conversation_id": payload.conversation_id, "files": [file.model_dump() for file in payload.files]}
# 转换 conversation_id 为 UUID
conversation_id_uuid = uuid.UUID(payload.conversation_id) if payload.conversation_id else None
@@ -670,12 +660,18 @@ class WorkflowService:
"execution_config": config.execution_config
}
# 4. 获取工作空间 ID从 app 获取)
# 5. 流式执行工作流
try:
# 更新状态为运行中
files = []
if payload.files:
for file in payload.files:
files.append(
{
"type": file.type,
"url": await self.multimodal_service.get_file_url(file),
"__file": True
}
)
input_data["files"] = files
self.update_execution_status(execution.execution_id, "running")
executions = self.execution_repo.get_by_conversation_id(conversation_id=conversation_id_uuid)