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"` 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", }