mirror of
https://github.com/chaitin/MonkeyCode.git
synced 2026-02-05 00:04:50 +08:00
feat(config): 减少配置文件必填项, 配置文件改为从环境变量读取
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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{
|
||||
|
||||
Reference in New Issue
Block a user