diff --git a/packages/service/core/workflow/dispatch/index.ts b/packages/service/core/workflow/dispatch/index.ts index 1b7032023..8e1c4bd41 100644 --- a/packages/service/core/workflow/dispatch/index.ts +++ b/packages/service/core/workflow/dispatch/index.ts @@ -69,21 +69,25 @@ const callbackMap: Record<`${FlowNodeTypeEnum}`, Function> = { [FlowNodeTypeEnum.globalVariable]: () => Promise.resolve() }; -/* running */ -export async function dispatchWorkFlow({ - res, - runtimeNodes = [], - runtimeEdges = [], - histories = [], - variables = {}, - user, - stream = false, - detail = false, - ...props -}: ChatDispatchProps & { +type Props = ChatDispatchProps & { runtimeNodes: RuntimeNodeItemType[]; runtimeEdges: RuntimeEdgeItemType[]; -}): Promise { +}; + +/* running */ +export async function dispatchWorkFlow(data: Props): Promise { + let { + res, + runtimeNodes = [], + runtimeEdges = [], + histories = [], + variables = {}, + user, + stream = false, + detail = false, + ...props + } = data; + // set sse response headers if (stream && res) { res.setHeader('Content-Type', 'text/event-stream;charset=utf-8'); @@ -93,7 +97,7 @@ export async function dispatchWorkFlow({ } variables = { - ...getSystemVariable({ timezone: user.timezone }), + ...getSystemVariable(data), ...variables }; @@ -384,9 +388,19 @@ export function responseStatus({ } /* get system variable */ -export function getSystemVariable({ timezone }: { timezone: string }) { +export function getSystemVariable({ + user, + appId, + chatId, + responseChatItemId, + histories = [] +}: Props) { return { - cTime: getSystemTime(timezone) + appId, + chatId, + responseChatItemId, + histories, + cTime: getSystemTime(user.timezone) }; } diff --git a/projects/app/data/pluginTemplates/customFeedback.json b/projects/app/data/pluginTemplates/customFeedback.json index a88818aa4..7933b4b33 100644 --- a/projects/app/data/pluginTemplates/customFeedback.json +++ b/projects/app/data/pluginTemplates/customFeedback.json @@ -7,336 +7,205 @@ "showStatus": false, "isTool": false, "weight": 0, - "modules": [ + "nodes": [ { - "moduleId": "w90mfp", + "nodeId": "lmpb9v2lo2lk", "name": "定义插件输入", - "flowType": "pluginInput", + "intro": "自定义配置外部输入,使用插件时,仅暴露自定义配置的输入", + "avatar": "/imgs/workflow/input.png", + "flowNodeType": "pluginInput", "showStatus": false, "position": { - "x": 515.1887815471657, - "y": -169.04905809653783 + "x": 616.4226348688949, + "y": -165.05298493910115 }, "inputs": [ { - "key": "defaultFeedback", - "valueType": "string", - "label": "默认反馈内容", - "type": "textarea", + "key": "system_addInputParam", + "valueType": "dynamic", + "label": "动态外部数据", + "renderTypeList": ["addInputParam"], "required": false, "description": "", - "edit": true, + "canEdit": true, + "value": "", "editField": { - "key": true, - "name": true, - "description": true, - "required": true, - "dataType": true, - "inputType": true + "key": true }, - "connected": true + "dynamicParamDefaultValue": { + "inputType": "reference", + "valueType": "string", + "required": true + } }, { - "key": "customFeedback", + "key": "反馈内容", "valueType": "string", - "label": "自定义反馈内容", - "type": "target", - "required": false, + "label": "反馈内容", + "renderTypeList": ["textarea"], "description": "", - "edit": true, + "canEdit": true, + "value": "", "editField": { - "key": true, - "name": true, - "description": true, - "required": true, - "dataType": true, - "inputType": true + "key": true }, - "connected": true + "maxLength": "", + "dynamicParamDefaultValue": { + "inputType": "reference", + "valueType": "string", + "required": true + } } ], "outputs": [ { - "key": "defaultFeedback", + "id": "ILc8GS7iU53M", + "key": "反馈内容", "valueType": "string", - "label": "默认反馈内容", - "type": "source", - "edit": true, - "targets": [ - { - "moduleId": "49de3g", - "key": "defaultFeedback" - } - ] + "label": "反馈内容", + "type": "static" }, { - "key": "customFeedback", - "valueType": "string", - "label": "自定义反馈内容", - "type": "source", - "edit": true, - "targets": [ - { - "moduleId": "49de3g", - "key": "customFeedback" - } - ] + "id": "2LCxDnOSculb", + "key": "system_addInputParam", + "valueType": "dynamic", + "label": "动态外部数据", + "type": "static" } ] }, { - "moduleId": "49de3g", - "name": "HTTP模块", - "flowType": "httpRequest468", + "nodeId": "i7uow4wj2wdp", + "name": "定义插件输出", + "intro": "自定义配置外部输出,使用插件时,仅暴露自定义配置的输出", + "avatar": "/imgs/workflow/output.png", + "flowNodeType": "pluginOutput", + "showStatus": false, + "position": { + "x": 1607.7142331269126, + "y": -151.8669210746189 + }, + "inputs": [], + "outputs": [] + }, + { + "nodeId": "CRT7oIEU8v2P", + "name": "HTTP 请求", + "intro": "可以发出一个 HTTP 请求,实现更为复杂的操作(联网搜索、数据库查询等)", + "avatar": "/imgs/workflow/http.png", + "flowNodeType": "httpRequest468", "showStatus": true, "position": { - "x": 1086.8929621216014, - "y": -451.7550009773506 + "x": 1070.8458389994719, + "y": -415.09022555407836 }, "inputs": [ { - "key": "switch", - "type": "target", - "label": "core.module.input.label.switch", - "description": "core.module.input.description.Trigger", - "valueType": "any", - "showTargetInApp": true, - "showTargetInPlugin": true, - "connected": false - }, - { - "key": "system_httpMethod", - "type": "custom", - "valueType": "string", - "label": "", - "value": "POST", - "list": [ - { - "label": "GET", - "value": "GET" - }, - { - "label": "POST", - "value": "POST" - } - ], - "required": true, - "showTargetInApp": false, - "showTargetInPlugin": false, - "connected": false - }, - { - "key": "system_httpReqUrl", - "type": "hidden", - "valueType": "string", - "label": "", - "description": "core.module.input.description.Http Request Url", - "placeholder": "https://api.ai.com/getInventory", - "required": false, - "showTargetInApp": false, - "showTargetInPlugin": false, - "value": "/api/plugins/customFeedback", - "connected": false - }, - { - "key": "system_httpHeader", - "type": "custom", - "valueType": "any", - "value": "", - "label": "", - "description": "core.module.input.description.Http Request Header", - "placeholder": "core.module.input.description.Http Request Header", - "required": false, - "showTargetInApp": false, - "showTargetInPlugin": false, - "connected": false - }, - { - "key": "system_httpParams", - "type": "hidden", - "valueType": "any", - "value": [], + "key": "system_addInputParam", + "renderTypeList": ["addInputParam"], + "valueType": "dynamic", "label": "", "required": false, - "showTargetInApp": false, - "showTargetInPlugin": false, - "connected": false - }, - { - "key": "system_httpJsonBody", - "type": "hidden", - "valueType": "any", - "value": "{\r\n \"appId\": \"{{appId}}\",\r\n \"chatId\": \"{{chatId}}\",\r\n \"responseChatItemId\": \"{{responseChatItemId}}\",\r\n \"defaultFeedback\": \"{{defaultFeedback}}\",\r\n \"customFeedback\": \"{{customFeedback}}\"\r\n}", - "label": "", - "required": false, - "showTargetInApp": false, - "showTargetInPlugin": false, - "connected": false - }, - { - "key": "DYNAMIC_INPUT_KEY", - "type": "target", - "valueType": "any", - "label": "core.workflow.inputType.dynamicTargetInput", - "description": "core.module.input.description.dynamic input", - "required": false, - "showTargetInApp": false, - "showTargetInPlugin": true, - "hideInApp": true, - "connected": false - }, - { - "valueType": "string", - "label": "defaultFeedback", - "type": "target", - "required": true, - "description": "", - "edit": true, + "description": "core.module.input.description.HTTP Dynamic Input", "editField": { "key": true, - "name": true, - "description": true, - "required": true, - "dataType": true + "valueType": true }, - "connected": true, - "key": "defaultFeedback" + "value": ["lmpb9v2lo2lk", "2LCxDnOSculb"] }, { "key": "customFeedback", "valueType": "string", "label": "customFeedback", - "type": "target", - "required": true, + "renderTypeList": ["reference"], "description": "", - "edit": true, + "canEdit": true, "editField": { "key": true, - "name": true, - "description": true, - "required": true, - "dataType": true + "valueType": true }, - "connected": true + "value": ["lmpb9v2lo2lk", "ILc8GS7iU53M"] }, { - "key": "system_addInputParam", - "type": "addInputParam", - "valueType": "any", + "key": "system_httpMethod", + "renderTypeList": ["custom"], + "valueType": "string", "label": "", + "value": "POST", + "required": true + }, + { + "key": "system_httpReqUrl", + "renderTypeList": ["hidden"], + "valueType": "string", + "label": "", + "description": "core.module.input.description.Http Request Url", + "placeholder": "https://api.ai.com/getInventory", "required": false, - "showTargetInApp": false, - "showTargetInPlugin": false, - "editField": { - "key": true, - "name": true, - "description": true, - "required": true, - "dataType": true - }, - "defaultEditField": { - "label": "", - "key": "", - "description": "", - "inputType": "target", - "valueType": "string", - "required": true - }, - "connected": false + "value": "/api/plugins/customFeedback" + }, + { + "key": "system_httpHeader", + "renderTypeList": ["custom"], + "valueType": "any", + "value": [], + "label": "", + "description": "core.module.input.description.Http Request Header", + "placeholder": "core.module.input.description.Http Request Header", + "required": false + }, + { + "key": "system_httpParams", + "renderTypeList": ["hidden"], + "valueType": "any", + "value": [], + "label": "", + "required": false + }, + { + "key": "system_httpJsonBody", + "renderTypeList": ["hidden"], + "valueType": "any", + "value": "{\r\n \"customFeedback\":\"{{customFeedback}}\",\r\n \"system_addInputParam\": {{system_addInputParam}}\r\n}", + "label": "", + "required": false } ], "outputs": [ { - "key": "finish", - "label": "core.module.output.label.running done", - "description": "core.module.output.description.running done", - "valueType": "boolean", - "type": "hidden", - "targets": [] - }, - { + "id": "system_addOutputParam", "key": "system_addOutputParam", - "type": "addOutputParam", - "valueType": "any", + "type": "dynamic", + "valueType": "dynamic", "label": "", - "targets": [], "editField": { "key": true, - "name": true, - "description": true, - "dataType": true - }, - "defaultEditField": { - "label": "", - "key": "", - "description": "", - "outputType": "source", - "valueType": "string" + "valueType": true } }, { - "type": "source", - "valueType": "string", - "label": "response", - "description": "", - "edit": true, - "editField": { - "key": true, - "name": true, - "description": true, - "dataType": true - }, - "targets": [ - { - "moduleId": "s15f3v", - "key": "text" - } - ], - "key": "response" - } - ] - }, - { - "moduleId": "s15f3v", - "name": "指定回复", - "flowType": "answerNode", - "position": { - "x": 1705.6337348182756, - "y": -37.53826066726282 - }, - "inputs": [ - { - "key": "switch", - "type": "target", - "label": "core.module.input.label.switch", - "description": "core.module.input.description.Trigger", + "id": "httpRawResponse", + "key": "httpRawResponse", + "label": "原始响应", + "description": "HTTP请求的原始响应。只能接受字符串或JSON类型响应数据。", "valueType": "any", - "showTargetInApp": true, - "showTargetInPlugin": true, - "connected": false - }, - { - "key": "text", - "type": "textarea", - "valueType": "any", - "label": "core.module.input.label.Response content", - "description": "core.module.input.description.Response content", - "placeholder": "core.module.input.description.Response content", - "showTargetInApp": true, - "showTargetInPlugin": true, - "connected": true - } - ], - "outputs": [ - { - "key": "finish", - "label": "core.module.output.label.running done", - "description": "core.module.output.description.running done", - "valueType": "boolean", - "type": "hidden", - "targets": [] + "type": "static" } ] } + ], + "edges": [ + { + "source": "lmpb9v2lo2lk", + "target": "CRT7oIEU8v2P", + "sourceHandle": "lmpb9v2lo2lk-source-right", + "targetHandle": "CRT7oIEU8v2P-target-left" + }, + { + "source": "CRT7oIEU8v2P", + "target": "i7uow4wj2wdp", + "sourceHandle": "CRT7oIEU8v2P-source-right", + "targetHandle": "i7uow4wj2wdp-target-left" + } ] } diff --git a/projects/app/src/service/support/wallet/usage/push.ts b/projects/app/src/service/support/wallet/usage/push.ts index 926cc07d5..c10e4c8bf 100644 --- a/projects/app/src/service/support/wallet/usage/push.ts +++ b/projects/app/src/service/support/wallet/usage/push.ts @@ -42,7 +42,6 @@ export const pushChatUsage = ({ addLog.info(`finish completions`, { source, teamId, - tmbId, totalPoints }); return { totalPoints };