114 lines
3.3 KiB
Go
114 lines
3.3 KiB
Go
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)
|
|
}
|
|
}
|