2026-06-22 00:26:16 +08:00
|
|
|
package runtime
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"encoding/json"
|
|
|
|
|
|
2026-08-21 00:41:07 +08:00
|
|
|
"code.tczkiot.com/wlw/ai-agent/internal/ai/workflow/dsl"
|
|
|
|
|
"code.tczkiot.com/wlw/ai-agent/internal/pkg/enums"
|
|
|
|
|
"code.tczkiot.com/wlw/ai-agent/internal/pkg/errorsx"
|
|
|
|
|
"code.tczkiot.com/wlw/ai-agent/internal/repositories"
|
2026-06-22 00:26:16 +08:00
|
|
|
|
|
|
|
|
"github.com/mlogclub/simple/sqls"
|
|
|
|
|
)
|
|
|
|
|
|
2026-06-23 09:34:08 +08:00
|
|
|
type resolvedWorkflow struct {
|
|
|
|
|
Definition dsl.Definition
|
|
|
|
|
WorkflowID int64
|
|
|
|
|
VersionID int64
|
|
|
|
|
}
|
|
|
|
|
|
2026-07-27 23:29:02 +08:00
|
|
|
func resolveWorkflowVersion(workflowVersionID int64) (resolvedWorkflow, error) {
|
|
|
|
|
if workflowVersionID <= 0 {
|
|
|
|
|
return resolvedWorkflow{}, errorsx.InvalidParam("workflow version is required")
|
2026-06-22 00:26:16 +08:00
|
|
|
}
|
2026-07-27 23:29:02 +08:00
|
|
|
version := repositories.AIWorkflowVersionRepository.Get(sqls.DB(), workflowVersionID)
|
2026-06-22 00:26:16 +08:00
|
|
|
if version == nil || version.Status != enums.StatusOk {
|
2026-06-23 09:34:08 +08:00
|
|
|
return resolvedWorkflow{}, errorsx.InvalidParam("workflow version does not exist")
|
2026-06-22 00:26:16 +08:00
|
|
|
}
|
|
|
|
|
var def dsl.Definition
|
|
|
|
|
if err := json.Unmarshal([]byte(version.Definition), &def); err != nil {
|
2026-06-23 09:34:08 +08:00
|
|
|
return resolvedWorkflow{}, errorsx.InvalidParam("workflow definition is invalid")
|
2026-06-22 00:26:16 +08:00
|
|
|
}
|
2026-06-23 09:34:08 +08:00
|
|
|
return resolvedWorkflow{
|
|
|
|
|
Definition: def,
|
|
|
|
|
WorkflowID: version.WorkflowID,
|
|
|
|
|
VersionID: version.ID,
|
|
|
|
|
}, nil
|
2026-06-22 00:26:16 +08:00
|
|
|
}
|