import cameraSvg from './icon/camera.svg' import videoSvg from './icon/video.svg' import loopSvg from './icon/loop.svg' import stopLoopSvg from './icon/stopLoop.svg' import switchSvg from './icon/switch.svg' import startSvg from './icon/start.svg' import endSvg from './icon/end.svg' import microphoneSvg from './icon/microphone.svg' import sleepSvg from './icon/sleep.svg' import planSvg from './icon/plan.svg' import awakenSvg from './icon/awaken.svg' import dialogueSvg from './icon/dialogue.svg' import audioSvg from './icon/audio.svg' import touchSvg from './icon/touch.svg' import expressionSvg from './icon/expression.svg' const deviceOptions = () => { return [{ value: 'cam1', label: 'cam1' }, { value: 'cam2', label: 'cam2' }, { value: 'cam3', label: 'cam3' }, { value: 'cam4', label: 'cam4' }] } const audioOptions = () => { return [{ value: 'spk1', label: 'spk1' }] } const booleanOptions = () => [ { value: false, label: '否' }, { value: true, label: '是' } ] const httpMethodOptions = () => { return [{ value: 'POST', label: 'POST' }, { value: 'GET', label: 'GET' }, { value: 'PUT', label: 'PUT' }, { value: 'DELETE', label: 'DELETE' }] } const expressOptions = () => { return [{ value: 1, label: '高兴' }, { value: 2, label: '惊讶' }, { value: 3, label: '愤怒' }, { value: 4, label: '悲伤' }, { value: 5, label: '睡觉' }, { value: 6, label: '打哈欠' }] } const taskTypeOptions = () => { return [{ value: 'voice', label: '语音交互' }, { value: 'touch', label: '触控交互' }] } const voiceOptions = () => { return [{ value: 'x4_xiaoyan', label: 'x4_xiaoyan' }] } const inspectionEventTypes = () => { return [{ value: 'No-Glove', label: '没戴手套' }, { value: 'No-Helmet-Glove', label: '没戴头盔' }] } export const collapseList = [ { collapseTitle: "相机", nodeList: [ { icon: cameraSvg, name: "开启相机", type: "serviceNode", desc: "在获取相机照片时,需要先启动相机", action: 'CAMERA_START', nodeType: 'EDGE', nodeParams: [ { name: "deviceId", type: "input", input: "", componentType: 'select', selectOptions: deviceOptions(), disabled: true } ], outputParams: [], outputType: 'json' }, { icon: cameraSvg, name: "获取图片", type: "serviceNode", desc: "获取相机拍摄的照片", action: 'CAMERA_GETRGBIMAGE', nodeType: 'EDGE', nodeParams: [ { name: "deviceId", type: "input", input: "", componentType: 'select', selectOptions: deviceOptions(), disabled: true } ], outputType: 'img', outputParams: [{ name: 'imageUrl', type: 'array', desc: '图片地址数组', children: [], disabled: true }] }, { icon: cameraSvg, name: "关闭相机", type: "serviceNode", desc: "获取相机照片后,关闭该相机", action: 'CAMERA_STOP', nodeType: 'EDGE', nodeParams: [ { name: "deviceId", type: "input", input: "", componentType: 'select', selectOptions: deviceOptions(), disabled: true } ], outputParams: [], outputType: 'json' }, ], }, { collapseTitle: "录像", nodeList: [ { icon: videoSvg, name: "开启录像", type: "serviceNode", desc: "开启摄像头,并开始录像", action: 'CAMERA_RECORDING_START', nodeType: 'EDGE', nodeParams: [ { name: "deviceId", type: "input", input: "", componentType: 'select', selectOptions: deviceOptions(), disabled: true } ], outputParams: [], outputType: 'json' }, { icon: videoSvg, name: "结束录像", type: "serviceNode", desc: "停止录像,并关闭摄像头", action: 'CAMERA_RECORDING_STOP', nodeType: 'EDGE', nodeParams: [ { name: "deviceId", type: "input", input: "", componentType: 'select', selectOptions: deviceOptions(), disabled: true } ], outputType: 'video', outputParams: [{ name: 'videoUrl', type: 'array', children: [], desc: '视频播放地址数组', disabled: true}] } ], }, { collapseTitle: "功能", nodeList: [ { icon: loopSvg, name: "循环", type: "loop", action: 'START_LOOP', desc: "实现对列表对象循环执行一系列任务", nodeParams: [{ name: "loopNum", type: "input", input: null, quote: "" }], outputParams: [], outputType: 'json' }, { icon: stopLoopSvg, name: "结束循环", type: "stopLoop", action: 'STOP_LOOP', desc: "用于立即终止当前所在的循环,跳出循环体", }, // { // icon: startSvg, // name: "单次循环开始", // type: "subStart", // action: 'SUB_START', // desc: "循环体内部工作流的开始节点,开始循环体内部的单次流程", // }, // { // icon: endSvg, // name: "单次循环结束", // type: "subEnd", // action: 'SUB_END', // desc: "循环体内部工作流的终止节点,结束循环体内部的单次流程", // }, { icon: switchSvg, name: "分支", type: "branch", action: 'BRANCH', desc: "连接多个下游分支,根据设定的条件按照顺序查找的方式来匹配运行的分支,如果匹配到某条件则只运行该条件对应的分支,否则继续匹配下一条件直至结束", }, { icon: sleepSvg, name: "睡眠", type: "sleep", desc: "用于睡眠整个流程,表示延迟多少毫秒", action: 'sleep', nodeParams: [ { name: "delayMs", type: "input", componentType: 'number', input: 0, disabled: true } ], outputParams: [], outputType: 'json' }, { icon: expressionSvg, name: "HTTP请求", type: "http", desc: "HTTP请求", action: 'HTTP', nodeType: 'HTTP', nodeParams: [ { name: "config", type: "input", input: "", children: [ { name: "url", type: "input", input: "", disabled: true, required: true }, { name: "method", type: "input", input: "POST", componentType: 'select', selectOptions: httpMethodOptions(), disabled: true }, { name: "timeout", type: "input", input: "10000", componentType: 'number', required: false, disabled: true } ], disabled: true, required: true }, { name: "headers", type: "input", input: "", children: [ { name: "", type: "input", input: ""} ], disabled: true, required: true }, { name: "params", type: "input", input: "", children: [ { name: "", type: "input", input: ""} ], disabled: true, required: true }, { name: "body", type: "input", input: "", children: [ { name: 'bodyType', type: "input", input: "json", disabled: true }, { name: 'json', type: "input", input: '{"a": 123}' }, { name: 'formData', type: "input", input: "", children: []} ], required: true }, ], outputType: 'json', outputParams: [{ name: 'result', type: 'Object', children: [], desc: 'HTTP请求结果'}] }, { icon: expressionSvg, name: "代码", type: "code", desc: "js代码", action: 'CODE', canAddFormItem: true, nodeParams: [ { name: "input", type: "input", input: "", required: true }, { name: "code", type: "input", input: ` // 方法定义不能修改 function handler(params) { // 返回值是一个可序列化成 json 的 dict 或 object const result ={ type: 2, message: params.input } return result } `, required: true } ], outputType: 'json', outputParams: [{ name: 'result', type: 'object', children: [ {name: 'type', type: 'number', desc: '占位属性'}, {name: 'message', type: 'string', desc: '占位属性'} ], desc: 'js节点返回'}] }, { icon: microphoneSvg, name: "获取当前循环对象", type: "currentLoop", desc: "获取当前循环对象", action: 'GET_CURRENT_OBJECT', nodeParams: [ { name: "array", type: "input", input: "" } ], outputType: 'json', outputParams: [ { name: 'index', type: 'number', desc: '索引'}, { name: 'object', type: 'object', children: [ { name: 'test', type: 'string', desc: '占位属性' } ], desc: '当前循环对象', } ] }, ], }, { collapseTitle: "机器人", nodeList: [ { icon: videoSvg, name: "AGV控制", type: "serviceNode", desc: "控制机器人的底盘", action: 'AGV_MOVE_TO_POINT', nodeType: 'EDGE', nodeParams: [ { name: "deviceId", type: "input", input: "", disabled: true }, { name: "x", type: "input", input: "", disabled: true }, { name: "y", type: "input", input: "", disabled: true }, { name: "theta", type: "input", input: "", disabled: true }, ], outputType: 'json' }, { icon: videoSvg, name: "AGV站点导航", type: "serviceNode", desc: "从AGV站点列表选择目标站点并导航", action: 'AGV_MOVE_TO_STATION', nodeType: 'EDGE', nodeParams: [ { name: "deviceId", type: "input", input: "", disabled: true }, { name: "stationId", type: "input", input: "", componentType: 'select', selectOptions: [], forceSelect: true, disabled: true } ], outputType: 'json' }, { icon: cameraSvg, name: "通用指令", type: "device_universal", desc: "执行设备通用指令", action: 'DEVICE_EXECUTE_JSON_COMMAND', nodeType: 'EDGE', nodeParams: [ { name: "deviceId", type: "input", input: "", required: false, disabled: true }, { name: "requestJson", type: "input", input: `{ "a":123 }`, required: false, disabled: true }, ], outputParams: [], outputType: 'json' }, { icon: videoSvg, name: "机械臂", type: "serviceNode", desc: "控制机器人的手臂", action: 'ARM_MOVE_TO_POINT', nodeType: 'EDGE', nodeParams: [ { name: "deviceId", type: "input", input: "", disabled: true }, { name: "x", type: "input", input: "", disabled: true }, { name: "y", type: "input", input: "", disabled: true }, { name: "z", type: "input", input: "", disabled: true }, { name: "rx", type: "input", input: "", disabled: true }, { name: "ry", type: "input", input: "", disabled: true }, { name: "rz", type: "input", input: "", disabled: true }, { name: "velocity", type: "input", componentType: 'number', max: 5, step: 0.1, input: 0, disabled: true }, { name: "acceleration", type: "input", componentType: 'number', max: 5, step: 0.1, input: 0, disabled: true }, ], outputType: 'json' }, { icon: videoSvg, name: "机械臂关节运动", type: "serviceNode", desc: "通过关节空间插值运动到目标关节位置", action: 'ARM_MOVE_TO_J', nodeType: 'EDGE', nodeParams: [ { name: "deviceId", type: "input", input: "", disabled: true }, { name: "target", type: "input", input: "[0, 0, 0, 0, 0, 0]", disabled: true }, { name: "velocity", type: "input", componentType: 'number', max: 5, step: 0.1, input: 0.5, disabled: true }, { name: "acceleration", type: "input", componentType: 'number', max: 5, step: 0.1, input: 1, disabled: true }, ], outputType: 'json' }, { icon: cameraSvg, name: "开始监听报警事件", type: "serviceNode", desc: "开始监听报警事件", action: 'INSPECTION_ALERT_LISTEN_START', nodeType: 'EDGE', nodeParams: [ { name: "terminalId", type: "input", input: "", disabled: true }, { name: "eventTypes", type: "input", input: "", componentType: 'select', selectOptions: inspectionEventTypes(), disabled: true } ], outputParams: [], outputType: 'json' }, { icon: cameraSvg, name: "结束监听报警事件", type: "serviceNode", desc: "结束监听报警事件", action: 'INSPECTION_ALERT_LISTEN_STOP', nodeType: 'EDGE', nodeParams: [ { name: "terminalId", type: "input", input: "", disabled: true }, { name: "eventTypes", type: "input", input: "", componentType: 'select', selectOptions: inspectionEventTypes(), disabled: true } ], outputParams: [], outputType: 'json' }, { icon: dialogueSvg, name: "巡检仪表读数识别", type: "recognize", desc: "巡检仪表读数识别", action: 'INSPECTION_METER_RECOGNIZE', nodeType: "LLM", outputType: 'json', nodeParams: [ { name: 'imageUrl', type: "input", input: "", disabled: true }, { name: 'resultName', type: "input", input: "", disabled: true }, { name: "alarmRules", type: "input", input: [], disabled: true } ], outputParams: [] }, { icon: cameraSvg, name: "人工巡检判断", type: "serviceNode", desc: "创建人工巡检判断任务", action: 'INSPECTION_MANUAL_REVIEW_CREATE', nodeType: 'EDGE', nodeParams: [ { name: "resultName", type: "input", input: "", disabled: true }, { name: "videoUrl", type: "input", input: "", required: false, disabled: true }, { name: "imageUrl", type: "input", input: "", required: false, disabled: true }, { name: "reviewCriteria", type: "input", input: "", disabled: true }, { name: "defaultAlarmLevel", type: "input", componentType: 'number', max: 3, step: 1, input: 1, disabled: true }, ], outputParams: [], outputType: 'json' }, ], }, { collapseTitle: "音频", nodeList: [ { icon: microphoneSvg, name: "启动麦克风", type: "serviceNode", desc: "用于启动麦克风的节点", action: 'MICROPHONE_START', nodeType: 'EDGE', nodeParams: [ { name: "deviceId", type: "input", input: "", componentType: 'select', selectOptions: audioOptions(), disabled: true } ], outputType: 'json' }, { icon: microphoneSvg, name: "停止麦克风", type: "serviceNode", desc: "用于停止麦克风的节点", action: 'MICROPHONE_STOP', nodeType: 'EDGE', nodeParams: [ { name: "deviceId", type: "input", input: "", componentType: 'select', selectOptions: audioOptions(), disabled: true } ], outputType: 'json' }, { icon: audioSvg, name: "播放音频", type: "serviceNode", desc: "用于播放音频的节点", action: 'SPEAKER_PLAYAUDIO', nodeParams: [ { name: "deviceId", type: "input", input: "", componentType: 'select', selectOptions: audioOptions(), disabled: true } ], outputType: 'json' }, ], }, { collapseTitle: "大模型", nodeList: [ { icon: microphoneSvg, name: "获取触控坐标", type: "serviceNode", desc: "用于获取触控坐标的节点", action: 'TOUCH_COORDINATES', nodeType: "LLM", nodeParams: [ { name: "targetFeature", type: "input", input: "运动模式", disabled: true }, { name: "manufacturer", type: "input", input: "xiaomi", disabled: true }, { name: "vehType", type: "input", input: "su7", disabled: true }, ], outputType: 'json', outputParams: [{ name: 'coordinates', type: 'object', children: [ { name: 'x', type: 'number', desc: 'x坐标' }, { name: 'y', type: 'number', desc: 'y坐标' } ], desc: '坐标对象', }] }, { icon: dialogueSvg, name: "tts语音合成", type: "serviceNode", desc: "将指令文本(text)处理合成语音,输出语音路径(audioPath)", action: 'GENERATE_ADVANCED_AUDIO', nodeType: "LLM", outputType: 'json', nodeParams: [{ name: 'text', type: "input", input: "", disabled: true }], outputParams: [{ name: 'audioPath', type: 'string', desc: '语音路径', disabled: true}] }, { icon: dialogueSvg, name: "意图识别", type: "serviceNode", desc: "意图识别,输出类型(type) 1: 语音交互 2: 触控交互 3: 闲聊 4: 知识问答", action: 'INTENT_RECOGNITION', nodeType: "LLM", outputType: 'json', nodeParams: [{ name: 'text', type: "input", input: "", disabled: true }], outputParams: [{ name: 'type', type: 'string', desc: '1:语音交互 2:触控交互 3: 闲聊 4:知识问答', disabled: true}] }, { icon: dialogueSvg, name: "商道智能体", type: "sdAgent", desc: "通过apiKey调用商道大模型", action: 'AI_AGENT_PLATFORM', nodeType: "LLM", outputType: 'json', nodeParams: [ { name: "config", type: "input", input: "", children: [ { name: 'apiKey', type: "input", input: "", disabled: true }, { name: 'text', type: "input", input: "", disabled: true }, ]}, { name: 'invokeTts', type: "input", input: false }, { name: 'tts', type: "input", input: "", children: [ { name: 'url', type: "input", input: "", disabled: true }, { name: 'text', type: "input", input: "", disabled: true }, { name: 'speed', type: "input", input: "", max: 100, disabled: true }, { name: 'voice', type: "input", input: "", componentType: 'select', selectOptions: voiceOptions(), disabled: true }, { name: 'volume', type: "input", input: "", componentType: 'number', max: 100, disabled: true } ], disabled: true } ], outputParams: [{ name: 'result', type: 'string', desc: '商道大模型的返回文案', disabled: true}] }, { icon: dialogueSvg, name: "tts语音播放", type: "serviceNode", desc: "调用tts将文案转换为语音播放", action: 'AI_TTS', nodeType: "LLM", outputType: 'json', nodeParams: [ { name: 'url', type: "input", input: "", disabled: true }, { name: 'text', type: "input", input: "", disabled: true }, { name: 'speed', type: "input", input: "", max: 100, disabled: true }, { name: 'voice', type: "input", input: "", componentType: 'select', selectOptions: voiceOptions(), disabled: true }, { name: 'volume', type: "input", input: "", componentType: 'number', max: 100, disabled: true } ] }, { icon: dialogueSvg, name: "获取当前页面名称", type: "serviceNode", desc: "获取当前页面名称", action: 'GET_CURRENT_PAGE', nodeType: "LLM", outputType: 'json', nodeParams: [ { name: 'url', type: "input", input: "", disabled: true }, ], outputParams: [{ name: 'pageName', type: 'string', desc: '当前页面名称', disabled: true}] } ], }, { collapseTitle: "语音交互", nodeList: [ { icon: planSvg, name: "方案处理", type: "serviceNode", desc: "语音交互-方案处理,输入方案id(schemeId),输出唤醒语料(wakeCorpus)和测试语料数组(testCorpus)", action: 'VI_SCHEME', nodeParams: [{ name: 'schemeId', type: "input", input: "", disabled: true }], outputType: 'json', outputParams: [ { name: 'wakeCorpus', type: 'object', desc: '唤醒语料', children: []}, { name: 'testCorpus', type: 'array', desc: '测试语料数组', children: []}, { name: 'sceneType', type: 'number', desc: '1:唤醒测试,2:单次对话测试,3:连续对话测试', disabled: true } ] }, { icon: awakenSvg, name: "唤醒语料", type: "serviceNode", desc: "唤醒语料处理,输入唤醒语料(wakeCorpus),输出语音路径(audioPath)", action: 'VI_CORPUS_WAKE', nodeType: "EDGE", outputType: 'json', nodeParams: [{ name: 'wakeCorpus', type: "input", input: "", disabled: true }], outputParams: [{ name: 'audioPath', type: 'string', desc: '语音路径', disabled: true}] }, { icon: dialogueSvg, name: "单次对话语料", type: "serviceNode", desc: "测试语料-单次对话语料处理,输入单次对话语料(testCorpus),输出语音路径(audioPath)", action: 'VI_CORPUS_SINGLE', nodeType: "EDGE", outputType: 'json', nodeParams: [{ name: 'testCorpus', type: "input", input: "", disabled: true }], outputParams: [{ name: 'audioPath', type: 'string', desc: '语音路径', disabled: true}] }, { icon: dialogueSvg, name: "连续对话语料", type: "serviceNode", desc: "测试语料-连续对话语料处理,输入连续对话语料(testCorpus),输出语音路径(audioPath)", action: 'VI_CORPUS_CONTINUOUS', nodeType: "EDGE", outputType: 'json', nodeParams: [{ name: 'testCorpus', type: "input", input: "", disabled: true }], outputParams: [{ name: 'audioPath', type: 'string', desc: '语音路径', disabled: true}] }, { icon: audioSvg, name: "播放语料", type: "serviceNode", desc: "用于播放语料的节点,需要输入语音路径(audioPath)和播放语音的设备id(deviceId)", action: 'VI_PLAY_CORPUS', nodeType: "EDGE", outputType: 'json', nodeParams: [ { name: 'audioPath', type: "input", input: "", disabled: true }, { name: 'deviceId', type: "input", input: "", disabled: true }, { name: 'bioId', type: "input", input: "", disabled: true, required: false } ], } ], }, { collapseTitle: "触控交互", nodeList: [ { icon: touchSvg, name: "触控", type: "serviceNode", desc: "去触控坐标的点位", action: 'TOUCH', nodeType: "EDGE", nodeParams: [ { name: "deviceId", type: "input", input: "", disabled: true }, { name: "touchParams", type: "input", input: "", disabled: true } ], outputType: 'json', }, { icon: expressionSvg, name: "开始说话", type: "serviceNode", desc: "控制机器人说话", action: 'BIO_HEAD_SPEAK_START', nodeType: "EDGE", nodeParams: [ { name: "deviceId", type: "input", input: "", disabled: true } ], outputType: 'json', }, { icon: expressionSvg, name: "停止说话", type: "serviceNode", desc: "停止机器人说话", action: 'BIO_HEAD_SPEAK_STOP', nodeType: "EDGE", nodeParams: [ { name: "deviceId", type: "input", input: "", disabled: true } ], outputType: 'json', }, { icon: expressionSvg, name: "表情", type: "serviceNode", desc: "控制机器人的面部表情", action: 'BIO_HEAD_SPECIAL_EXPRESSION', nodeType: "EDGE", nodeParams: [ { name: "deviceId", type: "input", input: "", disabled: true }, { name: "expressKey", type: "input",componentType: 'select', selectOptions: expressOptions(), disabled: true }, ], outputType: 'json', }, { icon: touchSvg, name: "路径搜索", type: "serviceNode", desc: "路径搜索", action: 'TI_PATH_SEARCH', nodeType: "EDGE", nodeParams: [ { name: "currentLocation", type: "input", input: "", disabled: true }, { name: "funcId", type: "input", input: "", disabled: true }, { name: "vehicleConfigId", type: "input", input: "", disabled: true }, ], outputType: 'json', outputParams: [ { name: 'nextLocation', type: 'string', desc: '下一路径位置', disabled: true}, { name: 'isEnd', type: 'string', desc: '是否结束', disabled: true}, { name: 'iconUrl', type: 'string', desc: '图标路径', disabled: true} ] }, { icon: touchSvg, name: "获取触控二维坐标", type: "serviceNode", desc: "获取触控二维坐标", action: 'TI_TOUCH_COORDINATES', nodeType: "EDGE", nodeParams: [ { name: "imageUrl", type: "input", input: "", disabled: true }, { name: "iconUrl", type: "input", input: "", disabled: true } ], outputType: 'json', outputParams: [ { name: 'touchCoordinates', type: 'string', desc: '触控二维坐标', disabled: true}, ] } ], }, { collapseTitle: "AI评估", nodeList: [ { icon: expressionSvg, name: "AI评估预处理", type: "serviceNode", desc: "AI评估预处理", action: 'AI_EVALUATION_PRE', nodeType: "AE", nodeParams: [ { name: "taskType", type: "input", input: "", componentType: 'select', selectOptions: taskTypeOptions(), disabled: true }, { name: "wakeCorpus", type: "input", input: "", disabled: true, required: false }, { name: "testCorpus", type: "input", input: "", disabled: true, required: false }, { name: "sceneType", type: "input", input: "", disabled: true, required: false }, ], outputType: 'json', }, { icon: touchSvg, name: "AI评估执行", type: "serviceNode", desc: "AI评估执行", action: 'AI_EVALUATION_END', nodeType: "AE", nodeParams: [ { name: "videoUrl", type: "input", input: "", disabled: true } ], outputType: 'json', } ], }, ]