Initial commit: TaskPool React panel
- React frontend with route-level code splitting - Backend rebranded from Baihu to TaskPool - DB brand migration script and local compatibility
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"github.com/engigu/taskpool/internal/constant"
|
||||
"github.com/engigu/taskpool/internal/controllers"
|
||||
"github.com/engigu/taskpool/internal/services"
|
||||
"github.com/engigu/taskpool/internal/services/tasks"
|
||||
)
|
||||
|
||||
var executorService *tasks.ExecutorService
|
||||
|
||||
func RegisterControllers() *Controllers {
|
||||
// 初始化服务
|
||||
settingsService := services.NewSettingsService()
|
||||
loginLogService := services.NewLoginLogService()
|
||||
|
||||
// 执行系统初始化(返回 userService)
|
||||
initService := services.NewInitService(settingsService)
|
||||
userService := initService.Initialize()
|
||||
|
||||
taskService := tasks.NewTaskService()
|
||||
envService := services.NewEnvService()
|
||||
scriptService := services.NewScriptService()
|
||||
sendStatsService := services.NewSendStatsService()
|
||||
agentWSManager := services.GetAgentWSManager()
|
||||
systemWSManager := services.GetSystemWSManager()
|
||||
|
||||
taskLogService := tasks.NewTaskLogService(sendStatsService)
|
||||
// 创建任务执行服务(需要依赖注入)
|
||||
notifyService := services.NewNotificationService()
|
||||
appLogService := services.NewAppLogService()
|
||||
interconnectService := services.NewInterconnectService()
|
||||
|
||||
// 清理 task 运行状态的任务可以直接由 executorService 承担或在此处通过 Database 直接清理
|
||||
// 简单期间,我们使用一个新方法 tasks.CleanupRunningTasks() 或者让 executorService 启动时清理
|
||||
|
||||
executorService = tasks.NewExecutorService(taskService, taskLogService, agentWSManager, settingsService, envService)
|
||||
// 启动时清理残留的运行状态
|
||||
_ = executorService.CleanupRunningTasks()
|
||||
|
||||
// 启动计划任务
|
||||
executorService.StartCron()
|
||||
|
||||
// 初始化所有关注系统总线的服务
|
||||
setupEventHandlers(appLogService, notifyService, loginLogService, systemWSManager)
|
||||
startAppLogCleanup(appLogService)
|
||||
|
||||
taskController := controllers.NewTaskController(taskService, executorService)
|
||||
envController := controllers.NewEnvController(envService)
|
||||
|
||||
// 初始化并返回控制器
|
||||
return &Controllers{
|
||||
Task: taskController,
|
||||
Auth: controllers.NewAuthController(userService, settingsService, loginLogService),
|
||||
Env: envController,
|
||||
Script: controllers.NewScriptController(scriptService),
|
||||
Executor: controllers.NewExecutorController(executorService),
|
||||
File: controllers.NewFileController(constant.ScriptsWorkDir),
|
||||
Dashboard: controllers.NewDashboardController(executorService),
|
||||
Log: controllers.NewLogController(),
|
||||
LogSSE: controllers.NewLogSSEController(),
|
||||
Terminal: controllers.NewTerminalController(envService),
|
||||
Settings: controllers.NewSettingsController(userService, loginLogService, executorService),
|
||||
Dependency: controllers.NewDependencyController(),
|
||||
Agent: controllers.NewAgentController(settingsService),
|
||||
Mise: controllers.NewMiseController(services.NewMiseService()),
|
||||
Notification: controllers.NewNotificationController(),
|
||||
AppLog: controllers.NewAppLogController(),
|
||||
SystemWS: controllers.NewSystemWSController(),
|
||||
WebUI: controllers.NewWebUIController(services.NewWebUIService(settingsService)),
|
||||
Monitor: controllers.NewMonitorController(executorService),
|
||||
Interconnect: controllers.NewInterconnectController(interconnectService),
|
||||
Data: controllers.NewDataController(taskController, envController),
|
||||
Install: controllers.NewInstallController(),
|
||||
}
|
||||
}
|
||||
|
||||
// StopCron 停止计划任务服务
|
||||
func StopCron() {
|
||||
if executorService != nil {
|
||||
executorService.Stop()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user