WiiCITMS/main.go

114 lines
3.3 KiB
Go
Raw Normal View History

2025-11-07 14:14:34 +08:00
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)
}
}