package main import ( // "WiiCITMS/routers" "WiiCITMS/servers" "WiiCITMS/servers/notification" "fmt" "net/http" // "WiiGoLibrary/framework/etcd/v1" // "WiiGoLibrary/framework/grpc/v1" "WiiGoLibrary/framework/hub/v1/conflib" "WiiGoLibrary/framework/hub/v1/dblib" // "WiiGoLibrary/framework/hub/v1/etcdlib" "WiiGoLibrary/framework/hub/v1/server" "WiiGoLibrary/framework/log/v1" "os" ) func main() { log.Info("start init service...") log.Info("init hub...") h, err := server.New(server.Config{}, // server.WithETCD(), server.WithDB(&dblib.DBLibConfig{AutoMigrate: true}), // server.WithRedis(), ) if err != nil { log.Error("failed to create hub: %v", err) os.Exit(1) return } mcpHttpPort, err := conflib.ConfigApply.GetInt("mcp", "http_port") if err != nil { log.Error("init grpc failed, port conf not found: %v", err) return } // 合并HR、OA和组织岗位的工具列表 allTools := append(servers.HRTools, servers.OATools...) // 添加组织和岗位相关工具 allTools = append(allTools, servers.HROrgPositionTools...) // 添加权限管理工具 allTools = append(allTools, servers.HRPermissionTools...) // 添加AI组织查询工具 allTools = append(allTools, servers.HROrgAITools...) // 添加员工管理工具 allTools = append(allTools, servers.HRStaffTools...) // 添加员工岗位管理工具 allTools = append(allTools, servers.HRStaffPositionTools...) // 添加通知推送相关工具 allTools = append(allTools, notification.NotificationTools...) mcpServer := servers.NewMCPServerWithTools(allTools) mcpHttpServer := servers.NewHTTPMCPServerWithInstance(mcpServer) // grpcPort, err := conflib.ConfigApply.GetInt("grpc", "port") // if err != nil { // log.Error("init grpc failed, port conf not found: %v", err) // return // } // var localIP string // localIP, err = conflib.ConfigApply.GetValue("service", "local_ip") // if err != nil { // localIP = "127.0.0.1" // } // registry := etcd.NewRegistry(etcdlib.Client.Client) // grpcServer := grpc.NewServer(&grpc.ServerConfig{ // Port: grpcPort, // }) // log.Info("init grpc success...") // log.Info("register grpc service...") // grpcServer.RegisterService(servers.NewAuthorizeServer()) // log.Info("register grpc service success...") // grpcServer.WithRegistry(registry).RegisterToRegistry(&etcd.ServiceInfo{ // Name: "ssoserver", // Address: fmt.Sprintf("%s:%d", localIP, grpcPort), // }) h.OnStart(func() { log.Info("init success,hub start...") // 初始化SSE服务 notification.GetSSEServer() // MCP服务启动 mcpPort := fmt.Sprintf(":%d", mcpHttpPort) go func() { // 启动SSE服务器 webPort := fmt.Sprintf(":%d", mcpHttpPort+1) // 使用MCP端口+1 log.Info("Starting SSE server on ", webPort) http.HandleFunc("/api/v1/events", notification.HandleSSEEvents) if err := http.ListenAndServe(webPort, nil); err != nil { log.Error("HTTP server failed: ", err) } }() // 启动MCP服务 err := mcpHttpServer.Start(mcpPort) if err != nil { log.Error("mcp http server start error: ", err) return } log.Info("mcp http server start success on: ", mcpPort) }) h.OnStop(func() { log.Info("hub stop...") // 此处可以添加一些资源清理的代码 // 例如关闭SSE连接等 }) if err := h.RunStandalone(); err != nil { log.Error("failed to run service: %v", err) os.Exit(1) } }