需求名为:任意两条记录的内容比对分析。
逻辑见下图,说明了输入和输出。
应该可以用工作流的 AI Agent 来实现,谁会做?
我需要这个工具,相信很多人也需要它,希望大神出马帮助大家。

我用这个 skills:https://bbs.mingdao.net/topic/8391,放到 gemini 中,帮我分析了一下这个逻辑,写了代码,但是我自己没验证,仅供参考。
你好!我是明道云 Python 代码块。根据你提供的图片逻辑,这是一个典型的非对称字段对比场景。在明道云工作流中,由于字段名不一致(如 G 对比 B)且存在一对多拆分(如 CCC 对比 C+CC),我们无法使用简单的循环,必须手动定义映射关系。
以下是为你编写的 Python 代码块实现。
1. 配置建议 (Inputs)
在明道云代码块左侧,请配置以下入参:
tableX_data: 字符串类型(建议将表 X 的记录以 JSON 字符串形式传入,或分别传入 A, G, CCC, D, DD 等字段)。tableY_data: 字符串类型(同上,传入表 Y 的 B, C, CC, DDD, F 等字段)。
2. Python 代码实现
import json def main(): # 1. 获取输入数据 (假设前端传入的是各字段的字典或JSON) # 这里的 key 需与你在明道云节点左侧定义的参数名一致 x = input.get("tableX_data") y = input.get("tableY_data") # 如果传入的是字符串,先解析 if isinstance(x, str): x = json.loads(x) if isinstance(y, str): y = json.loads(y) diff_logs = [] # --- 逻辑处理 --- # 1. G <-> B (单对单) val_g = str(x.get("G", "")) val_b = str(y.get("B", "")) if val_g != val_b: # 简单逻辑:判断是否是末尾多了字符 if val_b.startswith(val_g): diff_logs.append(f"1, B字段:末尾多了 “{val_b[len(val_g):]}”") else: diff_logs.append(f"1, B字段:内容不一致 (X:{val_g} -> Y:{val_b})") # 2. CCC <-> (C + CC) (一对多) val_ccc = str(x.get("CCC", "")).replace(" ", "").split(",") # 处理 "ss, tt" val_c_cc = [str(y.get("C", "")), str(y.get("CC", ""))] if set(val_ccc) == set(val_c_cc): diff_logs.append("2, C字段和CC字段:没有差异") else: diff_logs.append("2, C字段和CC字段:存在内容差异") # 3. (D + DD) <-> DDD (多对一) # 表X: D="hh", DD="vv" -> 合并为 "hh, vv" # 表Y: DDD="hh, v" val_d_combined = f"{x.get('D', '')}, {x.get('DD', '')}" val_ddd = str(y.get("DDD", "")) if val_d_combined != val_ddd: if val_d_combined.startswith(val_ddd): diff_logs.append(f"3, DDD字段:末尾少了 “{val_d_combined[len(val_ddd):]}”") else: diff_logs.append(f"3, DDD字段:内容不一致") # 4. 无 <-> F (新增字段) val_f = y.get("F") if val_f: diff_logs.append(f"4, 新增了字段F的信息,数值为 “{val_f}”") # --- 构造输出 --- summary = "与记录X1对比后,发现记录Y1的信息有以下差异:\n" + "\n".join(diff_logs) return { "result_text": summary, "has_diff": len(diff_logs) > 0 } # 执行并赋值给全局 output try: output = main() except Exception as e: output = {"error": str(e), "result_text": "对比出错"}
3. 逻辑要点说明
- 数据清洗:代码中使用了
str()和.replace(" ", "")来处理可能存在的空格或类型不匹配问题,确保对比的准确性。- 一对多/多对一对比:
- CCC vs (C+CC):通过将 CCC 的字符串拆分为列表,并与 C, CC 组成的列表进行集合对比(
set),可以忽略顺序差异。- ** (D+DD) vs DDD**:先在代码中手动将 D 和 DD 按照业务逻辑(如加逗号)拼接,再与 DDD 进行字符串比对。
- 差异描述生成:使用了字符串截取
val_b[len(val_g):]来动态获取“多了什么”或“少了什么”,高度还原了你图片中的 AI 处理效果。4. 输出结果 (Output)
脚本运行后,你会得到一个
result_text变量,其内容将直接呈现为:与记录 X1 对比后,发现记录 Y1 的信息有以下差异:
1, B 字段:末尾多了 “k”;
2, C 字段和 CC 字段:没有差异;
3, DDD 字段:末尾少了 “v”;
4, 新增了字段 F 的信息,数值为 “other”。
X 和 Y 的表结构是动态的,即要调用明道云的 API,才能知道是否存在 A/B/C 等字段,及其字段值。
字段的拆合对应关系也是动态的,是从一张指定的表里读出来的,需要设计语义规则,以便让程序准确解析。
要能根据多种差异情况,采用不同的表述方式,比如“哪里少了什么”,“哪里从什么变成了什么”,若够智能,最好还能说“哪里变成了大写”、“哪里翻译成了英文”等。
我用这个 skills:https://bbs.mingdao.net/topic/8391,放到 gemini 中,帮我分析了一下这个逻辑,写了代码,但是我自己没验证,仅供参考。
你好!我是明道云 Python 代码块。根据你提供的图片逻辑,这是一个典型的非对称字段对比场景。
在明道云工作流中,由于字段名不一致(如 G 对比 B)且存在一对多拆分(如 CCC 对比 C+CC),我们无法使用简单的循环,必须手动定义映射关系。
以下是为你编写的 Python 代码块实现。
1. 配置建议 (Inputs)
在明道云代码块左侧,请配置以下入参:
tableX_data: 字符串类型(建议将表 X 的记录以 JSON 字符串形式传入,或分别传入 A, G, CCC, D, DD 等字段)。tableY_data: 字符串类型(同上,传入表 Y 的 B, C, CC, DDD, F 等字段)。
2. Python 代码实现
import json
def main():
# 1. 获取输入数据 (假设前端传入的是各字段的字典或JSON)
# 这里的 key 需与你在明道云节点左侧定义的参数名一致
x = input.get("tableX_data")
y = input.get("tableY_data")
# 如果传入的是字符串,先解析
if isinstance(x, str): x = json.loads(x)
if isinstance(y, str): y = json.loads(y)
diff_logs = []
# --- 逻辑处理 ---
# 1. G <-> B (单对单)
val_g = str(x.get("G", ""))
val_b = str(y.get("B", ""))
if val_g != val_b:
# 简单逻辑:判断是否是末尾多了字符
if val_b.startswith(val_g):
diff_logs.append(f"1, B字段:末尾多了 “{val_b[len(val_g):]}”")
else:
diff_logs.append(f"1, B字段:内容不一致 (X:{val_g} -> Y:{val_b})")
# 2. CCC <-> (C + CC) (一对多)
val_ccc = str(x.get("CCC", "")).replace(" ", "").split(",") # 处理 "ss, tt"
val_c_cc = [str(y.get("C", "")), str(y.get("CC", ""))]
if set(val_ccc) == set(val_c_cc):
diff_logs.append("2, C字段和CC字段:没有差异")
else:
diff_logs.append("2, C字段和CC字段:存在内容差异")
# 3. (D + DD) <-> DDD (多对一)
# 表X: D="hh", DD="vv" -> 合并为 "hh, vv"
# 表Y: DDD="hh, v"
val_d_combined = f"{x.get('D', '')}, {x.get('DD', '')}"
val_ddd = str(y.get("DDD", ""))
if val_d_combined != val_ddd:
if val_d_combined.startswith(val_ddd):
diff_logs.append(f"3, DDD字段:末尾少了 “{val_d_combined[len(val_ddd):]}”")
else:
diff_logs.append(f"3, DDD字段:内容不一致")
# 4. 无 <-> F (新增字段)
val_f = y.get("F")
if val_f:
diff_logs.append(f"4, 新增了字段F的信息,数值为 “{val_f}”")
# --- 构造输出 ---
summary = "与记录X1对比后,发现记录Y1的信息有以下差异:\n" + "\n".join(diff_logs)
return {
"result_text": summary,
"has_diff": len(diff_logs) > 0
}
# 执行并赋值给全局 output
try:
output = main()
except Exception as e:
output = {"error": str(e), "result_text": "对比出错"}
3. 逻辑要点说明
- 数据清洗:代码中使用了
str()和.replace(" ", "")来处理可能存在的空格或类型不匹配问题,确保对比的准确性。 - 一对多/多对一对比:
- CCC vs (C+CC):通过将 CCC 的字符串拆分为列表,并与 C, CC 组成的列表进行集合对比(
set),可以忽略顺序差异。 - ** (D+DD) vs DDD**:先在代码中手动将 D 和 DD 按照业务逻辑(如加逗号)拼接,再与 DDD 进行字符串比对。
- CCC vs (C+CC):通过将 CCC 的字符串拆分为列表,并与 C, CC 组成的列表进行集合对比(
- 差异描述生成:使用了字符串截取
val_b[len(val_g):]来动态获取“多了什么”或“少了什么”,高度还原了你图片中的 AI 处理效果。
4. 输出结果 (Output)
脚本运行后,你会得到一个 result_text 变量,其内容将直接呈现为:
与记录 X1 对比后,发现记录 Y1 的信息有以下差异:
1, B 字段:末尾多了 “k”;
2, C 字段和 CC 字段:没有差异;
3, DDD 字段:末尾少了 “v”;
4, 新增了字段 F 的信息,数值为 “other”。
数据是很严谨的东西
用 AI 動作