fix(workflow): move file URL retrieval into try block to allow exceptions
This commit is contained in:
@@ -40,10 +40,7 @@ class FileInput(BaseModel):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def validate_type(cls, v):
|
def validate_type(cls, v):
|
||||||
"""验证文件类型"""
|
"""验证文件类型"""
|
||||||
try:
|
return FileType.trans(v)
|
||||||
return FileType.trans(v)
|
|
||||||
except ValueError:
|
|
||||||
raise ValueError(f"无效的文件类型: {v}")
|
|
||||||
|
|
||||||
@field_validator("upload_file_id")
|
@field_validator("upload_file_id")
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
@@ -446,19 +446,9 @@ class WorkflowService:
|
|||||||
code=BizCode.CONFIG_MISSING,
|
code=BizCode.CONFIG_MISSING,
|
||||||
message=f"工作流配置不存在: app_id={app_id}"
|
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,
|
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
|
||||||
conversation_id_uuid = uuid.UUID(payload.conversation_id) if payload.conversation_id else None
|
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
|
from app.core.workflow.executor import execute_workflow
|
||||||
|
|
||||||
try:
|
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")
|
self.update_execution_status(execution.execution_id, "running")
|
||||||
|
|
||||||
@@ -634,19 +635,8 @@ class WorkflowService:
|
|||||||
message=f"工作流配置不存在: app_id={app_id}"
|
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,
|
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
|
||||||
conversation_id_uuid = uuid.UUID(payload.conversation_id) if payload.conversation_id else None
|
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
|
"execution_config": config.execution_config
|
||||||
}
|
}
|
||||||
|
|
||||||
# 4. 获取工作空间 ID(从 app 获取)
|
|
||||||
|
|
||||||
# 5. 流式执行工作流
|
|
||||||
|
|
||||||
try:
|
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")
|
self.update_execution_status(execution.execution_id, "running")
|
||||||
executions = self.execution_repo.get_by_conversation_id(conversation_id=conversation_id_uuid)
|
executions = self.execution_repo.get_by_conversation_id(conversation_id=conversation_id_uuid)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user