Files
ai-agent/workflow/model/entity/flow_user.go
T
19904408334 b3f4b94b21 feat: 支持模板子流程递归拷贝与段级续跑优化
* 模板拷贝用户流程时递归复制子流程,并重写 sub_flow 节点引用
* 段级续跑改用列表位置作为段身份,移除对 segment_index 的依赖
* 段结果保存移到每段生成完成时立即落库,降低崩溃丢失风险
* 移除视频分段续跑设计与对应测试
2026-08-25 13:56:55 +08:00

110 lines
4.3 KiB
Go

package entity
import (
"ai-agent/workflow/consts/flow"
"ai-agent/workflow/consts/node"
"gitea.redpowerfuture.com/red-future/common/beans"
)
type FlowInfo struct {
Version string `json:"version"`
StartNodeId string `json:"startNodeId"`
Nodes []FlowNode `json:"nodes"`
Edges []FlowEdge `json:"edges"`
}
type FlowNode struct {
Id string `json:"id"`
NodeCode node.NodeType `json:"nodeCode"`
Name string `json:"name"`
Desc string `json:"desc"`
Config map[string]interface{} `json:"config"`
IsBatchExec bool `json:"isBatchExec"`
PreTool string `json:"preTool"`
PostTool string `json:"postTool"`
IsSaveFile bool `json:"isSaveFile"`
SubConfig *SubFlowConfig `json:"subConfig"`
ModelConfig ModelItem `json:"modelConfig"`
OutputConfig []map[string]any `json:"outputConfig"`
Prompt string `json:"prompt"`
NegativePrompt string `json:"negativePrompt"`
PatchLayout bool `json:"patchLayout"`
Templates []map[string]any `json:"templates"`
//SkillName string `json:"skillName"`
//PromptContent string `json:"promptContent"`
//InputSource []FlowNodeInputSource `json:"inputSource"` // 前端指定:来源节点ID
//FormConfig []node.NodeFormField `json:"formConfig"`
OutputResult []map[string]any `json:"outputResult" ds:"节点输出结果"`
}
type ModelItem struct {
ModelId int64 `json:"modelId,string"`
ModelName string `json:"modelName"`
ModelFormFields []map[string]any `json:"modelFormFields"`
ModelRequestParams map[string]any `json:"modelRequestParams"`
ModelRequestParamsPath []FlowModelParams `json:"modelRequestParamsPath"`
ModelResponseBodyMapping map[string]any `json:"modelResponseBodyMapping"`
}
type FlowModelParams struct {
Label string `json:"label"`
Path string `json:"path"`
Type string `json:"type"`
Required bool `json:"required"`
Value any `json:"value"`
ValueSource []ValueSource `json:"valueSource"`
RefsName string `json:"refsName"`
}
type ValueSource struct {
NodeId string `json:"nodeId"`
Field string `json:"field"`
Label string `json:"label"`
}
// SubFlowConfig 子流程节点配置
type SubFlowConfig struct {
WorkflowId int64 `json:"workflowId,string"`
WorkflowName string `json:"workflowName"`
Fields []map[string]any `json:"fields"`
MaxConcurrency int `json:"maxConcurrency"` // 子流程并发数
}
type FlowEdge struct {
Id string `json:"id"`
From string `json:"from"`
To string `json:"to"`
}
type FlowUser struct {
beans.SQLBaseDO `orm:",inherit"` // 嵌入基础字段:Id, TenantId, Creator, CreatedAt, Updater, UpdatedAt, DeletedAt
// 业务字段
FlowName string `orm:"flow_name" json:"flowName" description:"流程名称"`
Description string `orm:"description" json:"description" description:"流程描述"`
FlowContent *FlowInfo `orm:"flow_content" json:"flowContent" description:"流程内容"`
NodeInputParams []*FlowNode `orm:"node_input_params" json:"nodeInputParams" description:"节点输入参数"`
AccessLevel flow.FlowUserAccessLevel `orm:"access_level" json:"accessLevel" description:"访问权限:1私有,2团队,3公开"`
SourceFlowTemplateId int64 `orm:"source_flow_template_id" json:"sourceFlowTemplateId" description:"来源流程模板ID"`
}
type flowUserCol struct {
beans.SQLBaseCol
FlowName string
Description string
FlowContent string
NodeInputParams string
AccessLevel string
SourceFlowTemplateId string
}
var FlowUserCol = flowUserCol{
SQLBaseCol: beans.DefSQLBaseCol,
FlowName: "flow_name",
Description: "description",
FlowContent: "flow_content",
NodeInputParams: "node_input_params",
AccessLevel: "access_level",
SourceFlowTemplateId: "source_flow_template_id",
}