package services import ( "ai_scheduler/internal/biz" "ai_scheduler/internal/biz/do" dingtalk2 "ai_scheduler/internal/biz/handle/dingtalk" "ai_scheduler/internal/biz/llm_service" "ai_scheduler/internal/biz/tools_regis" "ai_scheduler/internal/config" "ai_scheduler/internal/data/impl" "ai_scheduler/internal/domain/component" "ai_scheduler/internal/domain/component/callback" "ai_scheduler/internal/domain/repo" "ai_scheduler/internal/domain/workflow" "ai_scheduler/internal/pkg" "ai_scheduler/internal/pkg/dingtalk" "ai_scheduler/internal/pkg/utils_ollama" "ai_scheduler/internal/pkg/utils_vllm" "ai_scheduler/internal/tools" "ai_scheduler/utils" "context" "testing" "github.com/gofiber/fiber/v2/log" ) func Test_Report(t *testing.T) { run() a := dingBotService.CronReportSend(context.Background()) t.Log(a) } var ( configConfig *config.Config err error dingBotService *DingBotService ) // run 函数是程序的入口函数,负责初始化和配置各个组件 func run() { // 加载测试配置 configConfig, err = config.LoadConfigWithTest() // 初始化数据库连接 db, _ := utils.NewGormDb(configConfig) // 初始化各种实现层组件 sysImpl := impl.NewSysImpl(db) taskImpl := impl.NewTaskImpl(db) chatHisImpl := impl.NewChatHisImpl(db) sessionImpl := impl.NewSessionImpl(db) botConfigImpl := impl.NewBotConfigImpl(db) botGroupImpl := impl.NewBotGroupImpl(db) botUserImpl := impl.NewBotUserImpl(db) // 初始化Do业务对象 doDo := do.NewDo(sysImpl, taskImpl, chatHisImpl, configConfig) // 初始化Ollama客户端 client, _, _ := utils_ollama.NewClient(configConfig) // 初始化vLLM客户端 utils_vllmClient, _, _ := utils_vllm.NewClient(configConfig) // 初始化Redis数据库连接 rdb := utils.NewRdb(configConfig) // 初始化仓库层 repos := repo.NewRepos(sessionImpl, rdb) // 初始化包级别的Redis连接 pkgRdb := pkg.NewRdb(configConfig) // 初始化机器人工具实现层 botToolsImpl := impl.NewBotToolsImpl(db) // 初始化机器人部门实现层 botDeptImpl := impl.NewBotDeptImpl(db) // 初始化Redis管理器 redisManager := callback.NewRedisManager(pkgRdb) // 初始化组件 components := component.NewComponents(redisManager) // 初始化工作流注册表 registry := workflow.NewRegistry(configConfig, client, repos, components) // 初始化钉钉旧版客户端 oldClient := dingtalk.NewOldClient(configConfig) // 初始化Ollama服务 ollamaService := llm_service.NewOllamaGenerate(client, utils_vllmClient, configConfig, chatHisImpl) // 初始化工具管理器 manager := tools.NewManager(configConfig, client) // 初始化钉钉联系人客户端 contactClient, _ := dingtalk.NewContactClient(configConfig) // 初始化钉钉记事本客户端 notableClient, _ := dingtalk.NewNotableClient(configConfig) // 初始化工具注册 toolRegis := tools_regis.NewToolsRegis(botToolsImpl) // 初始化机器人聊天历史实现层 botChatHisImpl := impl.NewBotChatHisImpl(db) // 初始化钉钉认证 auth := dingtalk2.NewAuth(configConfig, rdb, botConfigImpl) // 初始化部门服务 dept := dingtalk2.NewDept(botDeptImpl, auth) // 初始化用户服务 user := dingtalk2.NewUser(botUserImpl, auth, dept) // 初始化发送卡片客户端 sendCardClient := dingtalk2.NewSendCardClient(auth, log.DefaultLogger()) // 初始化处理器 handle := do.NewHandle(ollamaService, manager, configConfig, sessionImpl, registry, oldClient, contactClient, notableClient) // 初始化钉钉机器人业务逻辑 dingTalkBotBiz := biz.NewDingTalkBotBiz(doDo, handle, botConfigImpl, botGroupImpl, user, toolRegis, botChatHisImpl, manager, configConfig, sendCardClient) // 初始化钉钉机器人服务 dingBotService = NewDingBotService(configConfig, dingTalkBotBiz) }