feat: 新增主动拉取与多类型回调功能
- 新增 ActivePull 实体、DAO、DTO 及 Service,支持主动拉取任务管理 - 新增 ComposeCallback、VideoCallback、HttpNodeCallback 多类型回调接口 - FlowExecution 增加 NodeGroupId 和 TotalTokens 字段,支持节点组追踪与 Token 统计 - ExecutedNodes 结构由字符串列表改为包含执行状态的节点对象列表 - 重构回调通知机制,统一 Notify 函数调用 - 优化输出项类型判断逻辑,新增文件类型标识
This commit is contained in:
123
workflow/service/node/node_prompt_service.go
Normal file
123
workflow/service/node/node_prompt_service.go
Normal file
@@ -0,0 +1,123 @@
|
||||
package node
|
||||
|
||||
import (
|
||||
"ai-agent/workflow/consts/node"
|
||||
nodeDao "ai-agent/workflow/dao/node"
|
||||
nodeDto "ai-agent/workflow/model/dto/node"
|
||||
"ai-agent/workflow/service"
|
||||
"context"
|
||||
|
||||
"gitea.com/red-future/common/utils"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
var NodePromptService = &nodePromptService{}
|
||||
|
||||
type nodePromptService struct{}
|
||||
|
||||
// Create 创建节点提示词
|
||||
func (s *nodePromptService) Create(ctx context.Context, req *nodeDto.CreateNodePromptReq) (res *nodeDto.CreateNodePromptRes, err error) {
|
||||
user, err := utils.GetUserInfo(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
get, err := nodeDao.NodePromptDao.Get(ctx, &nodeDto.GetNodePromptReq{Prompt: req.Prompt, Creator: user.UserName})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if g.IsEmpty(get) {
|
||||
var isAdmin bool
|
||||
isAdmin, err = service.UtilService.IsAdmin(ctx)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if isAdmin {
|
||||
req.SourceType = node.SourceTypeSystem.Code()
|
||||
} else {
|
||||
req.SourceType = node.SourceTypeUser.Code()
|
||||
}
|
||||
var id int64
|
||||
id, err = nodeDao.NodePromptDao.Insert(ctx, req)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return &nodeDto.CreateNodePromptRes{Id: id}, err
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Update 更新节点提示词
|
||||
func (s *nodePromptService) Update(ctx context.Context, req *nodeDto.UpdateNodePromptReq) (err error) {
|
||||
get, err := nodeDao.NodePromptDao.Get(ctx, &nodeDto.GetNodePromptReq{Id: req.Id})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
isAdmin, err := service.UtilService.IsAdmin(ctx)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if !isAdmin && get.SourceType == node.SourceTypeSystem.Code() {
|
||||
_, err = s.Create(ctx, &nodeDto.CreateNodePromptReq{
|
||||
NodeType: req.NodeType,
|
||||
Prompt: req.Prompt,
|
||||
})
|
||||
} else {
|
||||
_, err = nodeDao.NodePromptDao.Update(ctx, req)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Delete 删除节点提示词
|
||||
func (s *nodePromptService) Delete(ctx context.Context, req *nodeDto.DeleteNodePromptReq) (err error) {
|
||||
_, err = nodeDao.NodePromptDao.Delete(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// GetById 根据ID查询节点提示词
|
||||
func (s *nodePromptService) GetById(ctx context.Context, req *nodeDto.GetNodePromptReq) (res *nodeDto.NodePromptResp, err error) {
|
||||
r, err := nodeDao.NodePromptDao.Get(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
res = &nodeDto.NodePromptResp{
|
||||
NodePrompt: r,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// ListMy 查询当前创建人自己创建的提示词列表
|
||||
func (s *nodePromptService) ListMy(ctx context.Context, req *nodeDto.ListMyNodePromptReq) (*nodeDto.ListNodePromptResp, error) {
|
||||
user, err := utils.GetUserInfo(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
req.Creator = user.UserName
|
||||
list, total, err := nodeDao.NodePromptDao.ListByOnlyCreator(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &nodeDto.ListNodePromptResp{
|
||||
List: list,
|
||||
Total: total,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// ListWithSystem 查询当前创建人+系统的提示词列表
|
||||
func (s *nodePromptService) ListWithSystem(ctx context.Context, req *nodeDto.ListNodePromptReq) (*nodeDto.ListNodePromptResp, error) {
|
||||
user, err := utils.GetUserInfo(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// 如果请求中没有传creator,使用当前用户
|
||||
if g.IsEmpty(req.Creator) {
|
||||
req.Creator = user.UserName
|
||||
}
|
||||
list, total, err := nodeDao.NodePromptDao.ListByCreator(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &nodeDto.ListNodePromptResp{
|
||||
List: list,
|
||||
Total: total,
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user