package flow import ( "ai-agent/workflow/consts/flow" "ai-agent/workflow/consts/node" "ai-agent/workflow/model/entity" "gitea.redpowerfuture.com/red-future/common/beans" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gtime" ) // NodeExecutionState 记录图的节点执行进度,用于 checkpoint/resume 时追踪哪些节点已完成 // SavedInput 用于在中断前保存节点入参,续跑后从状态中恢复 type NodeExecutionState struct { CompletedNodes []string `json:"completedNodes"` // 已成功执行的节点名称列表 ExecutionCount int `json:"executionCount"` // 总执行调用次数 SavedFlowInput *FlowExecutionInput `json:"savedFlowInput"` // 中断前保存的节点入参,续跑后读取 } // NodeExecutionInput 节点执行入参(包含配置+表单架构) type NodeExecutionInput struct { Config *entity.FlowNode `json:"config"` // 节点配置 Global *FlowExecutionInput `json:"global"` NodeExecutionId int64 `json:"nodeExecutionId"` } // FlowExecutionInput 工作流执行入参(全程不变) type FlowExecutionInput struct { NodeGroupId string `json:"nodeGroupId"` ExecutionId int64 `json:"executionId"` FlowId int64 `json:"flowId"` ConfigMap map[string]*entity.FlowNode `json:"configMap"` SessionId string `json:"sessionId" dc:"会话ID"` ExecutedNodes []ExecutedNode `json:"executedNodes"` // 已执行节点列表,包含执行状态 ForceNewRun bool `json:"forceNewRun" dc:"是否全新执行(false=断点续跑,视频节点段级复用已成功段)"` } // ExecutedNode 已执行节点记录,包含节点ID和执行状态 type ExecutedNode struct { NodeId string `json:"nodeId"` Status node.NodeExecutionStatus `json:"status"` // 执行状态:成功/失败 } //======================================================================================= //============================================================================= // 原始入参结构体 type Word struct { Confidence float64 `json:"confidence"` StartTime float64 `json:"startTime"` EndTime float64 `json:"endTime"` Word string `json:"word"` } type Sentence struct { EndTime float64 `json:"endTime"` StartTime float64 `json:"startTime"` Text string `json:"text"` Words []Word `json:"words"` } type InputData struct { Data struct { Sentences []Sentence `json:"sentences"` } `json:"data"` } // 输出目标结构体(对应截图subtitles格式) type Subtitle struct { Start float64 `json:"start"` End float64 `json:"end"` Text string `json:"text"` } //============================================================================== type ExecuteReq struct { g.Meta `path:"/execute" method:"post" tags:"任务管理" summary:"执行任务" dc:"执行任务"` FlowId int64 `json:"flowId" dc:"用户流程ID"` FlowContent *entity.FlowInfo `json:"flowContent" description:"流程内容"` SessionId string `json:"sessionId" dc:"会话ID"` SessionName string `json:"sessionName"` FlowName string `json:"flowName"` NodeGroupId string `json:"nodeGroupId"` NodeInputParams []*entity.FlowNode `json:"nodeInputParams" description:"节点输入参数"` Desc string `json:"desc"` SkillName string `json:"skillName"` FileUrl []string `json:"fileUrl"` ResultUrl string `json:"resultUrl"` } type ExecuteRes struct { Id int64 `json:"id,string" dc:"执行记录ID,用于查询执行状态和结果"` } type ReExecuteReq struct { g.Meta `path:"/reExecute" method:"post" tags:"任务管理" summary:"重新执行任务" dc:"重新执行任务"` ExecutionId int64 `json:"executionId"` } type CancelReq struct { g.Meta `path:"/cancel" method:"post" tags:"任务管理" summary:"取消任务" dc:"取消任务"` SessionId string `json:"sessionId" dc:"会话ID"` } type CreateFlowExecutionReq struct { FlowUserId int64 `json:"flowUserId" description:"流程ID"` FlowName string `json:"flowName"` NodeGroupId string `json:"nodeGroupId"` TriggerType flow.FlowExecutionTriggerType `json:"triggerType" description:"触发类型"` DurationMs int64 `json:"durationMs" description:"执行时长(毫秒)"` Status flow.FlowExecutionStatus `json:"status" description:"状态:1-运行中,2-成功,3-失败"` FlowContent *entity.FlowInfo `json:"flowContent" description:"流程内容"` NodeInputParams []*entity.FlowNode `json:"nodeInputParams" description:"节点输入参数"` OutputParams []map[string]interface{} `json:"outputParams" description:"输出参数"` ErrorMessage string `json:"errorMessage" description:"错误信息"` TraceId string `json:"traceId" description:"跟踪ID"` SessionId string `json:"sessionId" dc:"会话ID"` } type CreateFlowExecutionRes struct { Id int64 `json:"id,string"` } type UpdateFlowExecutionReq struct { Id int64 `json:"id" v:"required#ID不能为空"` NodeGroupId string `json:"nodeGroupId"` FlowContent *entity.FlowInfo `json:"flowContent" description:"流程内容"` DurationMs int64 `json:"durationMs" description:"执行时长(毫秒)"` Status flow.FlowExecutionStatus `json:"status" description:"状态:1-运行中,2-成功,3-失败"` OutputParams []map[string]interface{} `json:"outputParams" description:"输出参数"` ErrorMessage string `json:"errorMessage" description:"错误信息"` TraceId string `json:"traceId" description:"跟踪ID"` TotalTokens int `json:"totalTokens" description:"总token"` TotalFee float64 `json:"totalFee" description:"总费用"` } type GetFlowExecutionReq struct { g.Meta `path:"/get" method:"get" tags:"任务管理" summary:"获取任务详情" dc:"获取任务详情"` Id int64 `json:"id" v:"required#ID不能为空"` SessionId string `json:"sessionId" dc:"会话ID"` } type ListFlowExecutionReq struct { g.Meta `path:"/list" method:"get" tags:"任务管理" summary:"任务列表" dc:"任务列表"` Page *beans.Page `json:"page"` Creator string `json:"creator"` } type ListFlowExecutionRes struct { List []*VOFlowExecution `json:"list"` Total int `json:"total"` } type VOFlowExecution struct { Id int64 `json:"id,string" dc:"id"` FlowUserId int64 `json:"flowUserId,string" description:"流程ID"` FlowName string `json:"flowName"` TriggerType flow.FlowExecutionTriggerType `json:"triggerType" description:"触发类型"` DurationMs int64 `json:"durationMs" description:"执行时长(毫秒)"` Status flow.FlowExecutionStatus `json:"status" description:"状态:1-运行中,2-成功,3-失败"` FlowContent *entity.FlowInfo `json:"flowContent" description:"流程内容"` NodeInputParams []*entity.FlowNode `json:"nodeInputParams" description:"节点输入参数"` OutputParams []map[string]interface{} `json:"outputParams" description:"输出参数"` ErrorMessage string `json:"errorMessage" description:"错误信息"` TraceId string `json:"traceId" description:"跟踪ID"` SessionId string `json:"sessionId" dc:"会话ID"` CreatedAt *gtime.Time `json:"createdAt" dc:"创建时间"` UpdatedAt *gtime.Time `json:"updatedAt" dc:"更新时间"` ImgAddressPrefix string `json:"imgAddressPrefix"` } // ========== 核心:构建树状结构 ========== // 定义树结构 type OutputItem struct { Content string `json:"content" description:"内容值"` Type string `json:"type" description:"类型"` Label string `json:"label" description:"后缀+数字标号"` } type FlowNode struct { FlowName string `json:"flowName" description:"流程名称"` Id int64 `json:"Id,string" description:"任务ID"` SessionId string `json:"sessionId" description:"会话ID"` Items []OutputItem `json:"items" description:"输出项列表"` } type DateNode struct { CreateDate string `json:"createDate" description:"创建日期"` Flows []FlowNode `json:"flows" description:"流程列表"` } type ListFlowExecutionTreeRes struct { Tree []DateNode `json:"tree"` ImgAddressPrefix string `json:"imgAddressPrefix"` }