From 95cf5f290fec106073ebdff3eeb7bd5a355227ea Mon Sep 17 00:00:00 2001 From: Xin Wang Date: Wed, 25 Jun 2025 13:39:15 +0800 Subject: [PATCH] Add workflow --- workflows/reWpid_and_reReason_Prediction.json | 2399 +++++++++++++++++ 1 file changed, 2399 insertions(+) create mode 100644 workflows/reWpid_and_reReason_Prediction.json diff --git a/workflows/reWpid_and_reReason_Prediction.json b/workflows/reWpid_and_reReason_Prediction.json new file mode 100644 index 0000000..3594edc --- /dev/null +++ b/workflows/reWpid_and_reReason_Prediction.json @@ -0,0 +1,2399 @@ +{ + "nodes": [ + { + "nodeId": "userGuide", + "name": "common:core.module.template.system_config", + "intro": "common:core.module.template.system_config_info", + "avatar": "core/workflow/template/systemConfig", + "flowNodeType": "userGuide", + "position": { + "x": -729.5581248028741, + "y": -512.1884424549642 + }, + "version": "481", + "inputs": [ + { + "key": "welcomeText", + "renderTypeList": [ + "hidden" + ], + "valueType": "string", + "label": "core.app.Welcome Text", + "value": "" + }, + { + "key": "variables", + "renderTypeList": [ + "hidden" + ], + "valueType": "any", + "label": "core.app.Chat Variable", + "value": [] + }, + { + "key": "questionGuide", + "valueType": "any", + "renderTypeList": [ + "hidden" + ], + "label": "core.app.Question Guide", + "value": { + "open": false + } + }, + { + "key": "tts", + "renderTypeList": [ + "hidden" + ], + "valueType": "any", + "label": "", + "value": { + "type": "web" + } + }, + { + "key": "whisper", + "renderTypeList": [ + "hidden" + ], + "valueType": "any", + "label": "", + "value": { + "open": false, + "autoSend": false, + "autoTTSResponse": false + } + }, + { + "key": "scheduleTrigger", + "renderTypeList": [ + "hidden" + ], + "valueType": "any", + "label": "", + "value": null + } + ], + "outputs": [] + }, + { + "nodeId": "448745", + "name": "common:core.module.template.work_start", + "intro": "", + "avatar": "core/workflow/template/workflowStart", + "flowNodeType": "workflowStart", + "position": { + "x": -232.87930614928254, + "y": -456.06362530815346 + }, + "version": "481", + "inputs": [ + { + "key": "userChatInput", + "renderTypeList": [ + "reference", + "textarea" + ], + "valueType": "string", + "label": "common:core.module.input.label.user question", + "required": true, + "toolDescription": "User Question", + "debugLabel": "" + } + ], + "outputs": [ + { + "id": "userChatInput", + "key": "userChatInput", + "label": "common:core.module.input.label.user question", + "type": "static", + "valueType": "string", + "description": "" + } + ] + }, + { + "nodeId": "fvspVRrGKR3w", + "name": "Text Editor", + "intro": "Can process and output fixed or incoming text. Non-string type data will be converted to string type.", + "avatar": "core/workflow/template/textConcat", + "flowNodeType": "textEditor", + "position": { + "x": 3521.9396485294246, + "y": -675.5636253081534 + }, + "version": "4813", + "inputs": [ + { + "key": "system_textareaInput", + "renderTypeList": [ + "textarea" + ], + "valueType": "string", + "required": true, + "label": "Concatenation Text", + "placeholder": "workflow:input_variable_list", + "value": "{{$bgy7ePXTEVZf.gR0mkQpJ4Og8$}}", + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [ + { + "id": "system_text", + "key": "system_text", + "label": "workflow:concatenation_result", + "type": "static", + "valueType": "string", + "description": "" + } + ] + }, + { + "nodeId": "s6sd6IwAjzyM", + "name": "Extract Candidates", + "intro": "Execute a simple script code, usually for complex data processing.", + "avatar": "core/workflow/template/codeRun", + "flowNodeType": "code", + "showStatus": true, + "position": { + "x": 3027.586319617568, + "y": -899.8053645800697 + }, + "version": "482", + "inputs": [ + { + "key": "system_addInputParam", + "renderTypeList": [ + "addInputParam" + ], + "valueType": "dynamic", + "label": "", + "required": false, + "description": "workflow:these_variables_will_be_input_parameters_for_code_execution", + "customInputConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": true + }, + "valueDesc": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "codeType", + "renderTypeList": [ + "hidden" + ], + "label": "", + "value": "js", + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "code", + "renderTypeList": [ + "custom" + ], + "label": "", + "value": "function extractHistoryWpids(row) {\n const dataObject = JSON.parse(row);\n // 3. Use map to extract the wpid from each item in the history array\n const wpids = dataObject.history.map(historyItem => {\n // Optional: Add a check here in case a history item is not an object\n // or is missing the wpid key, though validation should ideally prevent this.\n if (historyItem && typeof historyItem === 'object' && historyItem.wpid !== undefined) {\n return historyItem.wpid;\n } else {\n // Handle cases where an item might be invalid or missing wpid\n console.warn(\"Encountered invalid history item or missing 'wpid' during extraction:\", historyItem);\n return undefined; // Or null, or a placeholder like 'N/A'\n }\n });\n\n // The map function already returns a new array, so we just return it.\n // If you wanted to filter out the 'undefined' values from the optional check above:\n // return wpids.filter(wpid => wpid !== undefined);\n\n return wpids;\n}\n\nfunction main({data1}){\n const wpids = extractHistoryWpids(data1)\n \n return {\n candidates: wpids\n }\n}", + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "renderTypeList": [ + "reference" + ], + "valueType": "string", + "canEdit": true, + "key": "data1", + "label": "data1", + "customInputConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": true + }, + "required": true, + "value": [ + "448745", + "userChatInput" + ], + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [ + { + "id": "system_rawResponse", + "key": "system_rawResponse", + "label": "workflow:full_response_data", + "valueType": "object", + "type": "static", + "description": "" + }, + { + "id": "error", + "key": "error", + "label": "workflow:execution_error", + "description": "Error information of code execution, returns empty on success", + "valueType": "object", + "type": "static" + }, + { + "id": "system_addOutputParam", + "key": "system_addOutputParam", + "type": "dynamic", + "valueType": "dynamic", + "label": "", + "customFieldConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": false + }, + "description": "Pass the object returned in the code as output to the next nodes. The variable name needs to correspond to the return key.", + "valueDesc": "" + }, + { + "id": "hRSqIZ4eKI5d", + "valueType": "arrayString", + "type": "dynamic", + "key": "candidates", + "label": "candidates" + } + ] + }, + { + "nodeId": "j27wtIWcci3l", + "name": "", + "intro": "", + "avatar": "", + "flowNodeType": "comment", + "position": { + "x": -685.7931777425154, + "y": -2261.2449067395646 + }, + "version": "4811", + "inputs": [ + { + "key": "commentText", + "renderTypeList": [], + "valueType": "string", + "label": "", + "value": "{\n \"wpid\": \"20250526039699\",\n \"reWpid\": \"20250525021440\",\n \"relTitle\": \"商家造谣\",\n \"content\": \"上门维修人员问我房子是不是买的,还打电话骚扰,报警协调无果之后,还在平台造谣我有精神疾病\",\n \"summary\": \"市民补充信息:上门维修人员问其房子是不是买的,还打电话骚扰,报警协调无果之后,还在平台造谣其有精神疾病。【最近派发的工单编号:20250525021440,工单内容:【商家地址/名称:未提供,时间:2025年05月25日16:41,涉及金额:125】3点预约了4点的电脑维修服务。4:30人还没有到,说谎联系过本人,但是根本没有来电。我找过去了才说来不了,遂取消预约并退款。数分钟后,师傅不知道哪里来的电话直接打电话过来骚扰】\",\n \"address\": \"惠北新村\",\n \"relAddress\": \"惠北新村\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"工单归档\",\n \"startTime\": \"2025-05-26 18:00:59\",\n \"repeatReason\": \"补充信息\",\n \"history\": [\n {\n \"wpid\": \"20250515005549\",\n \"summary\": \"市民来电反复催单。催单原因:市民称5月15日9:20左右接到了31012761浦东劳动执法局的电话,对方不告知是什么单位,说话很不客气,工号是15。市民表示该人员是联系处理市民之前反映的离职问题的,市民要求投诉该人员态度差,请管理部门尽快处理。【最近派发的工单编号:20250427017693,工单内容:【投诉】市民反映:劳动检察大队7号工作人员不作为,威胁当事人必须和企业和解,于4月27日10:30再次与其联系,其要求了解调查经过,被7号以其不具有权利拒绝,在其要求重复表示并录音之后,挂断电话。诉求:投诉劳动监察大队不作为。(相关工单编号:20250408025228)】\",\n \"relAddress\": \"闵行区\",\n \"state\": \"12345热线前台受理\",\n \"nextState\": \"工单归档(存电)\",\n \"ended\": \"未办结\",\n \"starttime\": \"2025-05-15 09:37:28\"\n },\n {\n \"wpid\": \"20250517017353\",\n \"summary\": \"【商家地址/名称:未提供,时间:2025/05/1712:07:00,涉及金额:70】购买的肯德基儿童套餐没有玩具,多次致电也无人接听回应,平台美团也拒不处理\",\n \"relAddress\": \"人民路肯德基\",\n \"state\": \"二级承办单位受理\",\n \"nextState\": \"二级承办单位处理\",\n \"ended\": \"未办结\",\n \"starttime\": \"2025-05-17 14:40:31\"\n },\n {\n \"wpid\": \"20250415035107\",\n \"summary\": \"市民反映:已通过市民热线反映事项,现要求补充图片作为证据(详见附件)。诉求:希望管理部门核实转送相关照片至承办部门。【相关工单编号:20250308009125】\",\n \"relAddress\": \"闵行区东川路555号博彦科技有限公司\",\n \"state\": \"12345热线互联网后台处理\",\n \"nextState\": \"工单归档(存电)\",\n \"ended\": \"未办结\",\n \"starttime\": \"2025-04-15 16:48:13\"\n },\n {\n \"wpid\": \"20250430034403\",\n \"summary\": \"市民来电反复催单。催单原因:市民称管理部门至今未给予任何回复,请管理部门尽快处理。【最近派发的工单编号:20250425039796,工单内容:【商家地址/名称:未提供,时间:2025/04/2519:15:00,涉及金额:未提供】送的冰淇淋券无法使用,问店员也说不清楚】\",\n \"relAddress\": \"浦东新区惠南地铁站蜜雪冰城\",\n \"state\": \"12345热线前台受理\",\n \"nextState\": \"工单归档(存电)\",\n \"ended\": \"未办结\",\n \"starttime\": \"2025-04-30 18:55:59\"\n },\n {\n \"wpid\": \"20250425039796\",\n \"summary\": \"【商家地址/名称:未提供,时间:2025/04/2519:15:00,涉及金额:未提供】送的冰淇淋券无法使用,问店员也说不清楚\",\n \"relAddress\": \"惠南地铁站蜜雪冰城\",\n \"state\": \"二级承办单位处理\",\n \"nextState\": \"工单回访\",\n \"ended\": \"已办结\",\n \"starttime\": \"2025-04-25 19:30:04\"\n },\n {\n \"wpid\": \"20250525021440\",\n \"summary\": \"【商家地址/名称:未提供,时间:2025年05月25日16:41,涉及金额:125】3点预约了4点的电脑维修服务。4:30人还没有到,说谎联系过本人,但是根本没有来电。我找过去了才说来不了,遂取消预约并退款。数分钟后,师傅不知道哪里来的电话直接打电话过来骚扰\",\n \"relAddress\": \"南天快修\",\n \"state\": \"二级承办单位受理\",\n \"nextState\": \"二级承办单位处理\",\n \"ended\": \"未办结\",\n \"starttime\": \"2025-05-25 16:50:26\"\n },\n {\n \"wpid\": \"20250526039699\",\n \"summary\": \"市民补充信息:上门维修人员问其房子是不是买的,还打电话骚扰,报警协调无果之后,还在平台造谣其有精神疾病。【最近派发的工单编号:20250525021440,工单内容:【商家地址/名称:未提供,时间:2025年05月25日16:41,涉及金额:125】3点预约了4点的电脑维修服务。4:30人还没有到,说谎联系过本人,但是根本没有来电。我找过去了才说来不了,遂取消预约并退款。数分钟后,师傅不知道哪里来的电话直接打电话过来骚扰】\",\n \"relAddress\": \"惠北新村\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"工单归档\",\n \"ended\": \"未办结\",\n \"starttime\": \"2025-05-26 18:07:32\"\n },\n {\n \"wpid\": \"20250528020785\",\n \"summary\": \"市民补充信息:博彦科技开的离职单和他们有半毛钱关系,还大言不惭表示他工作了,相关部门也推卸责任,不作为,之前二次提交的工单也没有回信。【最近派发的工单编号:20250308009125,工单内容:市民来电反映:上述地址不给市民离职证明,市民表示其下周一就要入职。诉求:希望管理部门对此情况核实要求尽快给到离职证明。(需回复)】\",\n \"relAddress\": \"浦东新区学林路\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"工单归档\",\n \"ended\": \"未办结\",\n \"starttime\": \"2025-05-28 13:32:56\"\n },\n {\n \"wpid\": \"20250528020773\",\n \"summary\": \"市民补充信息:其反映后,问题至今未解决。要求管理部门尽快为其处理。【最近派发的工单编号:20250517017353,工单内容:购买的肯德基儿童套餐没有玩具,多次致电也无人接听回应,平台美团也拒不处理】\\n\\n\",\n \"relAddress\": \"本市人民路肯德基\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"工单归档\",\n \"ended\": \"未办结\",\n \"starttime\": \"2025-05-28 13:33:31\"\n },\n {\n \"wpid\": \"20250430037776\",\n \"summary\": \"市民反映:打电话(详见附件)说有快递,但是又不说是什么东西。诉求:投诉诈骗电话。\",\n \"relAddress\": \"浦东新区合庆镇\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"工单归档\",\n \"ended\": \"未办结\",\n \"starttime\": \"2025-04-30 19:36:22\"\n }\n ]\n }" + }, + { + "key": "commentSize", + "renderTypeList": [], + "valueType": "object", + "label": "", + "value": { + "width": 1327, + "height": 1218 + } + } + ], + "outputs": [] + }, + { + "nodeId": "j6ve1vPRKGFI", + "name": "Format Check", + "intro": "Execute a simple script code, usually for complex data processing.", + "avatar": "core/workflow/template/codeRun", + "flowNodeType": "code", + "showStatus": true, + "position": { + "x": 236.7898745469314, + "y": -578.0636253081534 + }, + "version": "482", + "inputs": [ + { + "key": "system_addInputParam", + "renderTypeList": [ + "addInputParam" + ], + "valueType": "dynamic", + "label": "", + "required": false, + "description": "workflow:these_variables_will_be_input_parameters_for_code_execution", + "customInputConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": true + }, + "valueDesc": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "codeType", + "renderTypeList": [ + "hidden" + ], + "label": "", + "value": "js", + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "code", + "renderTypeList": [ + "custom" + ], + "label": "", + "value": "function validateData1(jsonString) {\n // 1. Check if the input is actually a string\n if (typeof jsonString !== 'string') {\n return { isValid: false, error: \"Input is not a string.\" };\n }\n\n let dataObject;\n\n // 2. Attempt to parse the JSON string\n try {\n dataObject = JSON.parse(jsonString);\n } catch (error) {\n return { isValid: false, error: `Input string is not valid JSON: ${error.message}` };\n }\n\n // 3. Now, apply the original validation logic to the parsed object (dataObject)\n\n // Check if parsed result is a valid object and not null\n if (typeof dataObject !== 'object' || dataObject === null) {\n return { isValid: false, error: \"Parsed JSON is not a valid object.\" };\n }\n\n // Check for required top-level keys\n const requiredTopKeys = ['wpid', 'content', 'startTime', 'history'];\n for (const key of requiredTopKeys) {\n if (dataObject[key] === undefined) { // Check if the key exists and is not undefined\n return { isValid: false, error: `Parsed object is missing required key '${key}'.` };\n }\n }\n\n // Check if 'history' is an array\n if (!Array.isArray(dataObject.history)) {\n return { isValid: false, error: \"dataObject.history is not an array.\" };\n }\n\n // Check if 'history' array is not empty\n if (dataObject.history.length === 0) {\n return { isValid: false, error: \"dataObject.history array is empty.\" };\n }\n\n // Validate each element in the 'history' array\n const requiredHistoryItemKeys = ['wpid', 'summary', 'starttime', 'ended'];\n for (let i = 0; i < dataObject.history.length; i++) {\n const historyItem = dataObject.history[i];\n\n // Check if the history item is a valid object\n if (typeof historyItem !== 'object' || historyItem === null) {\n return { isValid: false, error: `Element at index ${i} in history array is not a valid object.` };\n }\n\n // Check for required keys in the history item object\n for (const key of requiredHistoryItemKeys) {\n if (historyItem[key] === undefined) { // Check if the key exists and is not undefined\n return { isValid: false, error: `Element at index ${i} in history array is missing required key '${key}'.` };\n }\n }\n }\n\n // If all checks pass\n return { isValid: true, error: null };\n}\n\nfunction main({data1}){\n const result = validateData1(data1); \n return {\n isValid: result.isValid,\n formatError: result.error\n }\n}", + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "renderTypeList": [ + "reference" + ], + "valueType": "string", + "canEdit": true, + "key": "data1", + "label": "data1", + "customInputConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": true + }, + "required": true, + "value": [ + "448745", + "userChatInput" + ], + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [ + { + "id": "system_rawResponse", + "key": "system_rawResponse", + "label": "workflow:full_response_data", + "valueType": "object", + "type": "static", + "description": "" + }, + { + "id": "error", + "key": "error", + "label": "workflow:execution_error", + "description": "Error information of code execution, returns empty on success", + "valueType": "object", + "type": "static" + }, + { + "id": "system_addOutputParam", + "key": "system_addOutputParam", + "type": "dynamic", + "valueType": "dynamic", + "label": "", + "customFieldConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": false + }, + "description": "Pass the object returned in the code as output to the next nodes. The variable name needs to correspond to the return key.", + "valueDesc": "" + }, + { + "id": "qLUQfhG0ILRX", + "type": "dynamic", + "key": "isValid", + "valueType": "boolean", + "label": "isValid", + "valueDesc": "", + "description": "" + }, + { + "id": "skSX1pJG4k6p", + "valueType": "string", + "type": "dynamic", + "key": "formatError", + "label": "formatError" + } + ] + }, + { + "nodeId": "bgy7ePXTEVZf", + "name": "Generate Prompt", + "intro": "Execute a simple script code, usually for complex data processing.", + "avatar": "core/workflow/template/codeRun", + "flowNodeType": "code", + "showStatus": true, + "position": { + "x": 2379.188190381833, + "y": -874.0636253081534 + }, + "version": "482", + "inputs": [ + { + "key": "system_addInputParam", + "renderTypeList": [ + "addInputParam" + ], + "valueType": "dynamic", + "label": "", + "required": false, + "description": "workflow:these_variables_will_be_input_parameters_for_code_execution", + "customInputConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": true + }, + "valueDesc": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "codeType", + "renderTypeList": [ + "hidden" + ], + "label": "", + "value": "js", + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "code", + "renderTypeList": [ + "custom" + ], + "label": "", + "value": "function formatData1ToString(data1) {\n const dataObject = JSON.parse(data1);\n // 1. Format each item in the history array\n const formattedHistoryItems = dataObject.history.map(item => {\n // Use template literals (JS equivalent of Python f-strings)\n // Add basic checks for history item properties if not already validated\n const wpid = item.wpid !== undefined ? item.wpid : 'N/A';\n const summary = item.summary !== undefined ? item.summary : 'N/A';\n const starttime = item.starttime !== undefined ? item.starttime : 'N/A';\n\n return `(工单编号:${wpid})${summary} 处理时间: ${starttime}`;\n });\n\n // 2. Join the formatted history items with newline characters\n const historyString = formattedHistoryItems.join('\\n');\n\n // 3. Construct the final user_content string\n const userContent = `# 当前对话总结\\n${dataObject.content}(处理时间:${dataObject.startTime})\\n\\n# 候选重复工单\\n${historyString}`;\n\n return userContent;\n}\n\nfunction main({data1}){\n const user_msg = formatData1ToString(data1);\n \n return {\n user_msg: user_msg,\n }\n}", + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "renderTypeList": [ + "reference" + ], + "valueType": "string", + "canEdit": true, + "key": "data1", + "label": "data1", + "customInputConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": true + }, + "required": true, + "value": [ + "448745", + "userChatInput" + ], + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [ + { + "id": "system_rawResponse", + "key": "system_rawResponse", + "label": "workflow:full_response_data", + "valueType": "object", + "type": "static", + "description": "" + }, + { + "id": "error", + "key": "error", + "label": "workflow:execution_error", + "description": "Error information of code execution, returns empty on success", + "valueType": "object", + "type": "static" + }, + { + "id": "system_addOutputParam", + "key": "system_addOutputParam", + "type": "dynamic", + "valueType": "dynamic", + "label": "", + "customFieldConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": false + }, + "description": "Pass the object returned in the code as output to the next nodes. The variable name needs to correspond to the return key.", + "valueDesc": "" + }, + { + "id": "gR0mkQpJ4Og8", + "type": "dynamic", + "key": "user_msg", + "valueType": "string", + "label": "user_msg", + "valueDesc": "", + "description": "" + } + ] + }, + { + "nodeId": "zKwy2kXJUhXx", + "name": "Condition", + "intro": "Execute different branches based on conditions.", + "avatar": "core/workflow/template/ifelse", + "flowNodeType": "ifElseNode", + "showStatus": true, + "position": { + "x": 772.0511335494584, + "y": -349.0636253081534 + }, + "version": "481", + "inputs": [ + { + "key": "ifElseList", + "renderTypeList": [ + "hidden" + ], + "valueType": "any", + "label": "", + "value": [ + { + "condition": "AND", + "list": [ + { + "variable": [ + "j6ve1vPRKGFI", + "qLUQfhG0ILRX" + ], + "condition": "equalTo", + "value": "true" + } + ] + } + ], + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [ + { + "id": "ifElseResult", + "key": "ifElseResult", + "label": "workflow:judgment_result", + "valueType": "string", + "type": "static", + "description": "" + } + ] + }, + { + "nodeId": "xTjtvDddW3KJ", + "name": "Assigned Reply", + "intro": "This module can directly reply with a specified content. Commonly used for guidance or prompts. Non-string content will be converted to string for output.", + "avatar": "core/workflow/template/reply", + "flowNodeType": "answerNode", + "position": { + "x": 1713.188190381833, + "y": 1624.4936914937825 + }, + "version": "481", + "inputs": [ + { + "key": "text", + "renderTypeList": [ + "textarea", + "reference" + ], + "valueType": "any", + "required": true, + "label": "Response Content", + "description": "common:core.module.input.description.Response content", + "placeholder": "common:core.module.input.description.Response content", + "value": "格式错误。{{$j6ve1vPRKGFI.skSX1pJG4k6p$}}", + "valueDesc": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [] + }, + { + "nodeId": "fLiIpF1Wg4sl", + "name": "Post Check reWpid", + "intro": "Execute a simple script code, usually for complex data processing.", + "avatar": "core/workflow/template/codeRun", + "flowNodeType": "code", + "showStatus": true, + "position": { + "x": 4998.244695891243, + "y": -968.3126909285306 + }, + "version": "482", + "inputs": [ + { + "key": "system_addInputParam", + "renderTypeList": [ + "addInputParam" + ], + "valueType": "dynamic", + "label": "", + "required": false, + "description": "workflow:these_variables_will_be_input_parameters_for_code_execution", + "customInputConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": true + }, + "valueDesc": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "codeType", + "renderTypeList": [ + "hidden" + ], + "label": "", + "value": "js", + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "code", + "renderTypeList": [ + "custom" + ], + "label": "", + "value": "function isWpidInList(wpidToCheck, wpidList) {\n // 1. Validate that the second argument is actually an array\n if (!Array.isArray(wpidList)) {\n console.error(\"isWpidInList failed: The second argument must be an array.\");\n return false;\n }\n\n // 2. Use the Array.prototype.includes() method to check for existence\n // includes() uses SameValueZero comparison, which is similar to strict equality (===)\n // but treats NaN == NaN. For typical wpid values (numbers or strings), it's equivalent to ===.\n return wpidList.includes(wpidToCheck);\n}\n\nfunction main({wpidToCheck, wpidList}){\n const inList = isWpidInList(wpidToCheck, wpidList);\n \n return {\n inList: inList\n }\n}", + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "renderTypeList": [ + "reference" + ], + "valueType": "string", + "canEdit": true, + "key": "wpidToCheck", + "label": "wpidToCheck", + "customInputConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": true + }, + "required": true, + "value": [ + "dcoccMRsgzEV", + "lfMbKXWN78mo" + ], + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "renderTypeList": [ + "reference" + ], + "valueType": "arrayString", + "canEdit": true, + "key": "wpidList", + "label": "wpidList", + "customInputConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": true + }, + "required": true, + "value": [ + [ + "s6sd6IwAjzyM", + "hRSqIZ4eKI5d" + ] + ] + } + ], + "outputs": [ + { + "id": "system_rawResponse", + "key": "system_rawResponse", + "label": "workflow:full_response_data", + "valueType": "object", + "type": "static", + "description": "" + }, + { + "id": "error", + "key": "error", + "label": "workflow:execution_error", + "description": "Error information of code execution, returns empty on success", + "valueType": "object", + "type": "static" + }, + { + "id": "system_addOutputParam", + "key": "system_addOutputParam", + "type": "dynamic", + "valueType": "dynamic", + "label": "", + "customFieldConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": false + }, + "description": "Pass the object returned in the code as output to the next nodes. The variable name needs to correspond to the return key.", + "valueDesc": "" + }, + { + "id": "zNxZEzujnxTP", + "valueType": "boolean", + "type": "dynamic", + "key": "inList", + "label": "inList" + } + ] + }, + { + "nodeId": "dcoccMRsgzEV", + "name": "Extract reWpid", + "intro": "Can extract specified data from text, such as SQL statements, search keywords, code, etc.", + "avatar": "core/workflow/template/extractJson", + "flowNodeType": "contentExtract", + "showStatus": true, + "position": { + "x": 4193.952670329682, + "y": -1039.8008757008647 + }, + "version": "481", + "inputs": [ + { + "key": "model", + "renderTypeList": [ + "selectLLMModel", + "reference" + ], + "label": "AI Model", + "required": true, + "valueType": "string", + "llmModelType": "extractFields", + "value": "Qwen/Qwen3-8B", + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "description", + "renderTypeList": [ + "textarea", + "reference" + ], + "valueType": "string", + "label": "Extraction Requirements Description", + "description": "workflow:extraction_requirements_description_detail", + "placeholder": "workflow:extraction_requirements_placeholder", + "value": "# 角色\n你是一个投诉工单处理专家\n\n# 任务\n你会收到一个当前工单对话总结内容,和多个候选的重复工单描述。你需要在候选重复工单中找到最初的关联工单。\n当候选重复工单中不存在关联工单的时候,返回**未找到关联工单**。\n\n# ​例子\n```\n# 当前对话总结\n市民来电反映:金山区石化街道公交站牌设置不合理,影响乘客视线,导致无法看清公交车到站信息。诉求:希望管理部门尽快调整站牌位置,改善乘客乘车体验。\n\n# 候选重复工单\n(工单编号:20250513008267)【重新交办,要求,按照答复要点告知市民,市民表示答复要点不明确,目前问题还没有改善,也没有行动,希望尽快处理给到解决方案。诉求:请管理部门核实,原诉求不变。(需回复)】【最近办结的工单编号:20250506000694,工单内容:市民来电反映:上述地址附近有个公交车站,往南方向,有1668路公交车。市民表示公交车牌太靠里,有一边看不清。诉求:请管理部门核实,并将车牌移出。】处理时间:2025-05-13 10:12:25\n(工单编号:20250513000563)市民来电反映:5月13日6:20左右有道路清洁的环卫车从该处作业经过,在清扫路面过程中灰尘飞扬。诉求:希望环卫车在路面清洁作业时可以同时洒水阻止扬尘。处理时间:2025-05-13 06:28:19\n(工单编号:20250506000694)市民来电反映:上述地址附近有个公交车站,往南方向,有1668路公交车。市民表示公交车牌太靠里,有一边看不清。诉求:请管理部门核实,并将车牌移出。处理时间:2025-05-06 07:43:18\n\n# 输出结果\n20250506000694\n```\n\n下面开始吧!", + "valueDesc": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "history", + "renderTypeList": [ + "numberInput", + "reference" + ], + "valueType": "chatHistory", + "label": "Chat History", + "description": "workflow:max_dialog_rounds", + "required": true, + "min": 0, + "max": 50, + "value": 1, + "valueDesc": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "content", + "renderTypeList": [ + "reference", + "textarea" + ], + "label": "Text to Extract", + "required": true, + "valueType": "string", + "toolDescription": "Content to Retrieve", + "value": [ + "bgy7ePXTEVZf", + "gR0mkQpJ4Og8" + ], + "valueDesc": "", + "description": "", + "debugLabel": "" + }, + { + "key": "extractKeys", + "renderTypeList": [ + "custom" + ], + "label": "", + "valueType": "any", + "description": "workflow:target_fields_description", + "value": [ + { + "valueType": "string", + "required": false, + "defaultValue": "", + "desc": "最初的关联工单", + "key": "reWpid", + "enum": "" + } + ], + "valueDesc": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [ + { + "id": "success", + "key": "success", + "label": "workflow:full_field_extraction", + "required": true, + "description": "Returns true when all fields are fully extracted (success includes model extraction or using default values)", + "valueType": "boolean", + "type": "static" + }, + { + "id": "fields", + "key": "fields", + "label": "workflow:complete_extraction_result", + "required": true, + "description": "A JSON string, e.g., {\"name\":\"YY\",\"Time\":\"2023/7/2 18:00\"}", + "valueType": "string", + "type": "static" + }, + { + "id": "lfMbKXWN78mo", + "key": "reWpid", + "label": "Extraction Results-reWpid", + "valueType": "string", + "type": "static" + } + ] + }, + { + "nodeId": "wTRWVtFh0mDC", + "name": "Condition#2", + "intro": "Execute different branches based on conditions.", + "avatar": "core/workflow/template/ifelse", + "flowNodeType": "ifElseNode", + "showStatus": true, + "position": { + "x": 5873.613357230781, + "y": -719.3126909285306 + }, + "version": "481", + "inputs": [ + { + "key": "ifElseList", + "renderTypeList": [ + "hidden" + ], + "valueType": "any", + "label": "", + "value": [ + { + "condition": "AND", + "list": [ + { + "variable": [ + "fLiIpF1Wg4sl", + "zNxZEzujnxTP" + ], + "condition": "equalTo", + "value": "true" + } + ] + } + ], + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [ + { + "id": "ifElseResult", + "key": "ifElseResult", + "label": "workflow:judgment_result", + "valueType": "string", + "type": "static", + "description": "" + } + ] + }, + { + "nodeId": "tmYQSYDCLdAA", + "name": "Variable Update", + "intro": "Can update the output value of a specified node or update global variables", + "avatar": "core/workflow/template/variableUpdate", + "flowNodeType": "variableUpdate", + "showStatus": false, + "position": { + "x": 6897.727473419457, + "y": -760.6638426850961 + }, + "version": "481", + "inputs": [ + { + "key": "updateList", + "valueType": "any", + "label": "", + "renderTypeList": [ + "hidden" + ], + "value": [ + { + "variable": [ + "VARIABLE_NODE_ID", + "reWpid" + ], + "value": [ + "dcoccMRsgzEV", + "lfMbKXWN78mo" + ], + "valueType": "string", + "renderType": "reference" + } + ], + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [] + }, + { + "nodeId": "wJBvAf4lvRoe", + "name": "Condition#3", + "intro": "Execute different branches based on conditions.", + "avatar": "core/workflow/template/ifelse", + "flowNodeType": "ifElseNode", + "showStatus": true, + "position": { + "x": 1548.0970282456365, + "y": -456.06362530815346 + }, + "version": "481", + "inputs": [ + { + "key": "ifElseList", + "renderTypeList": [ + "hidden" + ], + "valueType": "any", + "label": "", + "value": [ + { + "condition": "AND", + "list": [ + { + "variable": [ + "VARIABLE_NODE_ID", + "reWpid" + ], + "condition": "isEmpty" + } + ] + } + ], + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [ + { + "id": "ifElseResult", + "key": "ifElseResult", + "label": "workflow:judgment_result", + "valueType": "string", + "type": "static", + "description": "" + } + ] + }, + { + "nodeId": "aWtjSIrYmPpd", + "name": "Assigned Reply#3", + "intro": "This module can directly reply with a specified content. Commonly used for guidance or prompts. Non-string content will be converted to string for output.", + "avatar": "core/workflow/template/reply", + "flowNodeType": "answerNode", + "position": { + "x": 7894.920078091941, + "y": 206.78372223197684 + }, + "version": "481", + "inputs": [ + { + "key": "text", + "renderTypeList": [ + "textarea", + "reference" + ], + "valueType": "any", + "required": true, + "label": "Response Content", + "description": "common:core.module.input.description.Response content", + "placeholder": "common:core.module.input.description.Response content", + "value": "{\"reWpid\":\"{{$VARIABLE_NODE_ID.reWpid$}}\", \"reReason\":\"{{$VARIABLE_NODE_ID.reReason$}}\"}", + "valueDesc": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [] + }, + { + "nodeId": "i4ccmcyN0URQ", + "name": "Condition#4", + "intro": "Execute different branches based on conditions.", + "avatar": "core/workflow/template/ifelse", + "flowNodeType": "ifElseNode", + "showStatus": true, + "position": { + "x": 1713.188190381833, + "y": 656.1284042706416 + }, + "version": "481", + "inputs": [ + { + "key": "ifElseList", + "renderTypeList": [ + "hidden" + ], + "valueType": "any", + "label": "", + "value": [ + { + "condition": "AND", + "list": [ + { + "variable": [ + "VARIABLE_NODE_ID", + "reReason" + ], + "condition": "isEmpty" + } + ] + } + ], + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [ + { + "id": "ifElseResult", + "key": "ifElseResult", + "label": "workflow:judgment_result", + "valueType": "string", + "type": "static", + "description": "" + } + ] + }, + { + "nodeId": "pXemWjm1TR63", + "name": "Generate Prompt#6", + "intro": "Execute a simple script code, usually for complex data processing.", + "avatar": "core/workflow/template/codeRun", + "flowNodeType": "code", + "showStatus": true, + "position": { + "x": 2672.499377375329, + "y": 436.62840427064157 + }, + "version": "482", + "inputs": [ + { + "key": "system_addInputParam", + "renderTypeList": [ + "addInputParam" + ], + "valueType": "dynamic", + "label": "", + "required": false, + "description": "workflow:these_variables_will_be_input_parameters_for_code_execution", + "customInputConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": true + }, + "valueDesc": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "codeType", + "renderTypeList": [ + "hidden" + ], + "label": "", + "value": "js", + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "code", + "renderTypeList": [ + "custom" + ], + "label": "", + "value": "function formatData1ToString(data1) {\n const dataObject = JSON.parse(data1);\n // 1. Format each item in the history array\n const formattedHistoryItems = dataObject.history.map(item => {\n // Use template literals (JS equivalent of Python f-strings)\n // Add basic checks for history item properties if not already validated\n const wpid = item.wpid !== undefined ? item.wpid : 'N/A';\n const summary = item.summary !== undefined ? item.summary : 'N/A';\n const starttime = item.starttime !== undefined ? item.starttime : 'N/A';\n\n return `(工单编号:${wpid})${summary} 处理时间: ${starttime}`;\n });\n\n // 2. Join the formatted history items with newline characters\n const historyString = formattedHistoryItems.join('\\n');\n\n // 3. Construct the final user_content string\n const userContent = `# 当前对话总结\\n${dataObject.content}(处理时间:${dataObject.startTime})\\n\\n# 候选重复工单\\n${historyString}`;\n\n return userContent;\n}\n\nfunction main({data1}){\n const user_msg = formatData1ToString(data1);\n \n return {\n user_msg: user_msg,\n }\n}", + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "renderTypeList": [ + "reference" + ], + "valueType": "string", + "canEdit": true, + "key": "data1", + "label": "data1", + "customInputConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": true + }, + "required": true, + "value": [ + "448745", + "userChatInput" + ], + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [ + { + "id": "system_rawResponse", + "key": "system_rawResponse", + "label": "workflow:full_response_data", + "valueType": "object", + "type": "static", + "description": "" + }, + { + "id": "error", + "key": "error", + "label": "workflow:execution_error", + "description": "Error information of code execution, returns empty on success", + "valueType": "object", + "type": "static" + }, + { + "id": "system_addOutputParam", + "key": "system_addOutputParam", + "type": "dynamic", + "valueType": "dynamic", + "label": "", + "customFieldConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": false + }, + "description": "Pass the object returned in the code as output to the next nodes. The variable name needs to correspond to the return key.", + "valueDesc": "" + }, + { + "id": "gR0mkQpJ4Og8", + "type": "dynamic", + "key": "user_msg", + "valueType": "string", + "label": "user_msg", + "valueDesc": "", + "description": "" + } + ] + }, + { + "nodeId": "jdZzyf1vlJpM", + "name": "Text Editor#2", + "intro": "Can process and output fixed or incoming text. Non-string type data will be converted to string type.", + "avatar": "core/workflow/template/textConcat", + "flowNodeType": "textEditor", + "position": { + "x": 3300.8184763990253, + "y": 625.8605379943934 + }, + "version": "4813", + "inputs": [ + { + "key": "system_textareaInput", + "renderTypeList": [ + "textarea" + ], + "valueType": "string", + "required": true, + "label": "Concatenation Text", + "placeholder": "workflow:input_variable_list", + "value": "{{$pXemWjm1TR63.gR0mkQpJ4Og8$}}", + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [ + { + "id": "system_text", + "key": "system_text", + "label": "workflow:concatenation_result", + "type": "static", + "valueType": "string", + "description": "" + } + ] + }, + { + "nodeId": "bas3L59lnr0E", + "name": "Extract reReason", + "intro": "Can extract specified data from text, such as SQL statements, search keywords, code, etc.", + "avatar": "core/workflow/template/extractJson", + "flowNodeType": "contentExtract", + "showStatus": true, + "position": { + "x": 4193.952670329682, + "y": 350.3376891401946 + }, + "version": "481", + "inputs": [ + { + "key": "model", + "renderTypeList": [ + "selectLLMModel", + "reference" + ], + "label": "AI Model", + "required": true, + "valueType": "string", + "llmModelType": "extractFields", + "value": "Qwen/Qwen3-8B", + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "description", + "renderTypeList": [ + "textarea", + "reference" + ], + "valueType": "string", + "label": "Extraction Requirements Description", + "description": "workflow:extraction_requirements_description_detail", + "placeholder": "workflow:extraction_requirements_placeholder", + "value": "# 角色\n你是一个工单处理专家\n\n# 任务\n你会收到一个当前工单对话内容,和多个候选的重复工单描述。你会判断当前工单的重复来电原因。\n当候选重复工单中不存在关联工单的时候,返回**未找到关联工单**。\n\n# 说明\n重复来电原因需要为以下之一:\n* 办理结果不满\n* 办理期催办\n* 补充信息\n* 撤单\n* 未先行联系\n* 无回复\n\n# 例子\n```\n# 当前对话总结\n周末7点开始施工扰民,物业街道均反映过,未有任何停止,要求立刻停止扰民,并赔偿精神损失费每日一千元。(工单时间:2025-05-17 13:01:03)\n\n# 候选重复工单\n(工单编号:20250517010487)市民反映:电梯施工在周末07:00就开设铲沙子施工,严重扰民。诉求:请管理部门协调噪音问题。(处理时间:2025-05-17 11:46:48)\n\n# 输出结果\n办理期催办\n```\n\n```\n# 当前对话总结\n尊敬的奉贤区人民政府、相关部门领导:\\n\\n您好!\\n\\n我是奉贤区柘林镇华亭村东海1120号宅基地房屋的相关权利人徐保弟的长孙(徐邵峰),在5月13日13:28接到021-22139900来电,表明为上华亭村村委会相关办事人员(张某),几点诉求(详见上一条诉求热线)。\\n张某在5月13日在回访电话中,郑重承诺日后每周二进行通告本人事情进展情况,结果本人等到昨日5月20日24:00依然未接到任何电话。严重失信,本人对柘林镇人民政府领导班子极其失望,多次12345,每次不进行任何正面答复以及基本无视状态处理。\\n面对目前现状,本人无奈之下只能寻求上级部门进行追究相关责任,请奉贤区人民政府进行对本次12345进行回复,本人将谢绝与华亭村居民委员会及\\n柘林镇人民政府进行沟通,因为他们严重失信。他们的坐视不理,不正面处理方式已经失去公信力。\\n本人诉求:\\n请奉贤区人民政府进行介入本次事件,因为这里出现了违规移迁安置、破坏居民家庭和睦、对百姓进行无端污蔑等行为。(工单时间:2025-05-21 15:47:59)\n\n# 候选重复工单\n(工单编号:20250511001593)市民反映:市民补充信息:5月6日柘林镇市民热线回访中并未解决市民反馈问题,请柘林镇或奉贤区人民政府给出正面答复,就4月21日委派一名法律工作者进行相关调解事宜中委派人是具体身份、姓名、证件号;原因一:是该人员在调解过程中处理不当,且恐吓其父亲徐龙海,说他不具备任何权益权利进行产于相关讨论,请明确答复,为何市民父亲不具备相关权益法律依据,是什么,原因二:对方在不完整了解具体情况下,当其家庭所有成员面,公然诽谤本人(徐邵峰),说目前现在现状是其挑唆所致,对其造成了不可挽回的个人形象和名誉问题,已严重造成市民身心健康,近期长期失眠,要求予以解决。【最近派发的工单编号:20250421039886,工单内容:市民反映:其是奉贤区柘林镇华亭村东海1120号宅基地房屋的相关权利人,2021年11月14日,位于奉贤区柘林镇华亭村东海1120号的宅基地及房屋启动动迁,出现动迁问题,动迁协议争议,各种推脱不予以处理。略】。(处理时间:2025-05-11 08:25:25)\n\n# 输出结果\n无回复\n```\n\n```\n# 当前对话总结\n本人于 2023 年 11 月,在上海市闵行区浦江万达广场 3 楼七彩虹轮滑注册付费办理轮滑次卡,支付金额 6091 元,共 70 次。迄今共上课次数 32 次,因小朋友最近抗拒参加轮滑课程,故与商家协商退款退卡一事。经沟通,2025 年 5 月 18 日门店工作人员告知不予退款,且于 2025 年 3 月公司已工商变更(未告知顾客),如果要退款则必须按照现公司规定,按照已上课次数×200 元每节课的标准进行退费,已严重损害消费者权益。现要求商家按照付费金额/总课时的单价予以退费。(工单时间:2025-05-21 14:45:12)\n\n# 候选重复工单\n(工单编号:20250518015164)市民来电反映:市民23年10月在上述地址办理的轮滑培训场所办理的会员卡,当时支付了6091元,包含了70次的次卡,到现在还剩38次,市民要求按照没有上完的次数抵扣退还费用,但是该公司拒绝给市民退款,还说公司有规定退款的话已经上完的课程算200元一节课来给市民退款。诉求:希望管理部门协助市民按照已支付的金额和课次的单价给市民退款。(处理时间:2025-05-18 14:18:59)\n(工单编号:20250519027281)市民来电补充信息。市民补充信息内容为,联系市民告知管不了,市民要求后续推进处理。【最近派发的工单编号:20250518015164,工单内容:市民来电反映:市民23年10月在上述地址办理的轮滑培训场所办理的会员卡,当时支付了6091元,包含了70次的次卡,到现在还剩38次,市民要求按照没有上完的次数抵扣退还费用,但是该公司拒绝给市民退款,还说公司有规定退款的话已经上完的课程算200元一节课来给市民退款。诉求:希望管理部门协助市民按照已支付的金额和课次的单价给市民退款。】(处理时间:2025-05-19 15:00:50)\n\n# 输出结果\n补充信息\n```\n\n```\n# 当前对话总结\n居住浦东新区万祥镇祥安竹苑的朱行兵长期驾驶车辆沪AEN3139从事非营运,举报多次未查处(工单时间:2025-05-14 11:57:33)\n\n# 候选重复工单\n(工单编号:20250512030382)市民反映:【车牌或运营号:,时间:2025/04/12 15:07:00】车辆沪AHE1188是非法运营的网约车,举报多次未查处,诉求:希望管理部门核实并查处非法运营。(市民要求信息保密,需要回复)(处理时间:2025-05-12 15:31:55)\n(工单编号:20250512029923)【市民反映:车牌或运营号:,时间:2025/04/12 15:07:00】附件中车辆举报多次未抓。市民未提供车牌,请管理部门先行联系。诉求:请管理部门核实查处。(市民要求信息保密,需要回复)(处理时间:2025-05-12 15:23:31)\n\n# 输出结果\n未先行联系\n```\n\n```\n# 当前对话总结\n我是碧桂园凤凰城的业主,现再次反映小区物业长期阻挠居民安装新能源汽车充电桩的问题。尽管此前已有相关部门介入回复,但地下车库充电桩安装事宜拖延一年多仍未解决,与上海市推广新能源汽车的政策导向相违背。\\n目前小区充电桩现状有以下问题:\\n充电桩数量严重不足:地上地下现有充电桩无法满足业主需求,下班高峰期抢桩现象频发,充电体验极差。\\n充电费用不合理:现有共享充电桩电价高达1.12元/度,是居民谷时电价的3倍。\\n决策流程不透明:此前关于地库长租价格的会议未能充分征求全体业主意见,且未通过正式通知和合规投票流程,缺乏代表性。\\n本小区新能源车主占比已过半,充电需求迫切,但物业长期以地库未交付等理由推诿,却未提出实质性改进方案。我们恳请相关部门:\\n督促物业公开电力容量、消防验收等关键数据,明确是否具备安装条件;若存在客观限制,需制定升级改造计划并公示时间表。\\n召开业主大会或书面投票,以合规流程征集全体业主意见。\\n协调降低充电服务费,参照居民电价标准定价,减轻车主负担。\\n新能源汽车普及是大势所趋,业主合法权益不应被漠视。望相关部门切实履职,推动问题解决,而非让业主陷入“投诉-回复-无进展”的循环。(工单时间:2025-05-14 11:57:33)\n\n# 候选重复工单\n(工单编号:20250401010412)市民反映:碧桂园凤凰城地下车库迟迟不能交付,并且不能长租,导致充电桩不能安装。目前地上充电桩根本无法满足需求,并且电费较高,每天有大量住户因为此事而大打出手。此事已与开发商、物业沟通,迟迟不给予答复。诉求:请允许市民使用地下车库并安装充电桩。(市民要求信息保密,需要回复)(处理时间:2025-04-01 10:46:18)\n\n# 输出结果\n办理结果不满\n```\n\n# 输出格式\n你仅输出重复来电原因\n\n下面开始吧!", + "valueDesc": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "history", + "renderTypeList": [ + "numberInput", + "reference" + ], + "valueType": "chatHistory", + "label": "Chat History", + "description": "workflow:max_dialog_rounds", + "required": true, + "min": 0, + "max": 50, + "value": 1, + "valueDesc": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "content", + "renderTypeList": [ + "reference", + "textarea" + ], + "label": "Text to Extract", + "required": true, + "valueType": "string", + "toolDescription": "Content to Retrieve", + "value": [ + "pXemWjm1TR63", + "gR0mkQpJ4Og8" + ], + "valueDesc": "", + "description": "", + "debugLabel": "" + }, + { + "key": "extractKeys", + "renderTypeList": [ + "custom" + ], + "label": "", + "valueType": "any", + "description": "workflow:target_fields_description", + "value": [ + { + "valueType": "string", + "required": false, + "defaultValue": "", + "desc": "重复来电原因", + "key": "reReason", + "enum": "" + } + ], + "valueDesc": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [ + { + "id": "success", + "key": "success", + "label": "workflow:full_field_extraction", + "required": true, + "description": "Returns true when all fields are fully extracted (success includes model extraction or using default values)", + "valueType": "boolean", + "type": "static" + }, + { + "id": "fields", + "key": "fields", + "label": "workflow:complete_extraction_result", + "required": true, + "description": "A JSON string, e.g., {\"name\":\"YY\",\"Time\":\"2023/7/2 18:00\"}", + "valueType": "string", + "type": "static" + }, + { + "id": "uPvvcrmHma0l", + "key": "reReason", + "label": "Extraction Results-reReason", + "valueType": "string", + "type": "static" + } + ] + }, + { + "nodeId": "mETywQigLtbm", + "name": "Post Check reReason", + "intro": "Execute a simple script code, usually for complex data processing.", + "avatar": "core/workflow/template/codeRun", + "flowNodeType": "code", + "showStatus": true, + "position": { + "x": 5209.451064732367, + "y": 505.8376891401946 + }, + "version": "482", + "inputs": [ + { + "key": "system_addInputParam", + "renderTypeList": [ + "addInputParam" + ], + "valueType": "dynamic", + "label": "", + "required": false, + "description": "workflow:these_variables_will_be_input_parameters_for_code_execution", + "customInputConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": true + }, + "valueDesc": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "codeType", + "renderTypeList": [ + "hidden" + ], + "label": "", + "value": "js", + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "key": "code", + "renderTypeList": [ + "custom" + ], + "label": "", + "value": "function isReReasonAllowed(reReason) {\n // The includes() method checks if an array contains a specific element.\n // It returns true if the element is found, and false otherwise.\n // It uses SameValueZero comparison, which is similar to strict equality (===).\n const allowedReasons = ['办理结果不满', '办理期催办', '补充信息', '撤单', '未先行联系', '无回复'];\n return allowedReasons.includes(reReason);\n}\n\nfunction main({reReason}){\n const inList = isReReasonAllowed(reReason);\n \n return {\n inList: inList\n }\n}", + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + }, + { + "renderTypeList": [ + "reference" + ], + "valueType": "string", + "canEdit": true, + "key": "reReason", + "label": "reReason", + "customInputConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": true + }, + "required": true, + "value": [ + "bas3L59lnr0E", + "uPvvcrmHma0l" + ], + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [ + { + "id": "system_rawResponse", + "key": "system_rawResponse", + "label": "workflow:full_response_data", + "valueType": "object", + "type": "static", + "description": "" + }, + { + "id": "error", + "key": "error", + "label": "workflow:execution_error", + "description": "Error information of code execution, returns empty on success", + "valueType": "object", + "type": "static" + }, + { + "id": "system_addOutputParam", + "key": "system_addOutputParam", + "type": "dynamic", + "valueType": "dynamic", + "label": "", + "customFieldConfig": { + "selectValueTypeList": [ + "string", + "number", + "boolean", + "object", + "arrayString", + "arrayNumber", + "arrayBoolean", + "arrayObject", + "arrayAny", + "any", + "chatHistory", + "datasetQuote", + "dynamic", + "selectDataset", + "selectApp" + ], + "showDescription": false, + "showDefaultValue": false + }, + "description": "Pass the object returned in the code as output to the next nodes. The variable name needs to correspond to the return key.", + "valueDesc": "" + }, + { + "id": "zNxZEzujnxTP", + "valueType": "boolean", + "type": "dynamic", + "key": "inList", + "label": "inList" + } + ] + }, + { + "nodeId": "u5IPosXwKnNs", + "name": "Condition#5", + "intro": "Execute different branches based on conditions.", + "avatar": "core/workflow/template/ifelse", + "flowNodeType": "ifElseNode", + "showStatus": true, + "position": { + "x": 5873.613357230781, + "y": 695.6284042706411 + }, + "version": "481", + "inputs": [ + { + "key": "ifElseList", + "renderTypeList": [ + "hidden" + ], + "valueType": "any", + "label": "", + "value": [ + { + "condition": "AND", + "list": [ + { + "variable": [ + "mETywQigLtbm", + "zNxZEzujnxTP" + ], + "condition": "equalTo", + "value": "true" + } + ] + } + ], + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [ + { + "id": "ifElseResult", + "key": "ifElseResult", + "label": "workflow:judgment_result", + "valueType": "string", + "type": "static", + "description": "" + } + ] + }, + { + "nodeId": "dkpKyaSQSuXo", + "name": "", + "intro": "", + "avatar": "", + "flowNodeType": "comment", + "position": { + "x": 772.0511335494584, + "y": -2261.2449067395646 + }, + "version": "4811", + "inputs": [ + { + "key": "commentText", + "renderTypeList": [], + "valueType": "string", + "label": "", + "value": "{\n \"wpid\": \"20250527040522\",\n \"reWpid\": \"20250522024841\",\n \"relTitle\": \"占用非机动车道,人行道,乱摆摊\",\n \"content\": \"时间:2025.5.27\\n地点:浦连路150弄小区门口西至浦连路桥\\n经过:违规摆摊,占用非机动车道,人行道,吵闹,垃圾乱丢。\\n皖KRA890长期占道非机动车已经两年,占道经营,投诉几次,城管赶跑,3分钟就回来。\\n人行道上,三轮车穿红衣服小贩每天大概下午3点至6点小区门口乱摆摊\\n诉求:非机动车道常年摆摊,希望彻底清除皖KRA890\",\n \"summary\": \"市民补充信息:2025年5月27日,皖KRA890长期违规摆摊,占用非机动车道,投诉几次城管赶跑但3分钟就回来。人行道上,三轮车穿红衣服小贩每天大概15:00至18:00在小区门口乱摆摊。【最近派发的工单编号:20250522024841,工单内容:市民反映:2025年5月22日7:00——19:00,车牌号为皖KSB590的车辆长期占用非机动车道违规经营活动(详见附件),还有三轮车卖东西的、诉求:请管理部门清理违规设摊的卡车和三轮车。(市民要求信息保密,需要回复)】\",\n \"address\": \"闵行区浦江镇浦连路150弄\",\n \"relAddress\": \"闵行区浦江镇浦连路150弄门口 西至浦连路桥\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"工单归档\",\n \"startTime\": \"2025-05-27 17:42:53\",\n \"repeatReason\": \"补充信息\",\n \"history\": [\n {\n \"wpid\": \"20250522024841\",\n \"summary\": \"市民反映:2025年5月22日7:00——19:00,车牌号为皖KSB590的车辆长期占用非机动车道违规经营活动(详见附件),还有三轮车卖东西的、诉求:请管理部门清理违规设摊的卡车和三轮车。(市民要求信息保密,需要回复)\",\n \"relAddress\": \"闵行区浦江镇浦连路150弄小区门口至浦连路桥\",\n \"state\": \"二级承办单位受理\",\n \"nextState\": \"二级承办单位处理\",\n \"ended\": \"未办结\",\n \"starttime\": \"2025-05-22 14:33:11\"\n },\n {\n \"wpid\": \"20250522032927\",\n \"summary\": \"市民反映相同事项。【最近派发的工单编号:20250522024841,工单内容:市民反映:2025年5月22日7:00——19:00,车牌号为皖KSB590的车辆长期占用非机动车道违规经营活动(详见附件),还有三轮车卖东西的、诉求:请管理部门清理违规设摊的卡车和三轮车。(市民要求信息保密,需要回复)】\\n\",\n \"relAddress\": \"闵行区浦江镇浦连路150弄小区门口至浦连路桥\",\n \"state\": \"12345热线互联网后台处理\",\n \"nextState\": \"工单归档(存电)\",\n \"ended\": \"未办结\",\n \"starttime\": \"2025-05-22 16:32:26\"\n },\n {\n \"wpid\": \"20250527040522\",\n \"summary\": \"市民补充信息:2025年5月27日,皖KRA890长期违规摆摊,占用非机动车道,投诉几次城管赶跑但3分钟就回来。人行道上,三轮车穿红衣服小贩每天大概15:00至18:00在小区门口乱摆摊。【最近派发的工单编号:20250522024841,工单内容:市民反映:2025年5月22日7:00——19:00,车牌号为皖KSB590的车辆长期占用非机动车道违规经营活动(详见附件),还有三轮车卖东西的、诉求:请管理部门清理违规设摊的卡车和三轮车。(市民要求信息保密,需要回复)】\",\n \"relAddress\": \"闵行区浦江镇浦连路150弄门口 西至浦连路桥\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"工单归档\",\n \"ended\": \"未办结\",\n \"starttime\": \"2025-05-27 18:14:44\"\n }\n ]\n }" + }, + { + "key": "commentSize", + "renderTypeList": [], + "valueType": "object", + "label": "", + "value": { + "width": 1017, + "height": 1058 + } + } + ], + "outputs": [] + }, + { + "nodeId": "vgArldg6Y1QM", + "name": "Variable Update#2", + "intro": "Can update the output value of a specified node or update global variables", + "avatar": "core/workflow/template/variableUpdate", + "flowNodeType": "variableUpdate", + "showStatus": false, + "position": { + "x": 6897.727473419457, + "y": -332.0448246522825 + }, + "version": "481", + "inputs": [ + { + "key": "updateList", + "valueType": "any", + "label": "", + "renderTypeList": [ + "hidden" + ], + "value": [ + { + "variable": [ + "VARIABLE_NODE_ID", + "reWpid" + ], + "value": [ + "", + "未找到关联工单" + ], + "valueType": "string", + "renderType": "input" + } + ], + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [] + }, + { + "nodeId": "dG5d4hGpIRER", + "name": "Variable Update#3", + "intro": "Can update the output value of a specified node or update global variables", + "avatar": "core/workflow/template/variableUpdate", + "flowNodeType": "variableUpdate", + "showStatus": false, + "position": { + "x": 6888.0900236325, + "y": 488.78372223197687 + }, + "version": "481", + "inputs": [ + { + "key": "updateList", + "valueType": "any", + "label": "", + "renderTypeList": [ + "hidden" + ], + "value": [ + { + "variable": [ + "VARIABLE_NODE_ID", + "reReason" + ], + "value": [ + "bas3L59lnr0E", + "uPvvcrmHma0l" + ], + "valueType": "string", + "renderType": "reference" + } + ], + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [] + }, + { + "nodeId": "sgXydcb9CnEg", + "name": "Variable Update#4", + "intro": "Can update the output value of a specified node or update global variables", + "avatar": "core/workflow/template/variableUpdate", + "flowNodeType": "variableUpdate", + "showStatus": false, + "position": { + "x": 6897.727473419457, + "y": 972.357796592783 + }, + "version": "481", + "inputs": [ + { + "key": "updateList", + "valueType": "any", + "label": "", + "renderTypeList": [ + "hidden" + ], + "value": [ + { + "variable": [ + "VARIABLE_NODE_ID", + "reReason" + ], + "value": [ + "", + "自动判断重复原因失败" + ], + "valueType": "string", + "renderType": "input" + } + ], + "valueDesc": "", + "description": "", + "debugLabel": "", + "toolDescription": "" + } + ], + "outputs": [] + }, + { + "nodeId": "dH6byC9yxNBc", + "name": "", + "intro": "", + "avatar": "", + "flowNodeType": "comment", + "position": { + "x": -1072.6624755198736, + "y": -2261.2449067395646 + }, + "version": "4811", + "inputs": [ + { + "key": "commentText", + "renderTypeList": [], + "valueType": "string", + "label": "", + "value": "样例输入:\n{\"wpid\": \"1234\", \"content\": \"abdc\", \"startTime\": \"2025\", \"ended\": \"办结\", \"history\": [{\"wpid\": \"11\", \"summary\": \"ddd\", \"starttime\": \"2024\", \"ended\": \"办结\"}]}" + }, + { + "key": "commentSize", + "renderTypeList": [], + "valueType": "object", + "label": "", + "value": { + "width": 240, + "height": 140 + } + } + ], + "outputs": [] + }, + { + "nodeId": "detPUpdR1w98", + "name": "", + "intro": "", + "avatar": "", + "flowNodeType": "comment", + "position": { + "x": 1873.418991331268, + "y": -2261.2449067395646 + }, + "version": "4811", + "inputs": [ + { + "key": "commentText", + "renderTypeList": [], + "valueType": "string", + "label": "", + "value": "{\"wpid\": \"20250619200011\",\n\"reWpid\": \"\",\n\"relTitle\": \"唐镇街道旁小何有有很多垃圾\",\n\"content\": \"河里面的水都是黑的,很脏,反馈了更长时间都没有人处理。希望有关部门能清理一下河道。\",\n\"summary\": \"河里面的水都是黑的,很脏,反馈了更长时间都没有人处理。希望有关部门能清理一下河道。\",\n\"address\": \"唐镇绿波城\",\n\"state\": \"12345热线互联网后台受理\",\n\"nextState\": \"\",\n\"startTime\": \"2025-06-19 13:31:40\",\n\"history\": [{\"wpid\": \"20250522200112\",\n\"summary\": \"21212\",\n\"relAddress\": \"浦东新区福山路40弄12号21121(12号)\",\n\"state\": \"12345热线前台受理\",\n\"nextState\": \"12345热线后台处理\",\n\"ended\": \"未办结\",\n\"starttime\": \"2025-05-22 20:29:54\"},\n{\"wpid\": \"20250604200031\",\n\"summary\": \"松江\",\n\"relAddress\": \"浦东新区日月光封装测试(上海)有限公司(日月光封装测试(上海)有限公司)\",\n\"state\": \"12345热线互联网后台受理\",\n\"nextState\": \"12345热线后台处理\",\n\"ended\": \"未办结\",\n\"starttime\": \"2025-06-04 14:48:39\"},\n{\"wpid\": \"20250611200046\",\n\"summary\": \"【寄件地址:闵行区~闵行区莘庄,收件地址:浦东新区~浦东新区唐镇绿波城,寄件日期:2025年06月11日15:24,收件日期:2025年06月11日15:24,单号:SF107570398】快递公司,在2025年6月11日丢失我20斤纯金。\",\n\"relAddress\": \"本市上海市真厉害投资有限公司\",\n\"state\": \"12345热线互联网后台受理\",\n\"nextState\": \"二级承办单位受理\",\n\"ended\": \"未办结\",\n\"starttime\": \"2025-06-11 15:27:19\"},\n{\"wpid\": \"20250619200001\",\n\"summary\": \"市民反映:顺丰快递丢失了市民的黄金。诉求:请管理部门核实后尽快协调处理。\",\n\"relAddress\": \"顺丰快递\",\n\"state\": \"12345热线互联网后台受理\",\n\"nextState\": \"工单归档(存电)\",\n\"ended\": \"未办结\",\n\"starttime\": \"2025-06-19 08:25:30\"}]}" + }, + { + "key": "commentSize", + "renderTypeList": [], + "valueType": "object", + "label": "", + "value": { + "width": 576, + "height": 472 + } + } + ], + "outputs": [] + }, + { + "nodeId": "uRStSsMnN2oL", + "name": "", + "intro": "", + "avatar": "", + "flowNodeType": "comment", + "position": { + "x": 2568.188190381833, + "y": -2261.2449067395646 + }, + "version": "4811", + "inputs": [ + { + "key": "commentText", + "renderTypeList": [], + "valueType": "string", + "label": "", + "value": "{\"wpid\": \"20250619274770\",\n \"reWpid\": \"\",\n \"relTitle\": \"投诉上海市教育委员会未依法履行监管职责的行政不作为\",\n \"content\": \"我曾向上海市教育委员会实名举报上海寰隅宸帆教育科技工作室违法行为,并提供负责人徐启钧的联系方式及地址等关键信息。但教委以“注册地址为虚拟地址”为由,拒绝受理投诉。此答复明显违反《民办教育促进法》第六十四条赋予教育行政部门的法定监管职责,亦与《上海市行政处罚听证程序规定》中“行政机关应依法调查取证”的程序要求相悖。教委未依法采取实地核查、约谈负责人等必要调查措施,反而以形式化理由推卸责任。此行为涉嫌违反《民办教育促进法》第六十三条第(三)项“疏于管理,造成严重后果”的追责条款,构成行政不作为。教委至今未采取任何实质性措施,放任违法行为延续。\\n1.请上海市教育委员会立即依法履行监管职责,对上海寰隅宸帆教育科技工作室无资质办学行为立案调查;\\n2.请教委书面说明未受理投诉的具体法律依据及调查过程,并公开调查结论;\\n3. 依据《民办教育促进法》第六十四条,责令该工作室停止办学、退还费用,并对相关责任人依法处罚。\",\n \"summary\": \"市民反映:其曾向上海市教育委员会实名举报上海寰隅宸帆教育科技工作室违法行为,并提供负责人徐启钧的联系方式及地址等关键信息。但教委以“注册地址为虚拟地址”为由,拒绝受理投诉。此答复明显违反《民办教育促进法》第六十四条赋予教育行政部门的法定监管职责,亦与《上海市行政处罚听证程序规定》中“行政机关应依法调查取证”的程序要求相悖。教委未依法采取实地核查、约谈负责人等必要调查措施,反而以形式化理由推卸责任。此行为涉嫌违反《民办教育促进法》第六十三条第(三)项“疏于管理,造成严重后果”的追责条款,构成行政不作为。教委至今未采取任何实质性措施,放任违法行为延续。诉求:请上海市教育委员会立即依法履行监管职责,对上海寰隅宸帆教育科技工作室无资质办学行为立案调查;请教委书面说明未受理投诉的具体法律依据及调查过程,并公开调查结论;依据《民办教育促进法》第六十四条,责令该工作室停止办学、退还费用,并对相关责任人依法处罚。\",\n \"address\": \"徐启钧所在地:上海闵行区吴中路633弄明申花园117号\\n徐启钧电话:18602165830\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"\",\n \"startTime\": \"2025-06-19 23:49:13\",\n \"history\": [{\"wpid\": \"20250604041095\",\n \"summary\": \"【商家地址/名称:未提供,时间:2025年06月04日18:53】5月中旬,由于忧虑孩子的考试压力,我在小红书上找到上海寰隅宸帆教育科技工作室做考试辅导,支付订金人民币贰万四千元整。6月4日孩子准备参加考试,发现此公司就是代考。孩子坚决不同意以此种方式拿到成绩,在考试开始前就取消了此次考试。我与该公司徐启钧沟通,但此人坚决拒绝退还已付订金。我严重质疑该公司在经营范围外进行不合法交易。\",\n \"relAddress\": \"闵行区放鹤路1088号\",\n \"state\": \"二级承办单位受理\",\n \"nextState\": \"二级承办单位处理\",\n \"ended\": \"未办结\",\n \"starttime\": \"2025-06-04 19:00:14\"},\n {\"wpid\": \"20250604042134\",\n \"summary\": \"市民补充信息:【商家地址/名称:放鹤路1088号,时间:2025年06月04日 19:01,涉及金额:】该公司徐启钧利用小红书等媒体,宣传SAT,GRE,托福等国际考试代考,并放话说中国的法律管不了他的事情。现徐启钧借口不合法的“霸王条款”拒绝退款,此人行为严重违背了合同要建立在“合法合理”基础这个宗旨。【最近派发的工单编号:20250604041095,工单内容:【商家地址/名称:未提供,时间:2025年06月04日18:53】5月中旬,由于忧虑孩子的考试压力,我在小红书上找到上海寰隅宸帆教育科技工作室做考试辅导,支付订金人民币贰万四千元整。6月4日孩子准备参加考试,发现此公司就是代考。孩子坚决不同意以此种方式拿到成绩,在考试开始前就取消了此次考试。我与该公司徐启钧沟通,但此人坚决拒绝退还已付订金。我严重质疑该公司在经营范围外进行不合法交易。】\",\n \"relAddress\": \"闵行区放鹤路1088号\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"工单归档\",\n \"ended\": \"已办结\",\n \"starttime\": \"2025-06-04 19:33:27\"},\n {\"wpid\": \"20250604042186\",\n \"summary\": \"市民补充信息:【商家地址/名称:放鹤路1088号,时间:2025年06月04日 19:22,涉及金额:】上海寰隅宸帆教育科技工作室超公司经营范围,违规在小红书等媒体发布代考信息。【最近派发的工单编号:20250604041095,工单内容:【商家地址/名称:未提供,时间:2025年06月04日18:53】5月中旬,由于忧虑孩子的考试压力,我在小红书上找到上海寰隅宸帆教育科技工作室做考试辅导,支付订金人民币贰万四千元整。6月4日孩子准备参加考试,发现此公司就是代考。孩子坚决不同意以此种方式拿到成绩,在考试开始前就取消了此次考试。我与该公司徐启钧沟通,但此人坚决拒绝退还已付订金。我严重质疑该公司在经营范围外进行不合法交易。】\",\n \"relAddress\": \"闵行区放鹤路1088号\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"工单归档\",\n \"ended\": \"已办结\",\n \"starttime\": \"2025-06-04 19:35:49\"},\n {\"wpid\": \"20250605034341\",\n \"summary\": \"市民补充信息:【商家地址/名称:放鹤路1088号,时间:2025年06月05日 18:58,涉及金额:】上海寰隅宸帆教育科技工作室的营业范围内并无利用“科技”远程代考项目,却不断在小红书、微信等媒体上诱导不明真相的学生家长相信它的一面之词。其于5月15日与该公司签订了考试合同,支付订金人民币二万四千元整。6月4日在考前辅导时,孩子发现所谓的辅导就是“代考”,当即取消了考试。当时考试未开始,该公司也未开始正式服务,其要求退订金,但该公司徐启钧以合同规定不予退还为由拒绝。该公司严重违反合法合规经营的原则,利用霸王条款拒不退还订金。请相关部门核实该公司的违规违法行为。【最近派发的工单编号:20250604041095,工单内容:5月中旬,由于忧虑孩子的考试压力,我在小红书上找到上海寰隅宸帆教育科技工作室做考试辅导,支付订金人民币贰万四千元整。6月4日孩子准备参加考试,发现此公司就是代考。孩子坚决不同意以此种方式拿到成绩,在考试开始前就取消了此次考试。我与该公司徐启钧沟通,但此人坚决拒绝退还已付订金。我严重质疑该公司在经营范围外进行不合法交易。】\",\n \"relAddress\": \"闵行区放鹤路1088号\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"工单归档\",\n \"ended\": \"已办结\",\n \"starttime\": \"2025-06-05 19:19:51\"},\n {\"wpid\": \"20250606009156\",\n \"summary\": \"市民补充信息:【商家地址/名称:放鹤路1088号,时间:2025年06月06日 05:55,涉及金额:】上海寰隅宸帆教育科技工作室的经营范围不包括考试辅导、培训、保分培训,该公司无教育培训资质。因此,我与该公司签订的考试辅导服务合同无效,应全额退款。【最近派发的工单编号:20250604041095,工单内容:【商家地址/名称:未提供,时间:2025年06月04日18:53】5月中旬,由于忧虑孩子的考试压力,我在小红书上找到上海寰隅宸帆教育科技工作室做考试辅导,支付订金人民币贰万四千元整。6月4日孩子准备参加考试,发现此公司就是代考。孩子坚决不同意以此种方式拿到成绩,在考试开始前就取消了此次考试。我与该公司徐启钧沟通,但此人坚决拒绝退还已付订金。我严重质疑该公司在经营范围外进行不合法交易。】\",\n \"relAddress\": \"闵行区放鹤路1088号\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"工单归档\",\n \"ended\": \"已办结\",\n \"starttime\": \"2025-06-06 10:38:28\"},\n {\"wpid\": \"20250607014381\",\n \"summary\": \"市民补充信息:合同中提到的“保分服务”存在是否合法,宣传是否真实或者虚假宣传的问题:合同承诺LSAT分数≥175分,但多数标准化考试(如LSAT)明确禁止“保分”服务,涉及作弊或违反考试机构规则,所以此合同无效。【最近派发的工单编号:20250604041095,工单内容:【商家地址/名称:未提供,时间:2025年06月04日18:53】5月中旬,由于忧虑孩子的考试压力,我在小红书上找到上海寰隅宸帆教育科技工作室做考试辅导,支付订金人民币贰万四千元整。6月4日孩子准备参加考试,发现此公司就是代考。孩子坚决不同意以此种方式拿到成绩,在考试开始前就取消了此次考试。我与该公司徐启钧沟通,但此人坚决拒绝退还已付订金。我严重质疑该公司在经营范围外进行不合法交易。】\",\n \"relAddress\": \"闵行区放鹤路1088号\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"工单归档\",\n \"ended\": \"已办结\",\n \"starttime\": \"2025-06-07 14:56:26\"},\n {\"wpid\": \"20250608003953\",\n \"summary\": \"市民补充信息:上海寰隅宸帆教育科技工作室并无办学培训资质,利用“科技”的名义诱导他人参与远程代考项目。【最近派发的工单编号:20250604041095,工单内容:【商家地址/名称:未提供,时间:2025年06月04日18:53】5月中旬,由于忧虑孩子的考试压力,我在小红书上找到上海寰隅宸帆教育科技工作室做考试辅导,支付订金人民币贰万四千元整。6月4日孩子准备参加考试,发现此公司就是代考。孩子坚决不同意以此种方式拿到成绩,在考试开始前就取消了此次考试。我与该公司徐启钧沟通,但此人坚决拒绝退还已付订金。我严重质疑该公司在经营范围外进行不合法交易。】\\n\\n\",\n \"relAddress\": \"闵行区放鹤路1088号\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"工单归档\",\n \"ended\": \"已办结\",\n \"starttime\": \"2025-06-08 10:05:38\"},\n {\"wpid\": \"20250609002600\",\n \"summary\": \"市民反映:已通过市民热线反映事项,现要求补充图片作为证据(详见附件)。诉求:希望管理部门核实转送相关照片至承办部门。【相关工单编号:20250604041095】\",\n \"relAddress\": \"闵行区放鹤路1088号\",\n \"state\": \"二级承办单位处理\",\n \"nextState\": \"工单回访\",\n \"ended\": \"已办结\",\n \"starttime\": \"2025-06-09 09:03:08\"},\n {\"wpid\": \"20250610000815\",\n \"summary\": \"【商家地址/名称:未提供,时间:2025年06月10日07:31】上海寰隅宸帆教育科技工作室使用虚假的注册地址和电话信息骗取工商登记,试图通过虚假信息规避监管,大肆在小红书、微信等社交媒体发布不实广告,虚假宣传。\",\n \"relAddress\": \"闵行区放鹤路1088号\",\n \"state\": \"二级承办单位受理\",\n \"nextState\": \"二级承办单位处理\",\n \"ended\": \"未办结\",\n \"starttime\": \"2025-06-10 07:40:05\"},\n {\"wpid\": \"20250611000976\",\n \"summary\": \"市民反映:【商家地址/名称:放鹤路1088号,时间:2025年06月11日 07:43,涉及金额:】举报上海寰隅宸帆教育科技工作室,收款不开发票,使用个人账户收款,涉嫌偷逃国家税款,破坏税收征管秩序。诉求:投诉偷税漏税。\",\n \"relAddress\": \"闵行区放鹤路1088号\",\n \"state\": \"二级承办单位受理\",\n \"nextState\": \"二级承办单位处理\",\n \"ended\": \"未办结\",\n \"starttime\": \"2025-06-11 08:07:25\"},\n {\"wpid\": \"20250611001027\",\n \"summary\": \"市民反映:上海寰隅宸帆教育科技工作室,未取得教育主管部门核发资质,擅自开展考试辅导培训业务,打着合法名义与学生家长签订“考试辅导服务合同”,收取高额订金拒不退还,严重侵害学员合法权益。诉求:核查教育资质。\",\n \"relAddress\": \"闵行区放鹤路1088号\",\n \"state\": \"二级承办单位处理结果确认\",\n \"nextState\": \"工单回访\",\n \"ended\": \"已办结\",\n \"starttime\": \"2025-06-11 08:11:26\"},\n {\"wpid\": \"20250611001115\",\n \"summary\": \"市民补充信息:【商家地址/名称:放鹤路1088号,时间:2025年06月11日 07:43,涉及金额:】举报上海寰隅宸帆教育科技工作室,通过伪造经营场所证明、虚假联系方式等手段骗取工商登记,公然挑战市场准入制度。【最近派发的工单编号:20250610000815,工单内容:【商家地址/名称:未提供,时间:2025年06月10日07:31】上海寰隅宸帆教育科技工作室使用虚假的注册地址和电话信息骗取工商登记,试图通过虚假信息规避监管,大肆在小红书、微信等社交媒体发布不实广告,虚假宣传。】\",\n \"relAddress\": \"闵行区放鹤路1088号\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"工单归档\",\n \"ended\": \"已办结\",\n \"starttime\": \"2025-06-11 08:14:41\"},\n {\"wpid\": \"20250611001165\",\n \"summary\": \"市民反映:上海寰隅宸帆教育科技工作室,在其依法维护自身合法权益过程中,该公司实际控制人徐启钧通过电话短信等方式对其实施恐吓威胁,该行为已涉嫌构成打击报复举报人罪。诉求:希望得到帮助。\",\n \"relAddress\": \"闵行区放鹤路1088号\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"工单归档\",\n \"ended\": \"已办结\",\n \"starttime\": \"2025-06-11 08:16:43\"},\n {\"wpid\": \"20250612201239\",\n \"summary\": \"【商家地址/名称:null,时间:2025年06月12日07:23,涉及金额:24000】2025年6月11日,本人接到贵所来电回复举报上海寰隅宸帆教育科技工作室偷税漏税事宜,质疑如下:1.监管责任存疑:贵所仅以“按时申报”作为合规结论,但未说明如何核实徐启钧2022年以来是否已严格履行申报义务,亦未提供后续监管措施,存在税务风险漏洞。要求上海市税务稽查部门核查该工作室2022年以来税务违规行为。(我可提供相应证据资料)2.合同条款与税法冲突:合同中允许个人收款的条款,涉嫌规避企业纳税义务(如增值税、所得税等)。贵所仅以合同约定为依据,未结合税法规定审查交易实质,结论有失严谨。3.信息透明度不足:贵所未向本人提供徐启钧或涉事企业的完税证明、申报记录等材料,导致投诉人无法确认交易合规性,权益保障缺失。\",\n \"relAddress\": \"闵行区税务局19所\",\n \"state\": \"二级承办单位受理\",\n \"nextState\": \"二级承办单位处理\",\n \"ended\": \"未办结\",\n \"starttime\": \"2025-06-12 07:40:35\"},\n {\"wpid\": \"20250613000421\",\n \"summary\": \"市民补充信息:【商家地址/名称:放鹤路1088号,时间:2025年06月13日 08:07,涉及金额:】上海寰隅宸帆教育科技工作室营业执照登记的经营范围为“信息咨询服务”,但合同中明确包含“考试辅导”“保分服务”“咨询培训人员”等教育培训相关内容,无相关资质且超出其合法经营范围,根据《企业法人登记管理条例》第三十条及《公司登记管理条例》第七十三条、第八十五条规定,该工作室应受到相应处罚。根据《民法典》第153条,违反法律、行政法规强制性规定的民事法律行为无效。该公司无教育培训资质却签订相关合同, 合同无效,应全额退款。【最近派发的工单编号:20250604041095,工单内容:【商家地址/名称:未提供,时间:2025年06月04日18:53】5月中旬,由于忧虑孩子的考试压力,我在小红书上找到上海寰隅宸帆教育科技工作室做考试辅导,支付订金人民币贰万四千元整。6月4日孩子准备参加考试,发现此公司就是代考。孩子坚决不同意以此种方式拿到成绩,在考试开始前就取消了此次考试。我与该公司徐启钧沟通,但此人坚决拒绝退还已付订金。我严重质疑该公司在经营范围外进行不合法交易。】\",\n \"relAddress\": \"闵行区放鹤路1088号\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"工单归档\",\n \"ended\": \"已办结\",\n \"starttime\": \"2025-06-13 08:13:37\"},\n {\"wpid\": \"20250613010695\",\n \"summary\": \"【商家地址/名称:放鹤路1088号,时间:2025年06月13日 12:01,涉及金额:】【投诉】市民反映:2025年6月12日,市场监管局在未与其取得任何形式沟通(如电话、邮件或书面反馈)的情况下,直接将该投诉标记为“已办结”。此处理方式存在以下严重问题:1. 程序违规:根据《市场监督管理投诉举报处理暂行办法》第十六条,市场监管部门应在收到投诉后7个工作日内决定是否受理,并告知投诉人。贵局未履行告知义务,剥夺了投诉人的知情权;2. 调查不充分:在未联系投诉人核实细节、未要求被投诉方提供证据的情况下仓促结案,存在敷衍了事、未依法履职的嫌疑;3. 纵容违法行为:若被投诉方的虚假宣传行为未被及时制止,将导致更多消费者受骗,损害公共利益。诉求:投诉上海市市场监管局敷衍对待投诉。(前工单编号:20250609002600)\",\n \"relAddress\": \"闵行区放鹤路1088号\",\n \"state\": \"二级承办单位受理\",\n \"nextState\": \"二级承办单位处理\",\n \"ended\": \"未办结\",\n \"starttime\": \"2025-06-13 12:19:51\"},\n {\"wpid\": \"20250617003177\",\n \"summary\": \"市民补充信息:【商家地址/名称:放鹤路1088号,时间:2025年06月17日 07:39,涉及金额:】该工作室未依法取得ICP备案及经营许可证,却长期开展考试辅导业务。根据《民办教育促进法》第十二条及《互联网信息服务管理办法》第四条,从事线上教育服务需取得前置审批及备案。且其无法提供教师资质证明,涉嫌虚假宣传及违规授课。该工作室工商注册经营范围仅为“技术服务、技术开发、技术咨询”等,但实际以“考试辅导”为核心业务,通过“咨询”名义变相开展考试辅导服务,涉嫌逃避行业监管。2025年6月10日,负责人徐启钧通过微信发送威胁信息:“我会和你孩子的学校和你丈夫的职业单位和亲戚告诉他们你寻求代考的事情”“你自己单方面违约还搞,那我也不客气了”,利用客户账户信息实施恐吓。【最近派发的工单编号:20250604041095,工单内容:【商家地址/名称:未提供,时间:2025年06月04日18:53】5月中旬,由于忧虑孩子的考试压力,我在小红书上找到上海寰隅宸帆教育科技工作室做考试辅导,支付订金人民币贰万四千元整。字数超限,详见原工单。】\",\n \"relAddress\": \"闵行区放鹤路1088号\",\n \"state\": \"12345热线互联网后台受理\",\n \"nextState\": \"工单归档\",\n \"ended\": \"已办结\",\n \"starttime\": \"2025-06-17 11:30:02\"}]}" + }, + { + "key": "commentSize", + "renderTypeList": [], + "valueType": "object", + "label": "", + "value": { + "width": 385, + "height": 348 + } + } + ], + "outputs": [] + }, + { + "nodeId": "wMxQVAvmlXYh", + "name": "", + "intro": "", + "avatar": "", + "flowNodeType": "comment", + "position": { + "x": 3038.086319617568, + "y": -2261.2449067395646 + }, + "version": "4811", + "inputs": [ + { + "key": "commentText", + "renderTypeList": [], + "valueType": "string", + "label": "", + "value": "{\"wpid\": \"20250623200401\",\n\"reWpid\": \"\",\n\"relTitle\": \"配套设施未齐全\",\n\"content\": \"安检没有无包通行通道,和有包的一起排队,还是早高峰,如果要落实逢包必检,那请相关设施也要准备好,在早高峰的时候多弄几个闸口,无包有包的分开,排队较长时间,请出具地铁情况说明\",\n\"summary\": \"【线路名称12号,时间:2025年06月23日08:19,下车时间:null】安检没有无包通行通道,和有包的一起排队,还是早高峰,如果要落实逢包必检,那请相关设施也要准备好,在早高峰的时候多弄几个闸口,无包有包的分开,排队较长时间,请出具地铁情况说明\",\n\"address\": \"浦东新区东陆路\",\n\"state\": \"12345热线互联网后台受理\",\n\"nextState\": \"二级承办单位受理\",\n\"startTime\": \"2025-06-23 08:20:54\",\n\"history\": [{\"wpid\": \"20250610001784\",\n\"summary\": \"【线路名称12号线,时间:2025年06月04日08:28,下车时间:未提供】安检没有无包通行通道,和有包的一起排队,还是早高峰,如果要落实逢包必检,那请相关设施也要准备好,在早高峰的时候多弄几个闸口,无包有包的分开,排队较长时间,请出具地铁情况说明\",\n\"relAddress\": \"东陆路\",\n\"state\": \"二级承办单位处理\",\n\"nextState\": \"三级承办单位处理\",\n\"ended\": \"未办结\",\n\"starttime\": \"2025-06-10 08:30:24\"},\n{\"wpid\": \"20250610002138\",\n\"summary\": \"市民补充信息:【线路名称:12号线,时间:2025年06月10日 08:30,下车时间:】其主动打开包,包里物品清晰可见,依旧要求上机安检,为何其后面那位女士带包却不用上机安检,区别对待。【最近派发的工单编号:20250610001784,工单内容:【线路名称12号线,时间:2025年06月04日08:28,下车时间:未提供】安检没有无包通行通道,和有包的一起排队,还是早高峰,如果要落实逢包必检,那请相关设施也要准备好,在早高峰的时候多弄几个闸口,无包有包的分开,排队较长时间,请出具地铁情况说明】\",\n\"relAddress\": \"浦东新区东陆路\",\n\"state\": \"12345热线互联网后台受理\",\n\"nextState\": \"工单归档\",\n\"ended\": \"未办结\",\n\"starttime\": \"2025-06-10 08:30:24\"}]}" + }, + { + "key": "commentSize", + "renderTypeList": [], + "valueType": "object", + "label": "", + "value": { + "width": 364, + "height": 292 + } + } + ], + "outputs": [] + } + ], + "edges": [ + { + "source": "448745", + "target": "j6ve1vPRKGFI", + "sourceHandle": "448745-source-right", + "targetHandle": "j6ve1vPRKGFI-target-left" + }, + { + "source": "j6ve1vPRKGFI", + "target": "zKwy2kXJUhXx", + "sourceHandle": "j6ve1vPRKGFI-source-right", + "targetHandle": "zKwy2kXJUhXx-target-left" + }, + { + "source": "bgy7ePXTEVZf", + "target": "s6sd6IwAjzyM", + "sourceHandle": "bgy7ePXTEVZf-source-right", + "targetHandle": "s6sd6IwAjzyM-target-left" + }, + { + "source": "s6sd6IwAjzyM", + "target": "fvspVRrGKR3w", + "sourceHandle": "s6sd6IwAjzyM-source-right", + "targetHandle": "fvspVRrGKR3w-target-left" + }, + { + "source": "zKwy2kXJUhXx", + "target": "xTjtvDddW3KJ", + "sourceHandle": "zKwy2kXJUhXx-source-ELSE", + "targetHandle": "xTjtvDddW3KJ-target-left" + }, + { + "source": "fvspVRrGKR3w", + "target": "dcoccMRsgzEV", + "sourceHandle": "fvspVRrGKR3w-source-right", + "targetHandle": "dcoccMRsgzEV-target-left" + }, + { + "source": "fLiIpF1Wg4sl", + "target": "wTRWVtFh0mDC", + "sourceHandle": "fLiIpF1Wg4sl-source-right", + "targetHandle": "wTRWVtFh0mDC-target-left" + }, + { + "source": "zKwy2kXJUhXx", + "target": "wJBvAf4lvRoe", + "sourceHandle": "zKwy2kXJUhXx-source-IF", + "targetHandle": "wJBvAf4lvRoe-target-left" + }, + { + "source": "wJBvAf4lvRoe", + "target": "bgy7ePXTEVZf", + "sourceHandle": "wJBvAf4lvRoe-source-IF", + "targetHandle": "bgy7ePXTEVZf-target-left" + }, + { + "source": "i4ccmcyN0URQ", + "target": "pXemWjm1TR63", + "sourceHandle": "i4ccmcyN0URQ-source-IF", + "targetHandle": "pXemWjm1TR63-target-left" + }, + { + "source": "pXemWjm1TR63", + "target": "jdZzyf1vlJpM", + "sourceHandle": "pXemWjm1TR63-source-right", + "targetHandle": "jdZzyf1vlJpM-target-left" + }, + { + "source": "jdZzyf1vlJpM", + "target": "bas3L59lnr0E", + "sourceHandle": "jdZzyf1vlJpM-source-right", + "targetHandle": "bas3L59lnr0E-target-left" + }, + { + "source": "bas3L59lnr0E", + "target": "mETywQigLtbm", + "sourceHandle": "bas3L59lnr0E-source-right", + "targetHandle": "mETywQigLtbm-target-left" + }, + { + "source": "mETywQigLtbm", + "target": "u5IPosXwKnNs", + "sourceHandle": "mETywQigLtbm-source-right", + "targetHandle": "u5IPosXwKnNs-target-left" + }, + { + "source": "zKwy2kXJUhXx", + "target": "i4ccmcyN0URQ", + "sourceHandle": "zKwy2kXJUhXx-source-IF", + "targetHandle": "i4ccmcyN0URQ-target-left" + }, + { + "source": "dcoccMRsgzEV", + "target": "fLiIpF1Wg4sl", + "sourceHandle": "dcoccMRsgzEV-source-right", + "targetHandle": "fLiIpF1Wg4sl-target-left" + }, + { + "source": "wTRWVtFh0mDC", + "target": "tmYQSYDCLdAA", + "sourceHandle": "wTRWVtFh0mDC-source-IF", + "targetHandle": "tmYQSYDCLdAA-target-left" + }, + { + "source": "wTRWVtFh0mDC", + "target": "vgArldg6Y1QM", + "sourceHandle": "wTRWVtFh0mDC-source-ELSE", + "targetHandle": "vgArldg6Y1QM-target-left" + }, + { + "source": "u5IPosXwKnNs", + "target": "dG5d4hGpIRER", + "sourceHandle": "u5IPosXwKnNs-source-IF", + "targetHandle": "dG5d4hGpIRER-target-left" + }, + { + "source": "u5IPosXwKnNs", + "target": "sgXydcb9CnEg", + "sourceHandle": "u5IPosXwKnNs-source-ELSE", + "targetHandle": "sgXydcb9CnEg-target-left" + }, + { + "source": "wJBvAf4lvRoe", + "target": "aWtjSIrYmPpd", + "sourceHandle": "wJBvAf4lvRoe-source-ELSE", + "targetHandle": "aWtjSIrYmPpd-target-left" + }, + { + "source": "i4ccmcyN0URQ", + "target": "aWtjSIrYmPpd", + "sourceHandle": "i4ccmcyN0URQ-source-ELSE", + "targetHandle": "aWtjSIrYmPpd-target-left" + }, + { + "source": "tmYQSYDCLdAA", + "target": "aWtjSIrYmPpd", + "sourceHandle": "tmYQSYDCLdAA-source-right", + "targetHandle": "aWtjSIrYmPpd-target-left" + }, + { + "source": "vgArldg6Y1QM", + "target": "aWtjSIrYmPpd", + "sourceHandle": "vgArldg6Y1QM-source-right", + "targetHandle": "aWtjSIrYmPpd-target-left" + }, + { + "source": "dG5d4hGpIRER", + "target": "aWtjSIrYmPpd", + "sourceHandle": "dG5d4hGpIRER-source-right", + "targetHandle": "aWtjSIrYmPpd-target-left" + }, + { + "source": "sgXydcb9CnEg", + "target": "aWtjSIrYmPpd", + "sourceHandle": "sgXydcb9CnEg-source-right", + "targetHandle": "aWtjSIrYmPpd-target-left" + } + ], + "chatConfig": { + "variables": [ + { + "id": "wjm0yf", + "key": "reWpid", + "label": "reWpid", + "type": "input", + "description": "", + "required": false, + "valueType": "string", + "list": [ + { + "value": "", + "label": "" + } + ], + "defaultValue": "", + "enums": [ + { + "value": "", + "label": "" + } + ] + }, + { + "id": "nsz4ih", + "key": "reReason", + "label": "reReason", + "type": "input", + "description": "", + "required": false, + "valueType": "string", + "list": [ + { + "value": "", + "label": "" + } + ], + "defaultValue": "", + "enums": [ + { + "value": "", + "label": "" + } + ] + } + ], + "scheduledTriggerConfig": { + "cronString": "", + "timezone": "Asia/Shanghai", + "defaultPrompt": "" + }, + "_id": "6838130a18d1aceeeca0b91d" + } +} \ No newline at end of file