refactor: 重构工作流执行图构建与节点上下文处理

This commit is contained in:
2026-06-16 13:26:27 +08:00
parent 6a249af7fa
commit 695c00aed5
4 changed files with 205 additions and 240 deletions

View File

@@ -41,19 +41,35 @@ func JudgeLambda(ctx context.Context, input any) (string, error) {
if !ok {
return "", fmt.Errorf("入参类型错误,期望 *flowDto.NodeExecutionInput实际 %T", input)
}
//inputMap, outputMap, modelMap := GetNodeContextContent(nodeInput.Global, nodeInput.Config)
//fmt.Printf("JudgeLambda路由输入=%s\n", gjson.MustEncode(inputMap))
//fmt.Printf("JudgeLambda路由输出=%s\n", gjson.MustEncode(outputMap))
//fmt.Printf("JudgeLambda路由模型=%s\n", gjson.MustEncode(modelMap))
//configMap := gconv.Map(nodeInput.Config.Config)
//ids := gconv.Strings(configMap["branch_ids"])
//fmt.Printf("JudgeLambda路由目标节点ID=%s\n", gconv.String(ids))
//
//m := map[string]bool{
// "80000a50-81e1-4c15-adae-aab6c0d781ad": true,
// "59a6ffa2-3252-4535-b6ed-d3e49cdf6c55": true,
//}
//
//return m, nil
// 1. 直接用你原来的方法(返回两个 map
inputMap, outputMap, modelMap := GetNodeContextContent(nodeInput.Global, nodeInput.Config)
var outputResult []node.NodeFormField
for _, valueAny := range inputMap {
if field, ok := valueAny.(node.NodeFormField); ok {
outputResult = append(outputResult, field)
}
}
for _, valueAny := range outputMap {
if field, ok := valueAny.(node.NodeFormField); ok {
outputResult = append(outputResult, field)
}
}
outputResult = append(outputResult, inputMap...)
outputResult = append(outputResult, outputMap...)
//for _, valueAny := range inputMap {
// if field, ok := valueAny.(node.NodeFormField); ok {
// outputResult = append(outputResult, field)
// }
//}
//for _, valueAny := range outputMap {
// if field, ok := valueAny.(node.NodeFormField); ok {
// outputResult = append(outputResult, field)
// }
//}
for _, valueAny := range modelMap {
if field, ok := valueAny.(node.NodeFormField); ok {
outputResult = append(outputResult, field)
@@ -204,6 +220,8 @@ func TextModelLambda(ctx context.Context, input any) (any, error) {
return nil, err
}
nodeInput.Config.OutputResult = outputRes
//}
return nodeInput, nil
}
@@ -281,14 +299,13 @@ func VideoModelLambda(ctx context.Context, input any) (any, error) {
Label: fmt.Sprintf("video_oss_url:content:%d", 0),
Type: "string",
})
} else {
outputRes = append(outputRes, node.NodeFormField{
Field: fmt.Sprintf("concat_video_url:content:%d", 0),
Value: urlPrefix + msg.FileURL,
Label: fmt.Sprintf("concat_video_url:content:%d", 0),
Type: "string",
})
}
outputRes = append(outputRes, node.NodeFormField{
Field: fmt.Sprintf("concat_video_url:content:%d", 0),
Value: urlPrefix + msg.FileURL,
Label: fmt.Sprintf("视频内容:content:%d", 0),
Type: "string",
})
nodeInput.Config.OutputResult = outputRes
return nodeInput, nil
@@ -303,6 +320,64 @@ func HttpLambda(ctx context.Context, input any) (any, error) {
outputRes := make([]node.NodeFormField, 0)
var err error
outputRes, err = HttpNode(ctx, nodeInput)
//if nodeInput.Config.Name == "生成视频" {
// outputRes, err = HttpNode(ctx, nodeInput)
//} else {
// a := []map[string]any{
// {
// "timeline": "0.0-2.1",
// "url": "https://ark-auto-2127201628-cn-beijing-default.tos-cn-beijing.volces.com/%E8%A7%86%E9%A2%91/1.mp4",
// },
// {
// "timeline": "2.1-4.5",
// "url": "https://ark-auto-2127201628-cn-beijing-default.tos-cn-beijing.volces.com/%E8%A7%86%E9%A2%91/2.mp4",
// },
// {
// "timeline": "4.5-12.2",
// "url": "https://ark-auto-2127201628-cn-beijing-default.tos-cn-beijing.volces.com/%E8%A7%86%E9%A2%91/3.mp4",
// },
// {
// "timeline": "12.2-13.6",
// "url": "https://ark-auto-2127201628-cn-beijing-default.tos-cn-beijing.volces.com/%E8%A7%86%E9%A2%91/4.mp4",
// },
// {
// "timeline": "13.6-17.7",
// "url": "https://ark-auto-2127201628-cn-beijing-default.tos-cn-beijing.volces.com/%E8%A7%86%E9%A2%91/5.mp4model-gateway",
// },
// {
// "timeline": "17.7-31.0",
// "url": "https://ark-auto-2127201628-cn-beijing-default.tos-cn-beijing.volces.com/%E8%A7%86%E9%A2%91/6.mp4",
// },
// {
// "timeline": "31.0-33.2",
// "url": "https://ark-auto-2127201628-cn-beijing-default.tos-cn-beijing.volces.com/%E8%A7%86%E9%A2%91/7.mp4",
// },
// {
// "timeline": "33.2-37.4",
// "url": "https://ark-auto-2127201628-cn-beijing-default.tos-cn-beijing.volces.com/%E8%A7%86%E9%A2%91/8.mp4",
// },
// {
// "timeline": "37.4-38.9",
// "url": "https://ark-auto-2127201628-cn-beijing-default.tos-cn-beijing.volces.com/%E8%A7%86%E9%A2%91/9.mp4",
// },
// {
// "timeline": "38.9-57.9",
// "url": "https://ark-auto-2127201628-cn-beijing-default.tos-cn-beijing.volces.com/%E8%A7%86%E9%A2%91/10.mp4",
// },
// }
// outputRes = append(outputRes, node.NodeFormField{
// Field: fmt.Sprintf("segments"),
// Value: a,
// Label: fmt.Sprintf("segments"),
// Type: "string",
// })
// outputRes = append(outputRes, node.NodeFormField{
// Field: fmt.Sprintf("audioUrl"),
// Value: "http://116.204.74.41:9000/tenantid-94/2026-06-11/9915351c-55b9-46d8-b783-3815126b.m4a",
// Label: fmt.Sprintf("audioUrl"),
// Type: "string",
// })
//}
if err != nil {
return nil, err
}
@@ -437,11 +512,8 @@ func MergeLambda(ctx context.Context, input any) (res any, err error) {
// 1. 把所有节点输出拍平成 字段名->内容 的map
dataMap := make(map[string]node.NodeFormField)
_, outputMap, _ := GetNodeContextContent(nodeInput.Global, nodeInput.Config)
for _, valueAny := range outputMap {
field := node.NodeFormField{}
if field, ok = valueAny.(node.NodeFormField); ok {
dataMap[field.Field] = field
}
for _, field := range outputMap {
dataMap[field.Field] = field
}
// 2. 提取所有文案text_content_0,1,2...