Update form extraction logic in endpoints.py

- Changed the module name for form extraction to "更新表单" for clarity.
- Enhanced the extraction process to accommodate various output formats from nodes, ensuring compatibility with different structures.
- Improved handling of empty or invalid form updates, returning an empty object when necessary to maintain robustness.
This commit is contained in:
Xin Wang
2026-08-11 14:58:47 +08:00
parent bfc91b6f66
commit e261e97916
+16 -10
View File
@@ -14,7 +14,8 @@ import re
import time import time
router = APIRouter() router = APIRouter()
FORM_EXTRACT_MODULE_NAME = "文本内容提取事故信息" # FORM_EXTRACT_MODULE_NAME = "文本内容提取事故信息"
FORM_EXTRACT_MODULE_NAME = "更新表单"
STATE_TAG_PATTERN = re.compile(r"<state>\s*(\d+)\s*</state>", flags=re.DOTALL) STATE_TAG_PATTERN = re.compile(r"<state>\s*(\d+)\s*</state>", flags=re.DOTALL)
STATUS_CODE_MAP = { STATUS_CODE_MAP = {
'0000': '结束通话', '0000': '结束通话',
@@ -87,22 +88,27 @@ def extract_form_update_from_flow_nodes(nodes):
"""Extract form update data from the configured FastGPT content-extract node.""" """Extract form update data from the configured FastGPT content-extract node."""
if not isinstance(nodes, list): if not isinstance(nodes, list):
return {} return {}
for node in nodes: for node in nodes:
if not isinstance(node, dict): if not isinstance(node, dict):
continue continue
if node.get("moduleName") != FORM_EXTRACT_MODULE_NAME: if node.get("moduleName") != FORM_EXTRACT_MODULE_NAME:
continue continue
# 代码节点返回值在 customOutputs;兼容旧版/其他形态
extract_result = node.get("extractResult", {}) outputs = node.get("customOutputs")
if not isinstance(extract_result, dict): if not isinstance(outputs, dict):
outputs = node.get("nodeOutputs")
if not isinstance(outputs, dict):
outputs = node.get("extractResult")
if not isinstance(outputs, dict):
return {} return {}
form_update = outputs.get("formUpdate", "")
form_update = extract_result.get("formUpdate", "") if form_update in ("", None):
if not form_update:
return {} return {}
return parse_json_value(form_update) parsed = parse_json_value(form_update)
# 无变更时代码节点常返回 {},直接透传空对象
if not isinstance(parsed, dict):
return {}
return parsed
return {} return {}