- 新增计费模块:执行开始建单、终态结算/取消/失败处理,支持按条/按秒/按token计费 - 新增执行生命周期跟踪:优雅关停时取消运行中执行并等待落库 - 新增异步任务等待/通知机制(Wait/Notify) - 重构执行记录落库与进度上报,统一失败分类与重试语义 - 重命名文件:async_task.go→async.go、flow_checkpoint_store.go→exec_checkpoint.go、flow_graph_util.go→exec_record.go - 更新 .gitignore 与数据库密码配置
81 lines
3.7 KiB
Go
81 lines
3.7 KiB
Go
package node
|
|
|
|
import (
|
|
"ai-agent/workflow/consts/node"
|
|
flowDto "ai-agent/workflow/model/dto/flow"
|
|
"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"
|
|
)
|
|
|
|
// CreateNodeExecutionReq 创建节点执行记录请求
|
|
type CreateNodeExecutionReq struct {
|
|
g.Meta `path:"/create" method:"post" tags:"节点执行记录" summary:"创建节点执行记录" dc:"创建节点执行记录"`
|
|
FlowExecutionId int64 `json:"flowExecutionId" v:"required#流程执行ID不能为空"`
|
|
NodeId string `json:"nodeId" v:"required#节点ID不能为空"`
|
|
NodeName string `json:"nodeName"`
|
|
NodeGroupId string `json:"nodeGroupId"`
|
|
Status node.NodeExecutionStatus `json:"status"`
|
|
InputParams *flowDto.NodeExecutionInput `json:"inputParams"`
|
|
InputParamsPath string
|
|
OutputParams *flowDto.NodeExecutionInput `json:"outputParams"`
|
|
OutputParamsPath string
|
|
}
|
|
|
|
type CreateNodeExecutionRes struct {
|
|
Id int64 `json:"id,string"`
|
|
}
|
|
|
|
// UpdateNodeExecutionReq 更新节点执行记录请求
|
|
type UpdateNodeExecutionReq struct {
|
|
g.Meta `path:"/update" method:"put" tags:"节点执行记录" summary:"更新节点执行记录" dc:"更新节点执行记录状态和结果"`
|
|
Id int64 `json:"id" v:"required#ID不能为空"`
|
|
InputParams *flowDto.NodeExecutionInput `json:"inputParams"`
|
|
InputParamsPath string
|
|
OutputParams *flowDto.NodeExecutionInput `json:"outputParams"`
|
|
OutputParamsPath string
|
|
PromptTokens int `json:"promptTokens"`
|
|
CompletionTokens int `json:"completionTokens"`
|
|
TotalTokens int `json:"totalTokens"`
|
|
TokenInfo []map[string]any `json:"tokenInfo"`
|
|
Status node.NodeExecutionStatus `json:"status"`
|
|
DurationMs int64 `json:"durationMs"`
|
|
ErrorMessage string `json:"errorMessage"`
|
|
}
|
|
|
|
// DeleteNodeExecutionReq 删除节点执行记录请求
|
|
type DeleteNodeExecutionReq struct {
|
|
g.Meta `path:"/delete" method:"delete" tags:"节点执行记录" summary:"删除节点执行记录" dc:"删除节点执行记录"`
|
|
Id int64 `json:"id" v:"required#ID不能为空"`
|
|
}
|
|
|
|
// GetNodeExecutionReq 根据ID查询节点执行记录请求
|
|
type GetNodeExecutionReq struct {
|
|
g.Meta `path:"/get" method:"get" tags:"节点执行记录" summary:"查询节点执行记录详情" dc:"根据ID查询节点执行记录详情"`
|
|
Id int64 `json:"id" v:"required#ID不能为空"`
|
|
}
|
|
|
|
// ListNodeExecutionByFlowReq 查询流程下所有节点执行记录请求
|
|
type ListNodeExecutionByFlowReq struct {
|
|
g.Meta `path:"/listByFlow" method:"get" tags:"节点执行记录" summary:"查询流程节点执行列表" dc:"查询指定流程执行下的所有节点执行记录"`
|
|
Page *beans.Page `json:"page"`
|
|
FlowExecutionId int64 `json:"flowExecutionId" v:"required#流程执行ID不能为空"`
|
|
NodeGroupId string `json:"nodeGroupId"`
|
|
NodeId string `json:"nodeId"`
|
|
Status node.NodeExecutionStatus `json:"status"`
|
|
CreatedAtFrom *gtime.Time `json:"createdAtFrom" dc:"结算按订单收敛:只返回创建时间>=该值的记录(重跑开新单按各自 created_at 隔离)"`
|
|
}
|
|
|
|
// NodeExecutionResp 节点执行记录响应
|
|
type NodeExecutionResp struct {
|
|
*entity.NodeExecution
|
|
}
|
|
|
|
// ListNodeExecutionResp 节点执行记录列表响应
|
|
type ListNodeExecutionResp struct {
|
|
List []*entity.NodeExecution `json:"list"`
|
|
Total int `json:"total"`
|
|
}
|