fix: copy or move app workflow to library, dependencies on other comp… (#720)

This commit is contained in:
Zhj 2025-08-13 16:44:44 +08:00 committed by GitHub
parent 6b60c07c22
commit ffbc108875
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 75 additions and 27 deletions

View File

@ -253,7 +253,7 @@ type FCParam struct {
RequestParameters []*workflow.APIParameter `json:"request_params"`
ResponseParameters []*workflow.APIParameter `json:"response_params"`
} `json:"fc_setting,omitempty"`
}
} `json:"pluginList,omitempty"`
} `json:"pluginFCParam,omitempty"`
KnowledgeFCParam *struct {

View File

@ -1452,14 +1452,14 @@ func (i *impl) GetWorkflowDependenceResource(ctx context.Context, workflowID int
case entity.NodeTypeLLM:
if node.Data.Inputs.FCParam != nil && node.Data.Inputs.FCParam.PluginFCParam != nil {
for idx := range node.Data.Inputs.FCParam.PluginFCParam.PluginList {
if node.Data.Inputs.FCParam.PluginFCParam.PluginList[idx].IsDraft {
pl := node.Data.Inputs.FCParam.PluginFCParam.PluginList[idx]
pluginID, err := strconv.ParseInt(pl.PluginID, 10, 64)
if err != nil {
return err
}
if pl.PluginVersion == "0" {
ds.PluginIDs = append(ds.PluginIDs, pluginID)
}
}
@ -1476,7 +1476,40 @@ func (i *impl) GetWorkflowDependenceResource(ctx context.Context, workflowID int
}
}
if node.Data.Inputs.FCParam != nil && node.Data.Inputs.FCParam.WorkflowFCParam != nil {
for idx := range node.Data.Inputs.FCParam.WorkflowFCParam.WorkflowList {
if node.Data.Inputs.FCParam.WorkflowFCParam.WorkflowList[idx].IsDraft {
wID, err := strconv.ParseInt(node.Data.Inputs.FCParam.WorkflowFCParam.WorkflowList[idx].WorkflowID, 10, 64)
if err != nil {
return err
}
wfe, err := i.repo.GetEntity(ctx, &vo.GetPolicy{
ID: wID,
QType: plugin.FromDraft,
})
if err != nil {
return err
}
workflowToolCanvas := &vo.Canvas{}
err = sonic.UnmarshalString(wfe.Canvas, workflowToolCanvas)
if err != nil {
return err
}
err = collectDependence(workflowToolCanvas.Nodes)
if err != nil {
return err
}
}
}
}
case entity.NodeTypeSubWorkflow:
if node.Data.Inputs.WorkflowVersion == "" {
wfID, err := strconv.ParseInt(node.Data.Inputs.WorkflowID, 10, 64)
if err != nil {
return err
@ -1500,6 +1533,7 @@ func (i *impl) GetWorkflowDependenceResource(ctx context.Context, workflowID int
if err != nil {
return err
}
}
}
@ -1718,6 +1752,7 @@ func replaceRelatedWorkflowOrExternalResourceInWorkflowNodes(nodes []*vo.Node, r
wf.WorkflowID = strconv.FormatInt(refWf.ID, 10)
wf.WorkflowVersion = refWf.Version
}
node.Data.Inputs.FCParam.WorkflowFCParam.WorkflowList[idx] = wf
}
}
@ -1728,13 +1763,26 @@ func replaceRelatedWorkflowOrExternalResourceInWorkflowNodes(nodes []*vo.Node, r
if err != nil {
return err
}
toolID, err := strconv.ParseInt(pl.ApiId, 10, 64)
if err != nil {
return err
}
if refPlugin, ok := related.PluginMap[pluginID]; ok {
tID, ok := related.PluginToolMap[toolID]
if ok {
pl.ApiId = strconv.FormatInt(tID, 10)
}
pl.PluginID = strconv.FormatInt(refPlugin.PluginID, 10)
if refPlugin.PluginVersion != nil {
pl.PluginVersion = *refPlugin.PluginVersion
pl.IsDraft = false
}
}
node.Data.Inputs.FCParam.PluginFCParam.PluginList[idx] = pl
}
}