diff --git a/.github/workflows/lint-go.yml b/.github/workflows/lint-go.yml index dcf06d0..f36bd44 100644 --- a/.github/workflows/lint-go.yml +++ b/.github/workflows/lint-go.yml @@ -18,6 +18,6 @@ jobs: check-latest: true - name: Run golangci-lint - uses: golangci/golangci-lint-action@v6 + uses: golangci/golangci-lint-action@v9 with: working-directory: ./backend \ No newline at end of file diff --git a/Dockerfile.backend b/Dockerfile.backend index 86707c2..18b6c5b 100644 --- a/Dockerfile.backend +++ b/Dockerfile.backend @@ -21,8 +21,9 @@ RUN cmake -B /app/algorithm/build -S /app/algorithm && \ #2. Build the Go binary (enable CGO) WORKDIR /app/backend RUN apt-get update && \ - apt-get install -y ca-certificates wget tar && \ - wget -qO- https://github.com/daulet/tokenizers/releases/download/v1.27.0/libtokenizers.linux-amd64.tar.gz | tar xvz -C /usr/lib/ + apt-get install -y ca-certificates wget tar + +RUN wget -O- https://github.com/daulet/tokenizers/releases/download/v1.27.0/libtokenizers.linux-amd64.tar.gz | tar xvz -C /usr/lib/ RUN CGO_ENABLED=1 GOOS=linux go build -ldflags="-s -w" -o /app/bin/server ./cmd/server/main.go diff --git a/backend/cmd/server/main.go b/backend/cmd/server/main.go index 1241064..f1ada00 100644 --- a/backend/cmd/server/main.go +++ b/backend/cmd/server/main.go @@ -74,7 +74,8 @@ func main() { cardRepo := repository.NewPgCardRepository(queries, &logger) algoEngine := algorithm.NewSM2Engine() - embeder, err := tokenizer.NewOnnxEmbedder(cfg.TokenizerPath, cfg.ONNXModelPath, cfg.ONNXLibraryPath, &logger) + embeder, err := tokenizer.NewOnnxEmbedder(cfg.Embeder.TokenizerPath, cfg.Embeder.ONNXModelPath, + cfg.Embeder.ONNXLibraryPath, &logger) if err != nil { logger.Fatal().Err(err).Msg("Failed to create embedded tokenizer") } @@ -85,7 +86,7 @@ func main() { srv := &nhttp.Server{ Addr: ":" + cfg.HTTP.Port, - Handler: cardHandler.InitRoutes(cfg.GinMode), + Handler: cardHandler.InitRoutes(cfg.HTTP.GinMode), ReadTimeout: cfg.HTTP.Timeout, } diff --git a/backend/internal/config/config.go b/backend/internal/config/config.go index 52916a2..ec86e7e 100644 --- a/backend/internal/config/config.go +++ b/backend/internal/config/config.go @@ -7,33 +7,33 @@ import ( "github.com/ilyakaznacheev/cleanenv" ) -type HTTP struct { +type HTTPConfig struct { Port string `yaml:"port" env:"HTTP_PORT" env-default:"8080"` Timeout time.Duration `yaml:"timeout" env:"API_TIMEOUT" env-default:"5s"` GinMode string `yaml:"gin_mode" env:"GIN_MODE" env-default:"debug"` } -type Log struct { +type LogConfig struct { Level string `env-default:"info" yaml:"log_level" env:"LOG_LEVEL"` } -type DB struct { +type DBConfig struct { URL string `env:"DATABASE_URL" env-required:"true"` MaxConns int32 `yaml:"max_conns" env:"DB_MAX_CONNS" env-default:"10"` MinConns int32 `yaml:"min_conns" env:"DB_MIN_CONNS" env-default:"2"` } -type Embeder struct { +type EmbederConfig struct { TokenizerPath string `yaml:"tokenizer_path" env:"TOKENIZER_PATH" env-default:"/app/models/tokenizer.json"` ONNXModelPath string `yaml:"onnx_model_path" env:"ONNX_MODEL_PATH" env-default:"/app/models/model.onnx"` ONNXLibraryPath string `yaml:"onnx_library_path" env:"ONNX_LIBRARY_PATH" env-default:"/usr/local/lib/libonnxruntime.so"` } type Config struct { - HTTP `yaml:"http"` - Log `yaml:"logger"` - DB `yaml:"postgres"` - Embeder `yaml:"embeder"` + HTTP HTTPConfig `yaml:"http"` + Log LogConfig `yaml:"logger"` + DB DBConfig `yaml:"postgres"` + Embeder EmbederConfig `yaml:"embeder"` } func NewConfig() (*Config, error) { diff --git a/backend/internal/http/router.go b/backend/internal/http/router.go index d2075b2..3f95a6e 100644 --- a/backend/internal/http/router.go +++ b/backend/internal/http/router.go @@ -32,6 +32,8 @@ func (h *CardHandler) InitRoutes(ginMode string) *gin.Engine { router.Use(gin.Recovery()) router.StaticFile("/", "./frontend/index.html") + router.Static("/css", "./frontend/css") + router.Static("/js", "./frontend/js") card := router.Group("/api/v1/cards") card.GET("/review", h.GetReviewBatch)