diff --git a/backend/cmd/server/main.go b/backend/cmd/server/main.go index bfdf3a2..70b87e2 100644 --- a/backend/cmd/server/main.go +++ b/backend/cmd/server/main.go @@ -19,7 +19,7 @@ import ( // @version 1.0 // @description MonkeyCode API func main() { - s, err := newServer("/app/config") + s, err := newServer() if err != nil { panic(err) } @@ -58,7 +58,7 @@ func (s *Server) Name() string { // Start implements service.Servicer. func (s *Server) Start() error { - return s.web.Run(s.config.Server.Http.Host) + return s.web.Run(s.config.Server.Addr) } // Stop implements service.Servicer. diff --git a/backend/cmd/server/wire.go b/backend/cmd/server/wire.go index 11381f7..6af21f5 100644 --- a/backend/cmd/server/wire.go +++ b/backend/cmd/server/wire.go @@ -33,7 +33,7 @@ type Server struct { billingV1 *billingv1.BillingHandler } -func newServer(dir string) (*Server, error) { +func newServer() (*Server, error) { wire.Build( wire.Struct(new(Server), "*"), appSet, diff --git a/backend/cmd/server/wire_gen.go b/backend/cmd/server/wire_gen.go index 645b0ce..d7c5c26 100644 --- a/backend/cmd/server/wire_gen.go +++ b/backend/cmd/server/wire_gen.go @@ -41,8 +41,8 @@ import ( // Injectors from wire.go: -func newServer(dir string) (*Server, error) { - configConfig, err := config.Init(dir) +func newServer() (*Server, error) { + configConfig, err := config.Init() if err != nil { return nil, err } diff --git a/backend/config/config.go b/backend/config/config.go index e7030dc..49f4e5f 100644 --- a/backend/config/config.go +++ b/backend/config/config.go @@ -2,10 +2,10 @@ package config import ( _ "embed" + "strings" "github.com/spf13/viper" - "github.com/chaitin/MonkeyCode/backend/pkg/cvt" "github.com/chaitin/MonkeyCode/backend/pkg/logger" ) @@ -20,9 +20,7 @@ type Config struct { BaseUrl string `mapstructure:"base_url"` Server struct { - Http struct { - Host string `mapstructure:"host"` - } `mapstructure:"http"` + Addr string `mapstructure:"addr"` } `mapstructure:"server"` Admin struct { @@ -58,9 +56,9 @@ type Config struct { } `mapstructure:"llm_proxy"` InitModel struct { - ModelName string `mapstructure:"model_name"` - ModelKey string `mapstructure:"model_key"` - ModelURL string `mapstructure:"model_url"` + Name string `mapstructure:"name"` + Key string `mapstructure:"key"` + URL string `mapstructure:"url"` } `mapstructure:"init_model"` Extension struct { @@ -68,35 +66,42 @@ type Config struct { } `mapstructure:"extension"` } -func Init(dir string) (*Config, error) { - viper.SetConfigName("config") - viper.SetConfigType("yaml") - viper.AddConfigPath(dir) - if err := viper.ReadInConfig(); err != nil { - return nil, err - } +func Init() (*Config, error) { + v := viper.New() + v.AutomaticEnv() + v.SetEnvPrefix("MONKEYCODE") + v.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) + + v.SetDefault("debug", false) + v.SetDefault("logger.level", "info") + v.SetDefault("base_url", "") + v.SetDefault("server.addr", ":8888") + v.SetDefault("admin.user", "admin") + v.SetDefault("admin.password", "") + v.SetDefault("session.expire_day", 30) + v.SetDefault("database.master", "") + v.SetDefault("database.slave", "") + v.SetDefault("database.max_open_conns", 50) + v.SetDefault("database.max_idle_conns", 10) + v.SetDefault("database.conn_max_lifetime", 30) + v.SetDefault("redis.host", "monkeycode-redis") + v.SetDefault("redis.port", "6379") + v.SetDefault("redis.pass", "") + v.SetDefault("redis.db", 0) + v.SetDefault("redis.idle_conn", 20) + v.SetDefault("llm_proxy.timeout", "30s") + v.SetDefault("llm_proxy.keep_alive", "60s") + v.SetDefault("llm_proxy.client_pool_size", 100) + v.SetDefault("llm_proxy.request_log_path", "/app/request/logs") + v.SetDefault("init_model.name", "qwen2.5-coder-3b-instruct") + v.SetDefault("init_model.key", "") + v.SetDefault("init_model.url", "https://model-square.app.baizhi.cloud/v1") + v.SetDefault("extension.baseurl", "https://release.baizhi.cloud") c := Config{} - if err := viper.Unmarshal(&c); err != nil { + if err := v.Unmarshal(&c); err != nil { return nil, err } - c = defaultValue(c) return &c, nil } - -func defaultValue(c Config) Config { - c.Server.Http.Host = cvt.ZeroWithDefault(c.Server.Http.Host, ":8888") - c.Redis.IdleConn = cvt.ZeroWithDefault(c.Redis.IdleConn, 20) - c.Database.MaxOpenConns = cvt.ZeroWithDefault(c.Database.MaxOpenConns, 50) - c.Database.MaxIdleConns = cvt.ZeroWithDefault(c.Database.MaxIdleConns, 10) - c.Database.ConnMaxLifetime = cvt.ZeroWithDefault(c.Database.ConnMaxLifetime, 30) - c.Session.ExpireDay = cvt.ZeroWithDefault(c.Session.ExpireDay, 15) - - c.LLMProxy.Timeout = cvt.ZeroWithDefault(c.LLMProxy.Timeout, "30s") - c.LLMProxy.KeepAlive = cvt.ZeroWithDefault(c.LLMProxy.KeepAlive, "60s") - c.LLMProxy.ClientPoolSize = cvt.ZeroWithDefault(c.LLMProxy.ClientPoolSize, 100) - c.LLMProxy.RequestLogPath = cvt.ZeroWithDefault(c.LLMProxy.RequestLogPath, "/app/request/logs") - - return c -} diff --git a/backend/internal/model/usecase/model.go b/backend/internal/model/usecase/model.go index 5a2d5cc..5ab9fab 100644 --- a/backend/internal/model/usecase/model.go +++ b/backend/internal/model/usecase/model.go @@ -109,8 +109,8 @@ func (m *ModelUsecase) Update(ctx context.Context, req *domain.UpdateModelReq) ( func (m *ModelUsecase) InitModel(ctx context.Context) error { m.logger.With("init_model", m.cfg.InitModel).Debug("init model") - if m.cfg.InitModel.ModelName == "" { + if m.cfg.InitModel.Name == "" { return nil } - return m.repo.InitModel(ctx, m.cfg.InitModel.ModelName, m.cfg.InitModel.ModelKey, m.cfg.InitModel.ModelURL) + return m.repo.InitModel(ctx, m.cfg.InitModel.Name, m.cfg.InitModel.Key, m.cfg.InitModel.URL) } diff --git a/backend/pkg/session/session.go b/backend/pkg/session/session.go index 32fe4fa..86140f1 100644 --- a/backend/pkg/session/session.go +++ b/backend/pkg/session/session.go @@ -42,8 +42,8 @@ func (s *Session) Save(c echo.Context, name, domain string, data any) (string, e return "", err } - if ok, _ := s.rdb.SetNX(context.Background(), id, string(b), expire).Result(); !ok { - return "", fmt.Errorf("failed to save session") + if ok, err := s.rdb.SetNX(context.Background(), id, string(b), expire).Result(); !ok || err != nil { + return "", fmt.Errorf("failed to save session: %w", err) } c.SetCookie(&http.Cookie{