From cad79887f5e821c0aa9d20779707ab873f2abe1e Mon Sep 17 00:00:00 2001 From: jingrow Date: Mon, 3 Nov 2025 04:28:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=99=BA=E8=83=BD=E4=BD=93?= =?UTF-8?q?=E5=B8=82=E5=9C=BA=E7=82=B9=E5=87=BB=E5=AE=89=E8=A3=85=E6=97=A0?= =?UTF-8?q?=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../local_ai_agent/local_ai_agent_toolbar.vue | 11 +++++++---- apps/jingrow/jingrow/api/node_management.py | 15 +++++++++++---- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/apps/jingrow/frontend/src/views/pagetype/local_ai_agent/local_ai_agent_toolbar.vue b/apps/jingrow/frontend/src/views/pagetype/local_ai_agent/local_ai_agent_toolbar.vue index a2e363b..fe4f40a 100644 --- a/apps/jingrow/frontend/src/views/pagetype/local_ai_agent/local_ai_agent_toolbar.vue +++ b/apps/jingrow/frontend/src/views/pagetype/local_ai_agent/local_ai_agent_toolbar.vue @@ -268,23 +268,26 @@ async function performPublish() { throw new Error(t('Agent flow data is required')) } - // 解析 agent_flow(如果是字符串) + // agent_flow 是 JSON 字段类型,从数据库获取时可能是字符串或对象 + // 统一处理:如果是字符串则解析为对象,如果是对象则直接使用 let flowData = agentFlow if (typeof agentFlow === 'string') { try { flowData = JSON.parse(agentFlow) } catch (e) { - // 如果解析失败,保持原样 + throw new Error(t('Invalid agent flow data format')) } + } else if (typeof agentFlow !== 'object' || agentFlow === null) { + throw new Error(t('Agent flow data must be a valid JSON object')) } - // 准备发布数据 + // 准备发布数据(flowData 现在是对象,后端会处理 JSON 序列化) const publishData = { agent_name: agentName, title: props.record?.title || agentName, subtitle: props.record?.subtitle || '', description: props.record?.description || '', - agent_flow: flowData + agent_flow: flowData // 对象格式,axios 会自动序列化为 JSON } const response = await axios.post('/jingrow/agent/publish', publishData, { diff --git a/apps/jingrow/jingrow/api/node_management.py b/apps/jingrow/jingrow/api/node_management.py index 8db078c..8ac0911 100644 --- a/apps/jingrow/jingrow/api/node_management.py +++ b/apps/jingrow/jingrow/api/node_management.py @@ -856,12 +856,9 @@ async def install_agent(payload: Dict[str, Any]): value=agent_name, ) - # 准备数据 agent_data = { "agent_name": agent_name, "agent_flow": json.dumps(agent_flow, ensure_ascii=False) if isinstance(agent_flow, dict) else agent_flow, - "status": "Active", - "enabled": 1, "trigger_mode": "Manual Trigger" } @@ -938,10 +935,20 @@ async def publish_agent_to_marketplace(payload: Dict[str, Any]): headers['Content-Type'] = 'application/json' # 准备 agent_data + # agent_flow 是 JSON 字段:前端发送的可能是对象(dict)或字符串 + # 需要统一转换为字符串格式发送到云端 + agent_flow_str = agent_flow + if isinstance(agent_flow, dict): + # 如果是对象,转为 JSON 字符串 + agent_flow_str = json.dumps(agent_flow, ensure_ascii=False) + elif not isinstance(agent_flow, str): + # 如果不是字符串也不是对象,尝试转为字符串 + agent_flow_str = json.dumps(agent_flow, ensure_ascii=False) + agent_data = { "agent_name": agent_name, "title": title, - "agent_flow": agent_flow if isinstance(agent_flow, str) else json.dumps(agent_flow, ensure_ascii=False), + "agent_flow": agent_flow_str, "description": description, "subtitle": subtitle or "" }