优化流式传输&fix bugs

This commit is contained in:
XOF
2025-11-25 16:58:15 +08:00
parent e026d8f324
commit ad1e6180cf
18 changed files with 1135 additions and 156 deletions

View File

@@ -2,14 +2,11 @@
package container
import (
"fmt"
"gemini-balancer/internal/app"
"gemini-balancer/internal/channel"
"gemini-balancer/internal/config"
"gemini-balancer/internal/crypto"
"gemini-balancer/internal/db"
"gemini-balancer/internal/db/dialect"
"gemini-balancer/internal/db/migrations"
"gemini-balancer/internal/domain/proxy"
"gemini-balancer/internal/domain/upstream"
"gemini-balancer/internal/handlers"
@@ -21,13 +18,10 @@ import (
"gemini-balancer/internal/service"
"gemini-balancer/internal/settings"
"gemini-balancer/internal/store"
"gemini-balancer/internal/syncer"
"gemini-balancer/internal/task"
"gemini-balancer/internal/webhandlers"
"github.com/sirupsen/logrus"
"go.uber.org/dig"
"gorm.io/gorm"
)
func BuildContainer() (*dig.Container, error) {
@@ -35,20 +29,9 @@ func BuildContainer() (*dig.Container, error) {
// =========== 阶段一: 基础设施层 (Infrastructure) ===========
container.Provide(config.LoadConfig)
container.Provide(func(cfg *config.Config, logger *logrus.Logger) (*gorm.DB, dialect.DialectAdapter, error) {
gormDB, adapter, err := db.NewDB(cfg, logger)
if err != nil {
return nil, nil, err
}
// 迁移运行逻辑
if err := migrations.RunVersionedMigrations(gormDB, cfg, logger); err != nil {
return nil, nil, fmt.Errorf("failed to run versioned migrations: %w", err)
}
return gormDB, adapter, nil
})
container.Provide(logging.NewLoggerWithWebSocket)
container.Provide(db.NewDBWithMigrations)
container.Provide(store.NewStore)
container.Provide(logging.NewLogger)
container.Provide(crypto.NewService)
container.Provide(repository.NewAuthTokenRepository)
container.Provide(repository.NewGroupRepository)
@@ -85,10 +68,7 @@ func BuildContainer() (*dig.Container, error) {
// --- Syncer & Loader for GroupManager ---
container.Provide(service.NewGroupManagerLoader)
// 为GroupManager配置Syncer
container.Provide(func(loader syncer.LoaderFunc[service.GroupManagerCacheData], store store.Store, logger *logrus.Logger) (*syncer.CacheSyncer[service.GroupManagerCacheData], error) {
const groupUpdateChannel = "groups:cache_invalidation"
return syncer.NewCacheSyncer(loader, store, groupUpdateChannel, logger)
})
container.Provide(service.NewGroupManagerSyncer)
// =========== 阶段三: 适配器与处理器层 (Handlers & Adapters) ===========