fix(workflow): Fix missing user ID in trial run sessions
This commit is contained in:
@@ -11,15 +11,16 @@ from app.core.response_utils import success
|
|||||||
from app.db import get_db
|
from app.db import get_db
|
||||||
from app.dependencies import get_current_user, cur_workspace_access_guard
|
from app.dependencies import get_current_user, cur_workspace_access_guard
|
||||||
from app.models import User
|
from app.models import User
|
||||||
from app.models.app_model import AppType, App
|
from app.models.app_model import AppType
|
||||||
from app.repositories import knowledge_repository
|
from app.repositories import knowledge_repository
|
||||||
|
from app.repositories.end_user_repository import EndUserRepository
|
||||||
from app.schemas import app_schema
|
from app.schemas import app_schema
|
||||||
from app.schemas.response_schema import PageData, PageMeta
|
from app.schemas.response_schema import PageData, PageMeta
|
||||||
|
from app.schemas.workflow_schema import WorkflowConfig as WorkflowConfigSchema
|
||||||
from app.schemas.workflow_schema import WorkflowConfigUpdate
|
from app.schemas.workflow_schema import WorkflowConfigUpdate
|
||||||
from app.services import app_service, workspace_service
|
from app.services import app_service, workspace_service
|
||||||
from app.services.agent_config_helper import enrich_agent_config
|
from app.services.agent_config_helper import enrich_agent_config
|
||||||
from app.services.app_service import AppService
|
from app.services.app_service import AppService
|
||||||
from app.schemas.workflow_schema import WorkflowConfig as WorkflowConfigSchema
|
|
||||||
from app.services.workflow_service import WorkflowService, get_workflow_service
|
from app.services.workflow_service import WorkflowService, get_workflow_service
|
||||||
|
|
||||||
router = APIRouter(prefix="/apps", tags=["Apps"])
|
router = APIRouter(prefix="/apps", tags=["Apps"])
|
||||||
@@ -405,6 +406,15 @@ async def draft_run(
|
|||||||
# 只读操作,允许访问共享应用
|
# 只读操作,允许访问共享应用
|
||||||
service._validate_app_accessible(app, workspace_id)
|
service._validate_app_accessible(app, workspace_id)
|
||||||
|
|
||||||
|
if not payload.user_id:
|
||||||
|
end_user_repo = EndUserRepository(db)
|
||||||
|
new_end_user = end_user_repo.get_or_create_end_user(
|
||||||
|
app_id=app_id,
|
||||||
|
other_id=str(current_user.id),
|
||||||
|
original_user_id=str(current_user.id) # Save original user_id to other_id
|
||||||
|
)
|
||||||
|
payload.user_id = str(new_end_user.id)
|
||||||
|
|
||||||
# 处理会话ID(创建或验证)
|
# 处理会话ID(创建或验证)
|
||||||
conversation_id = await draft_service._ensure_conversation(
|
conversation_id = await draft_service._ensure_conversation(
|
||||||
conversation_id=payload.conversation_id,
|
conversation_id=payload.conversation_id,
|
||||||
|
|||||||
@@ -483,14 +483,6 @@ class WorkflowService:
|
|||||||
try:
|
try:
|
||||||
# 更新状态为运行中
|
# 更新状态为运行中
|
||||||
self.update_execution_status(execution.execution_id, "running")
|
self.update_execution_status(execution.execution_id, "running")
|
||||||
with get_db_context() as db:
|
|
||||||
end_user_repo = EndUserRepository(db)
|
|
||||||
new_end_user = end_user_repo.get_or_create_end_user(
|
|
||||||
app_id=app_id,
|
|
||||||
other_id=payload.user_id,
|
|
||||||
original_user_id=payload.user_id # Save original user_id to other_id
|
|
||||||
)
|
|
||||||
end_user_id = str(new_end_user.id)
|
|
||||||
|
|
||||||
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)
|
||||||
|
|
||||||
@@ -511,7 +503,7 @@ class WorkflowService:
|
|||||||
input_data=input_data,
|
input_data=input_data,
|
||||||
execution_id=execution.execution_id,
|
execution_id=execution.execution_id,
|
||||||
workspace_id=str(workspace_id),
|
workspace_id=str(workspace_id),
|
||||||
user_id=end_user_id
|
user_id=payload.user_id
|
||||||
)
|
)
|
||||||
|
|
||||||
# 更新执行结果
|
# 更新执行结果
|
||||||
@@ -638,14 +630,6 @@ class WorkflowService:
|
|||||||
try:
|
try:
|
||||||
# 更新状态为运行中
|
# 更新状态为运行中
|
||||||
self.update_execution_status(execution.execution_id, "running")
|
self.update_execution_status(execution.execution_id, "running")
|
||||||
with get_db_context() as db:
|
|
||||||
end_user_repo = EndUserRepository(db)
|
|
||||||
new_end_user = end_user_repo.get_or_create_end_user(
|
|
||||||
app_id=app_id,
|
|
||||||
other_id=payload.user_id,
|
|
||||||
original_user_id=payload.user_id # Save original user_id to other_id
|
|
||||||
)
|
|
||||||
end_user_id = str(new_end_user.id)
|
|
||||||
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)
|
||||||
|
|
||||||
for exec_res in executions:
|
for exec_res in executions:
|
||||||
@@ -665,7 +649,7 @@ class WorkflowService:
|
|||||||
input_data=input_data,
|
input_data=input_data,
|
||||||
execution_id=execution.execution_id,
|
execution_id=execution.execution_id,
|
||||||
workspace_id=str(workspace_id),
|
workspace_id=str(workspace_id),
|
||||||
user_id=end_user_id
|
user_id=payload.user_id
|
||||||
):
|
):
|
||||||
if event.get("event") == "workflow_end":
|
if event.get("event") == "workflow_end":
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user