4.6 KiB
4.6 KiB
数据转换节点功能说明
✅ 已完成
已实现完整的数据转换节点功能,支持字段映射、数据过滤、数据计算等多种转换模式。
功能特性
1. 数据转换服务 (backend/app/services/data_transformer.py)
- 字段映射:支持简单和嵌套字段映射
- 数据过滤:支持多种过滤规则
- 数据计算:支持表达式计算
- 嵌套路径访问:支持
user.name、items[0].price等
2. 支持的转换模式
字段映射 (mapping)
将源字段映射到目标字段
数据过滤 (filter)
根据条件过滤数据
数据计算 (compute)
使用表达式计算新字段
全部 (all)
同时应用所有转换模式
使用方法
1. 在工作流中添加转换节点
- 打开工作流设计器
- 从节点工具箱拖拽"转换"节点到画布
- 配置转换规则
2. 配置转换节点
字段映射模式
配置示例:
{
"mode": "mapping",
"mapping": {
"new_name": "old_name",
"new_age": "old_age",
"user_email": "email"
}
}
输入:
{
"old_name": "张三",
"old_age": 25,
"email": "zhangsan@example.com"
}
输出:
{
"new_name": "张三",
"new_age": 25,
"user_email": "zhangsan@example.com"
}
嵌套字段映射
配置示例:
{
"mode": "mapping",
"mapping": {
"user_name": "user.name",
"user_age": "user.profile.age",
"first_item_price": "items[0].price"
}
}
输入:
{
"user": {
"name": "李四",
"profile": {
"age": 30
}
},
"items": [
{"id": 1, "price": 100},
{"id": 2, "price": 200}
]
}
输出:
{
"user_name": "李四",
"user_age": 30,
"first_item_price": 100
}
数据过滤模式
配置示例:
{
"mode": "filter",
"filter_rules": [
{"field": "status", "operator": "==", "value": "active"},
{"field": "count", "operator": ">", "value": 10}
]
}
支持的运算符:
==: 等于!=: 不等于>: 大于>=: 大于等于<: 小于<=: 小于等于in: 包含not in: 不包含
数据计算模式
配置示例:
{
"mode": "compute",
"compute_rules": {
"subtotal": "{price} * {quantity}",
"total": "({price} * {quantity}) * (1 - {discount})"
}
}
输入:
{
"price": 100,
"quantity": 3,
"discount": 0.1
}
输出:
{
"price": 100,
"quantity": 3,
"discount": 0.1,
"subtotal": 300,
"total": 270.0
}
前端配置
在节点配置面板中:
- 选择转换模式:字段映射、数据过滤、数据计算或全部
- 配置映射规则:JSON格式的字段映射
- 配置过滤规则:JSON数组格式的过滤规则
- 配置计算规则:JSON格式的计算表达式
测试结果
测试覆盖
- ✅ 字段映射 (通过)
- ✅ 嵌套字段映射 (通过)
- ✅ 数据过滤 (通过)
- ✅ 数据计算 (通过)
- ✅ 工作流中的转换节点 (通过)
测试用例
- 简单字段映射:
{"username": "name"}✅ - 嵌套字段映射:
{"user_name": "user.name"}✅ - 数组索引访问:
{"first_item_price": "items[0].price"}✅ - 数据过滤: 多条件过滤 ✅
- 数据计算: 复杂表达式计算 ✅
工作流示例
示例1: 数据格式转换
开始 → 转换节点(字段映射) → LLM节点 → 结束
转换节点配置:
{
"mode": "mapping",
"mapping": {
"input_text": "raw_input",
"user_id": "id"
}
}
示例2: 数据预处理
开始 → 转换节点(过滤) → 条件节点 → [True] → LLM节点 → 结束
转换节点配置:
{
"mode": "filter",
"filter_rules": [
{"field": "status", "operator": "==", "value": "active"}
]
}
示例3: 数据计算
开始 → 转换节点(计算) → 输出节点 → 结束
转换节点配置:
{
"mode": "compute",
"compute_rules": {
"total": "{price} * {quantity}",
"discounted_price": "{total} * (1 - {discount})"
}
}
注意事项
- JSON格式: 配置规则必须是有效的JSON格式
- 字段路径: 嵌套路径使用点号分隔,数组使用方括号
- 表达式安全: 计算表达式只支持安全的数学运算
- 错误处理: 如果转换失败,节点会返回错误信息
后续计划
- 支持更多转换函数(字符串处理、日期格式化等)
- 支持数组操作(map、filter、reduce)
- 可视化配置界面
- 转换规则模板
状态: ✅ 已完成 时间: 2024年