优化结构

This commit is contained in:
Yvan
2026-08-27 16:20:37 +08:00
parent 001e39da50
commit 653414a1da
54 changed files with 1257 additions and 3450 deletions
+11 -8
View File
@@ -8,7 +8,6 @@ import (
"os"
"strings"
"kra/internal/app"
"kra/internal/config"
"kra/internal/server/router"
"kra/internal/service"
@@ -50,13 +49,17 @@ func init() {
flag.StringVar(&flagconf, "conf", "./configs", "config path, eg: -conf config.yaml")
}
// runtimeContributions is the binary-level list of modules with constructed
// route or task dependencies. Adding another runtime module is explicit here.
func runtimeContributions(systemRoutes *router.Routes, systemTasks *worker.TaskMethods) app.Composition {
return app.Composition{
Routes: []module.RouteRegistrar{systemRoutes},
Tasks: []platformtask.Contributor{systemTasks},
}
// taskRegistry builds the process-wide registry from the dependency-free task
// methods the static module catalog declares. Methods whose handlers need
// constructed usecases are added later by buildRuntime.
func taskRegistry() *platformtask.Registry { return platformtask.NewRegistry() }
// buildRuntime is the binary-level list of modules with constructed route or
// task dependencies: it activates their task methods and composes their routes.
// Adding another runtime module is explicit here.
func buildRuntime(registry *platformtask.Registry, systemRoutes *router.Routes, systemTasks *worker.TaskMethods) module.RouteRegistrar {
systemTasks.RegisterTasks(registry)
return systemRoutes
}
func newApp(logger *slog.Logger, hs *kratoshttp.Server, scheduler *worker.TaskScheduler, audit *service.AuditRecorder, loggerControl *logging.ReloadableLogger, _ mq.Client) *kratos.App {
+2 -4
View File
@@ -8,7 +8,6 @@ package main
import (
"log/slog"
"kra/internal/app"
"kra/internal/biz"
taskbiz "kra/internal/biz/task"
"kra/internal/config"
@@ -38,9 +37,8 @@ func wireApp(*config.Server, *config.Store, *slog.Logger, *logging.ReloadableLog
router.ProviderSet,
worker.ProviderSet,
modules.Catalog,
app.TaskRegistry,
runtimeContributions,
app.Build,
taskRegistry,
buildRuntime,
data.ProviderSet,
integration.ProviderSet,
initialize.ProviderSet,
+5 -7
View File
@@ -8,7 +8,6 @@ package main
import (
"github.com/go-kratos/kratos/v3"
"kra/internal/app"
integration3 "kra/internal/biz/integration"
payment2 "kra/internal/biz/payment"
system2 "kra/internal/biz/system"
@@ -75,6 +74,7 @@ func wireApp(configServer *config.Server, store *config.Store, logger *slog.Logg
v2 := system3.NewSecurityService(securityUsecase)
auditRecorderUsecase := system2.NewAuditRecorderUsecase(auditRecordRepo)
v3 := system3.NewAuditRecorder(auditRecorderUsecase)
registry := taskRegistry()
authorityUsecase := system2.NewAuthorityUsecase(authorityAccessRepo)
v4 := system3.NewAuthorityService(authorityUsecase)
authority := handler.NewAuthority(v4)
@@ -111,7 +111,6 @@ func wireApp(configServer *config.Server, store *config.Store, logger *slog.Logg
v12 := payment3.NewPaymentService(paymentUsecase)
handlerPayment := handler.NewPayment(v12)
taskRepo := task.NewTaskRepo(dataData)
registry := app.TaskRegistry(catalog)
taskUsecase := task2.NewTaskUsecaseWithRegistry(taskRepo, registry)
taskExecutor := worker.NewTaskExecutorWithRegistry(taskUsecase, registry)
taskScheduler := worker.NewTaskScheduler(taskUsecase, authorityUsecase, taskExecutor, logger)
@@ -192,14 +191,13 @@ func wireApp(configServer *config.Server, store *config.Store, logger *slog.Logg
maintenanceRepo := system.NewMaintenanceRepo(dataData)
maintenanceUsecase := system2.NewMaintenanceUsecase(maintenanceRepo)
taskMethods := worker.NewTaskMethods(taskUsecase, maintenanceUsecase, mediaUsecase, store)
composition := runtimeContributions(routes, taskMethods)
runtime := app.Build(composition, registry)
routeRegistrar := buildRuntime(registry, routes, taskMethods)
websocketServer, cleanup2, err := websocket.New(runtimeconfigStore)
if err != nil {
cleanup()
return nil, nil, err
}
engine := server.NewGinEngineWithRuntime(store, v, authService, v2, v3, logger, string2, runtime, websocketServer)
engine := server.NewGinEngineWithRuntime(store, v, authService, v2, v3, logger, string2, routeRegistrar, websocketServer)
httpServer := server.NewGinServer(configServer, engine)
mqReloadable, cleanup3, err := mq.New(runtimeconfigStore, logger)
if err != nil {
@@ -207,8 +205,8 @@ func wireApp(configServer *config.Server, store *config.Store, logger *slog.Logg
cleanup()
return nil, nil, err
}
kratosApp := newApp(logger, httpServer, taskScheduler, v3, reloadableLogger, mqReloadable)
return kratosApp, func() {
app := newApp(logger, httpServer, taskScheduler, v3, reloadableLogger, mqReloadable)
return app, func() {
cleanup3()
cleanup2()
cleanup()