236 lines
9.4 KiB
Go
236 lines
9.4 KiB
Go
package flow
|
||
|
||
import (
|
||
"ai-agent/workflow/consts/flow"
|
||
"ai-agent/workflow/model/entity"
|
||
|
||
"gitea.com/red-future/common/beans"
|
||
"github.com/gogf/gf/v2/frame/g"
|
||
"github.com/gogf/gf/v2/os/gtime"
|
||
)
|
||
|
||
// NodeExecutionInput 节点执行入参(包含配置+表单架构)
|
||
type NodeExecutionInput struct {
|
||
Config *entity.FlowNode // 节点配置
|
||
Global *FlowExecutionInput `json:"-"`
|
||
}
|
||
|
||
// FlowExecutionInput 工作流执行入参(全程不变)
|
||
type FlowExecutionInput struct {
|
||
ExecutionId int64 `json:"executionId"`
|
||
ConfigMap map[string]*entity.FlowNode `json:"configMap"`
|
||
SessionId string `json:"sessionId" dc:"会话ID"`
|
||
Desc string `json:"desc"`
|
||
SkillName string `json:"skillName"`
|
||
FileUrl []string `json:"fileUrl"`
|
||
ExecutedNodes []string `json:"executedNodes"`
|
||
}
|
||
|
||
type ComposeMessagesReq struct {
|
||
ModelTypeId int `json:"modelTypeId"`
|
||
ModelName string `json:"modelName"`
|
||
SkillName string `json:"skillName"`
|
||
Form map[string]any `json:"form"`
|
||
UserForm map[string]any `json:"userForm"`
|
||
UserFiles []string `json:"userFiles"`
|
||
SessionId string `json:"sessionId" dc:"会话ID"`
|
||
IsBuild bool `json:"isBuild"`
|
||
Cause string `json:"cause"`
|
||
}
|
||
|
||
type ComposeMessagesRes struct {
|
||
Messages map[string]any `json:"messages"`
|
||
EpicycleId int64 `json:"epicycleId" dc:"轮次ID"`
|
||
}
|
||
|
||
type CreateTaskReq struct {
|
||
ModelName string `json:"modelName"`
|
||
ModelKey string `json:"modelKey"`
|
||
BizName string `json:"bizName"`
|
||
CallbackUrl string `json:"callbackUrl"`
|
||
InputRef string `json:"inputRef"`
|
||
RequestPayload map[string]any `json:"requestPayload"`
|
||
EpicycleId int64 `json:"epicycleId" dc:"轮次ID"`
|
||
}
|
||
|
||
type CreateTaskRes struct {
|
||
TaskId string `json:"taskId"`
|
||
}
|
||
|
||
type GetIsChatModelRes struct {
|
||
ModelName string `json:"modelName"`
|
||
ResponseBody map[string]any `json:"responseBody"`
|
||
}
|
||
|
||
type ModelCallbackReq struct {
|
||
g.Meta `path:"/modelCallback" method:"post" tags:"提示词处理" summary:"model-gateway 回调" dc:"model-gateway 成功后 GET 回调:callbackUrl/{bizName}"`
|
||
TaskId string `p:"task_id" json:"task_id" v:"required#task_id不能为空" dc:"网关任务ID"`
|
||
State int `p:"state" json:"state" dc:"网关任务状态"`
|
||
OssFile string `p:"oss_file" json:"oss_file" dc:"结果文件地址"`
|
||
FileType string `p:"file_type" json:"file_type" dc:"结果文件类型"`
|
||
Text string `p:"text" json:"text" dc:"文本结果(可选,最多约 2000 字符)"`
|
||
}
|
||
|
||
type TaskCallback struct {
|
||
TaskID string `json:"taskId"`
|
||
State int `json:"state"` // 0排队中/1执行中/2成功/3失败/4已下载
|
||
OssFile string `json:"ossFile"`
|
||
FileType string `json:"fileType"`
|
||
Text string `json:"text"`
|
||
//ImgContent *Image `json:"imgContent"`
|
||
}
|
||
|
||
type Text struct {
|
||
Choices []struct {
|
||
FinishReason string `json:"finish_reason"`
|
||
Index int `json:"index"`
|
||
Message struct {
|
||
Content string `json:"content"`
|
||
Role string `json:"role"`
|
||
} `json:"message"`
|
||
} `json:"choices"`
|
||
Created int `json:"created"`
|
||
Id string `json:"id"`
|
||
Model string `json:"model"`
|
||
Object string `json:"object"`
|
||
Usage struct {
|
||
CompletionTokens int `json:"completion_tokens"`
|
||
PromptTokens int `json:"prompt_tokens"`
|
||
PromptTokensDetails struct {
|
||
CachedTokens int `json:"cached_tokens"`
|
||
}
|
||
TotalTokens int `json:"total_tokens"`
|
||
} `json:"usage"`
|
||
}
|
||
|
||
type Image struct {
|
||
Output struct {
|
||
Choices []struct {
|
||
FinishReason string `json:"finish_reason"`
|
||
Message struct {
|
||
Content []struct {
|
||
Image string `json:"image"`
|
||
} `json:"content"`
|
||
Role string `json:"role"`
|
||
} `json:"message"`
|
||
} `json:"choices"`
|
||
} `json:"output"`
|
||
Usage struct {
|
||
Height int `json:"height"`
|
||
ImageCount int `json:"image_count"`
|
||
Width int `json:"width"`
|
||
} `json:"usage"`
|
||
RequestId string `json:"request_id"`
|
||
}
|
||
|
||
//=============================================================================
|
||
|
||
type ExecuteReq struct {
|
||
g.Meta `path:"/execute" method:"post" tags:"任务管理" summary:"执行任务" dc:"执行任务"`
|
||
|
||
FlowId int64 `json:"flowId" dc:"用户流程ID"`
|
||
FlowName string `json:"flowName"`
|
||
FlowContent *entity.FlowInfo `json:"flowContent" description:"流程内容"`
|
||
NodeInputParams []*entity.FlowNode `json:"nodeInputParams" description:"节点输入参数"`
|
||
SessionId string `json:"sessionId" dc:"会话ID"`
|
||
Desc string `json:"desc"`
|
||
SkillName string `json:"skillName"`
|
||
FileUrl []string `json:"fileUrl"`
|
||
}
|
||
|
||
type ExecuteRes struct {
|
||
Id int64 `json:"id,string" dc:"执行记录ID,用于查询执行状态和结果"`
|
||
}
|
||
|
||
type CancelReq struct {
|
||
g.Meta `path:"/cancel" method:"get" tags:"任务管理" summary:"取消任务" dc:"取消任务"`
|
||
|
||
FlowId int64 `json:"flowId" dc:"用户流程ID"`
|
||
}
|
||
|
||
type CreateFlowExecutionReq struct {
|
||
FlowUserId int64 `json:"flowUserId" 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"`
|
||
}
|
||
|
||
type CreateFlowExecutionRes struct {
|
||
Id int64 `json:"id,string"`
|
||
}
|
||
|
||
type UpdateFlowExecutionReq struct {
|
||
Id int64 `json:"id" v:"required#ID不能为空"`
|
||
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"`
|
||
}
|
||
|
||
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"`
|
||
CreatedAt *gtime.Time `json:"createdAt" dc:"创建时间"`
|
||
UpdatedAt *gtime.Time `json:"updatedAt" dc:"更新时间"`
|
||
}
|
||
|
||
// ========== 核心:构建树状结构 ==========
|
||
// 定义树结构
|
||
type OutputItem struct {
|
||
Timestamp string `json:"timestamp" description:"时间戳key"`
|
||
Content string `json:"content" 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"`
|
||
}
|