优化结构

This commit is contained in:
Yvan
2026-08-25 16:38:51 +08:00
parent ee179d6b34
commit 001e39da50
9 changed files with 67 additions and 418 deletions
+18 -27
View File
@@ -10,11 +10,6 @@ import (
"kra/internal/app"
"kra/internal/config"
"kra/internal/data"
"kra/internal/global"
mqintegration "kra/internal/integration/mq"
"kra/internal/integration/storage"
websocketintegration "kra/internal/integration/websocket"
"kra/internal/server/router"
"kra/internal/service"
"kra/internal/service/dto"
@@ -43,6 +38,14 @@ var (
id, _ = os.Hostname()
)
// Service identity reported to logs, health output, and the API documentation.
// A plain `go run` leaves the ldflags empty, so these are the fallbacks.
const (
appName = "Kra Admin"
appDescription = "Kratos 管理后台服务"
defaultVersion = "v0.0.0-dev"
)
func init() {
flag.StringVar(&flagconf, "conf", "./configs", "config path, eg: -conf config.yaml")
}
@@ -56,27 +59,7 @@ func runtimeContributions(systemRoutes *router.Routes, systemTasks *worker.TaskM
}
}
func installGlobalResources(logger *slog.Logger, dataStore *data.Data, fileStorage *storage.Reloadable, broker *mqintegration.Reloadable, websocket *websocketintegration.Server, scheduler *worker.TaskScheduler) *global.ResourceRegistry {
install := func() {
global.Install(global.Resources{
Logger: logger,
DB: dataStore.DB(),
NamedDBs: dataStore.NamedDatabases(),
Redis: dataStore.RedisClient(),
NamedRedis: dataStore.NamedRedisClients(),
Mongo: dataStore.MongoClient(),
Storage: fileStorage,
MQ: broker,
WebSocket: websocket,
Scheduler: scheduler,
})
}
dataStore.SetResourceHook(install)
install()
return global.DefaultRegistry()
}
func newApp(logger *slog.Logger, hs *kratoshttp.Server, scheduler *worker.TaskScheduler, audit *service.AuditRecorder, loggerControl *logging.ReloadableLogger, _ mq.Client, _ *global.ResourceRegistry) *kratos.App {
func newApp(logger *slog.Logger, hs *kratoshttp.Server, scheduler *worker.TaskScheduler, audit *service.AuditRecorder, loggerControl *logging.ReloadableLogger, _ mq.Client) *kratos.App {
if audit != nil && loggerControl != nil {
loggerControl.SetErrorSink(logging.ErrorSinkFunc(func(ctx context.Context, entry logging.ErrorEntry) error {
return audit.CreateErrorRequest(ctx, &dto.ErrorRecordRequest{Form: entry.Form, Info: entry.Info, Level: entry.Level, RequestID: entry.RequestID, TraceID: entry.TraceID})
@@ -86,7 +69,7 @@ func newApp(logger *slog.Logger, hs *kratoshttp.Server, scheduler *worker.TaskSc
kratos.ID(id),
kratos.Name(Name),
kratos.Version(Version),
kratos.Metadata(map[string]string{}),
kratos.Metadata(map[string]string{"description": appDescription}),
kratos.Logger(logger),
kratos.Server(
hs,
@@ -135,6 +118,14 @@ func swaggerAddress(server *config.Server, admin *config.Admin) string {
func main() {
flag.Parse()
// A plain `go run` leaves the ldflags empty, so fall back to the declared
// identity rather than reporting a blank service.
if Name == "" {
Name = appName
}
if Version == "" {
Version = defaultVersion
}
runtime, err := config.LoadStore(flagconf)
if err != nil {
panic(err)