From 7a48333efcced932d4d77f32e2f05ada4e42816f Mon Sep 17 00:00:00 2001 From: renzhiyuan <465386466@qq.com> Date: Tue, 16 Dec 2025 11:35:10 +0800 Subject: [PATCH] refactor: rename tools_bot to tool_callback --- cmd/server/wire.go | 4 +- internal/biz/do/handle.go | 3 +- internal/data/constants/user_test.go | 91 ------------------- .../zltx/order_after_reseller_batch.go | 2 +- internal/pkg/rec_extra/ext.go | 4 +- internal/services/callback.go | 14 +-- .../bug_optimization_submit.go | 30 +++++- internal/tool_callback/provider_set.go | 9 ++ internal/tools_bot/provider_set.go | 9 -- 9 files changed, 48 insertions(+), 118 deletions(-) delete mode 100644 internal/data/constants/user_test.go rename internal/{tools_bot => tool_callback}/bug_optimization_submit.go (74%) create mode 100644 internal/tool_callback/provider_set.go delete mode 100644 internal/tools_bot/provider_set.go diff --git a/cmd/server/wire.go b/cmd/server/wire.go index 22d62b3..a35fa9b 100644 --- a/cmd/server/wire.go +++ b/cmd/server/wire.go @@ -13,8 +13,8 @@ import ( "ai_scheduler/internal/pkg" "ai_scheduler/internal/server" "ai_scheduler/internal/services" + "ai_scheduler/internal/tool_callback" "ai_scheduler/internal/tools" - "ai_scheduler/internal/tools_bot" "ai_scheduler/utils" "github.com/gofiber/fiber/v2/log" @@ -32,9 +32,9 @@ func InitializeApp(*config.Config, log.AllLogger) (*server.Servers, func(), erro biz.ProviderSetBiz, impl.ProviderImpl, utils.ProviderUtils, - tools_bot.ProviderSetBotTools, dingtalk.ProviderSetDingTalk, tools_regis.ProviderToolsRegis, + tool_callback.ProviderSetCallBackTools, )) } diff --git a/internal/biz/do/handle.go b/internal/biz/do/handle.go index 76de3d0..a09eb48 100644 --- a/internal/biz/do/handle.go +++ b/internal/biz/do/handle.go @@ -10,6 +10,7 @@ import ( "ai_scheduler/internal/domain/workflow/runtime" "ai_scheduler/internal/entitys" "ai_scheduler/internal/gateway" + "ai_scheduler/internal/pkg" "ai_scheduler/internal/pkg/l_request" "ai_scheduler/internal/pkg/mapstructure" "ai_scheduler/internal/pkg/rec_extra" @@ -218,7 +219,7 @@ func (r *Handle) handleKnowle(ctx context.Context, rec *entitys.Recognize, task ApiKey: ext.Sys.KnowlegeTenantKey, Query: query, } - + rec.Ext = pkg.JsonByteIgonErr(ext) // 执行工具 err = r.toolManager.ExecuteTool(ctx, configData.Tool, rec) if err != nil { diff --git a/internal/data/constants/user_test.go b/internal/data/constants/user_test.go deleted file mode 100644 index eee1b17..0000000 --- a/internal/data/constants/user_test.go +++ /dev/null @@ -1,91 +0,0 @@ -package constants - -import ( - "ai_scheduler/internal/biz" - "ai_scheduler/internal/biz/do" - "ai_scheduler/internal/biz/llm_service" - "ai_scheduler/internal/data/impl" - "ai_scheduler/internal/entitys" - "ai_scheduler/internal/gateway" - "ai_scheduler/internal/pkg/dingtalk" - "ai_scheduler/internal/pkg/utils_ollama" - "ai_scheduler/internal/pkg/utils_vllm" - "ai_scheduler/internal/server" - "ai_scheduler/internal/services" - "ai_scheduler/internal/tools" - "ai_scheduler/internal/tools_bot" - "ai_scheduler/utils" - "os" - "testing" -) - -const - -func TestMain(m *testing.M) { - bootstrap := initialize.LoadConfigWithTest() - businessLogger := log2.NewBusinessLogger(bootstrap.Logs, id, Name, Version) - helper := pkg.NewLogHelper(businessLogger, bootstrap) - - db, cleanup := utils.NewGormDb(configConfig) - sysImpl := impl.NewSysImpl(db) - taskImpl := impl.NewTaskImpl(db) - chatHisImpl := impl.NewChatHisImpl(db) - doDo := do.NewDo(sysImpl, taskImpl, chatHisImpl, configConfig) - client, cleanup2, err := utils_ollama.NewClient(configConfig) - if err != nil { - cleanup() - return nil, nil, err - } - utils_vllmClient, cleanup3, err := utils_vllm.NewClient(configConfig) - if err != nil { - cleanup2() - cleanup() - return nil, nil, err - } - ollamaService := llm_service.NewOllamaGenerate(client, utils_vllmClient, configConfig, chatHisImpl) - manager := tools.NewManager(configConfig, client) - sessionImpl := impl.NewSessionImpl(db) - botTool := tools_bot.NewBotTool(configConfig, client, sessionImpl) - handle := do.NewHandle(ollamaService, manager, configConfig, sessionImpl, botTool) - aiRouterBiz := biz.NewAiRouterBiz(doDo, handle) - chatHistoryBiz := biz.NewChatHistoryBiz(chatHisImpl, taskImpl) - gatewayGateway := gateway.NewGateway() - chatService := services.NewChatService(aiRouterBiz, chatHistoryBiz, gatewayGateway, configConfig) - sessionBiz := biz.NewSessionBiz(configConfig, sessionImpl, sysImpl, chatHisImpl) - sessionService := services.NewSessionService(sessionBiz, chatHistoryBiz) - taskBiz := biz.NewTaskBiz(configConfig, taskImpl) - taskService := services.NewTaskService(sessionBiz, taskBiz) - oldClient := dingtalk.NewOldClient(configConfig) - contactClient, err := dingtalk.NewContactClient(configConfig) - if err != nil { - cleanup3() - cleanup2() - cleanup() - return nil, nil, err - } - notableClient, err := dingtalk.NewNotableClient(configConfig) - if err != nil { - cleanup3() - cleanup2() - cleanup() - return nil, nil, err - } - callbackService := services.NewCallbackService(configConfig, gatewayGateway, oldClient, contactClient, notableClient, botTool) - historyService := services.NewHistoryService(chatHistoryBiz) - app := server.NewHTTPServer(chatService, sessionService, taskService, gatewayGateway, callbackService, historyService) - botConfigImpl := impl.NewBotConfigImpl(db) - dingTalkBotBiz := biz.NewDingTalkBotBiz(doDo, handle, botConfigImpl) - dingBotService := services.NewDingBotService(configConfig, dingTalkBotBiz) - v := server.ProvideAllDingBotServices(dingBotService) - dingTalkBotServer := server.NewDingTalkBotServer(v) - servers := server.NewServers(configConfig, app, dingTalkBotServer) - code := m.Run() - os.Exit(code) -} - -func Test_GetUserInfo(t *testing.T) { - var c entitys.TaskConfig - config := `{"param": {"type": "object", "required": ["number"], "properties": {"number": {"type": "string", "description": "订单编号/流水号"}}}, "request": {"url": "http://www.baidu.com/${number}", "headers": {"Authorization": "${authorization}"}, "method": "GET"}}` - err := json.Unmarshal([]byte(config), &c) - t.Log(err) -} diff --git a/internal/domain/workflow/zltx/order_after_reseller_batch.go b/internal/domain/workflow/zltx/order_after_reseller_batch.go index b4df00d..9749bf7 100644 --- a/internal/domain/workflow/zltx/order_after_reseller_batch.go +++ b/internal/domain/workflow/zltx/order_after_reseller_batch.go @@ -2,7 +2,7 @@ package zltx import ( "ai_scheduler/internal/config" - "ai_scheduler/internal/data/model" + toolZoarb "ai_scheduler/internal/domain/tools/zltx/order_after_reseller_batch" "ai_scheduler/internal/domain/workflow/runtime" "ai_scheduler/internal/entitys" diff --git a/internal/pkg/rec_extra/ext.go b/internal/pkg/rec_extra/ext.go index 53fbbe7..b8b3c86 100644 --- a/internal/pkg/rec_extra/ext.go +++ b/internal/pkg/rec_extra/ext.go @@ -16,7 +16,7 @@ func SetTaskRecExt(requireData *entitys.RequireData, rec *entitys.Recognize) { rec.Ext = pkg.JsonByteIgonErr(TaskExt) } -func GetTaskRecExt(rec *entitys.Recognize) (ext *entitys.TaskExt, err error) { - err = json.Unmarshal(rec.Ext, ext) +func GetTaskRecExt(rec *entitys.Recognize) (ext entitys.TaskExt, err error) { + err = json.Unmarshal(rec.Ext, &ext) return ext, err } diff --git a/internal/services/callback.go b/internal/services/callback.go index b0697c0..c903bea 100644 --- a/internal/services/callback.go +++ b/internal/services/callback.go @@ -9,7 +9,7 @@ import ( "ai_scheduler/internal/pkg" "ai_scheduler/internal/pkg/dingtalk" "ai_scheduler/internal/pkg/util" - "ai_scheduler/internal/tools_bot" + "ai_scheduler/internal/tool_callback" "context" "encoding/json" "strings" @@ -25,17 +25,17 @@ type CallbackService struct { dingtalkOldClient *dingtalk.OldClient dingtalkContactClient *dingtalk.ContactClient dingtalkNotableClient *dingtalk.NotableClient - botTool *tools_bot.BotTool + callBackTool *tool_callback.CallBackTool } -func NewCallbackService(cfg *config.Config, gateway *gateway.Gateway, dingtalkOldClient *dingtalk.OldClient, dingtalkContactClient *dingtalk.ContactClient, dingtalkNotableClient *dingtalk.NotableClient, botTool *tools_bot.BotTool) *CallbackService { +func NewCallbackService(cfg *config.Config, gateway *gateway.Gateway, dingtalkOldClient *dingtalk.OldClient, dingtalkContactClient *dingtalk.ContactClient, dingtalkNotableClient *dingtalk.NotableClient, callBackTool *tool_callback.CallBackTool) *CallbackService { return &CallbackService{ cfg: cfg, gateway: gateway, dingtalkOldClient: dingtalkOldClient, dingtalkContactClient: dingtalkContactClient, dingtalkNotableClient: dingtalkNotableClient, - botTool: botTool, + callBackTool: callBackTool, } } @@ -138,7 +138,7 @@ func parseInt64(s string) (int64, bool) { func (s *CallbackService) handleDingTalkCallback(c *fiber.Ctx, env Envelope) error { // 校验taskId - sessionID, ok := s.botTool.GetSessionByTaskID(env.TaskID) + sessionID, ok := s.callBackTool.GetSessionByTaskID(env.TaskID) if !ok { return errorcode.ParamErr("missing session_id for task_id: %s", env.TaskID) } @@ -166,7 +166,7 @@ func (s *CallbackService) handleDingTalkCallback(c *fiber.Ctx, env Envelope) err s.sendStreamTxt(sessionID, msg) // 删除映射 - s.botTool.DelTaskMapping(env.TaskID) + s.callBackTool.DelTaskMapping(env.TaskID) return c.JSON(fiber.Map{"code": 0, "message": "ok"}) case ActionBugOptimizationSubmitProcess: @@ -283,7 +283,7 @@ func (s *CallbackService) handleBugOptimizationSubmitUpdate(ctx context.Context, BaseId: data.BaseId, SheetId: data.SheetId, RecordId: data.RecordId, - OperatorId: tools_bot.BotBugOptimizationSubmitAdminUnionId, + OperatorId: tool_callback.BotBugOptimizationSubmitAdminUnionId, CreatorUnionId: unionId, }) if err != nil { diff --git a/internal/tools_bot/bug_optimization_submit.go b/internal/tool_callback/bug_optimization_submit.go similarity index 74% rename from internal/tools_bot/bug_optimization_submit.go rename to internal/tool_callback/bug_optimization_submit.go index 1bb2d31..245ab8c 100644 --- a/internal/tools_bot/bug_optimization_submit.go +++ b/internal/tool_callback/bug_optimization_submit.go @@ -1,10 +1,13 @@ -package tools_bot +package tool_callback import ( + "ai_scheduler/internal/config" errors "ai_scheduler/internal/data/error" + "ai_scheduler/internal/data/impl" "ai_scheduler/internal/entitys" "ai_scheduler/internal/pkg" "ai_scheduler/internal/pkg/l_request" + "ai_scheduler/internal/pkg/utils_ollama" "context" "encoding/json" "fmt" @@ -15,6 +18,23 @@ import ( "xorm.io/builder" ) +type CallBackTool struct { + config *config.Config + llm *utils_ollama.Client + sessionImpl *impl.SessionImpl + taskMap map[string]string +} + +// NewBotTool 创建直连天下订单详情工具 +func NewCallBackTool(config *config.Config, llm *utils_ollama.Client, sessionImpl *impl.SessionImpl) *CallBackTool { + return &CallBackTool{config: config, llm: llm, sessionImpl: sessionImpl, taskMap: make(map[string]string)} +} + +// Execute 执行直连天下订单详情查询 +func (w *CallBackTool) Execute(ctx context.Context, toolName string, requireData *entitys.RequireData) (err error) { + return +} + // BugOptimizationSubmitForm 工单提交表单参数 type BugOptimizationSubmitForm struct { Mark string `json:"mark"` // 工单标识 @@ -34,7 +54,7 @@ const ( ) // BugOptimizationSubmit 工单提交 -func (w *BotTool) BugOptimizationSubmit(ctx context.Context, requireData *entitys.RequireData) (err error) { +func (w *CallBackTool) BugOptimizationSubmit(ctx context.Context, requireData *entitys.RequireData) (err error) { // 获取用户信息 cond := builder.NewCond() cond = cond.And(builder.Eq{"session_id": requireData.Session}) @@ -98,7 +118,7 @@ func (w *BotTool) BugOptimizationSubmit(ctx context.Context, requireData *entity // SetTaskMapping 设置 task_id 到 session_id 的映射(内存版)。 // 后续考虑使用 Redis,确保幂等与过期清理。 -func (w *BotTool) SetTaskMapping(taskID, sessionID string) { +func (w *CallBackTool) SetTaskMapping(taskID, sessionID string) { if taskID == "" || sessionID == "" { return } @@ -106,12 +126,12 @@ func (w *BotTool) SetTaskMapping(taskID, sessionID string) { } // GetSessionByTaskID 读取映射 -func (w *BotTool) GetSessionByTaskID(taskID string) (string, bool) { +func (w *CallBackTool) GetSessionByTaskID(taskID string) (string, bool) { v, ok := w.taskMap[taskID] return v, ok } // DelTaskMapping 删除 task_id 到 session_id 的映射(内存版)。 -func (w *BotTool) DelTaskMapping(taskID string) { +func (w *CallBackTool) DelTaskMapping(taskID string) { delete(w.taskMap, taskID) } diff --git a/internal/tool_callback/provider_set.go b/internal/tool_callback/provider_set.go new file mode 100644 index 0000000..c2671d4 --- /dev/null +++ b/internal/tool_callback/provider_set.go @@ -0,0 +1,9 @@ +package tool_callback + +import ( + "github.com/google/wire" +) + +var ProviderSetCallBackTools = wire.NewSet( + NewCallBackTool, +) diff --git a/internal/tools_bot/provider_set.go b/internal/tools_bot/provider_set.go deleted file mode 100644 index 7bcff12..0000000 --- a/internal/tools_bot/provider_set.go +++ /dev/null @@ -1,9 +0,0 @@ -package tools_bot - -import ( - "github.com/google/wire" -) - -var ProviderSetBotTools = wire.NewSet( - NewBotTool, -)