diff --git a/Makefile b/Makefile index f1d0e13..646e064 100644 --- a/Makefile +++ b/Makefile @@ -2,10 +2,11 @@ BINARY_NAME=openteam BUILD_DIR=bin +BACKEND_DIR=backend # Build build: - go build -o $(BUILD_DIR)/$(BINARY_NAME) ./cmd/openteam + cd $(BACKEND_DIR) && CGO_ENABLED=1 go build -o ../$(BUILD_DIR)/$(BINARY_NAME) ./cmd/openteam # Run run: build @@ -13,41 +14,41 @@ run: build # Development run dev: - go run ./cmd/openteam + cd $(BACKEND_DIR) && go run ./cmd/openteam # Test test: - go test ./internal/... -v + cd $(BACKEND_DIR) && go test ./internal/... -v # Test with coverage test-cover: - go test ./internal/... -coverprofile=coverage.out - go tool cover -html=coverage.out -o coverage.html + cd $(BACKEND_DIR) && go test ./internal/... -coverprofile=coverage.out + cd $(BACKEND_DIR) && go tool cover -html=coverage.out -o coverage.html # Format code fmt: - go fmt ./... + cd $(BACKEND_DIR) && go fmt ./... # Lint lint: - golangci-lint run + cd $(BACKEND_DIR) && golangci-lint run # Clean clean: rm -rf $(BUILD_DIR) - rm -f coverage.out coverage.html + cd $(BACKEND_DIR) && rm -f coverage.out coverage.html # Tidy dependencies tidy: - go mod tidy + cd $(BACKEND_DIR) && go mod tidy # Build for Linux build-linux: - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o $(BUILD_DIR)/$(BINARY_NAME)-linux-amd64 ./cmd/openteam + cd $(BACKEND_DIR) && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ../$(BUILD_DIR)/$(BINARY_NAME)-linux-amd64 ./cmd/openteam # Build for macOS build-mac: - CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o $(BUILD_DIR)/$(BINARY_NAME)-darwin-arm64 ./cmd/openteam + cd $(BACKEND_DIR) && CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o ../$(BUILD_DIR)/$(BINARY_NAME)-darwin-arm64 ./cmd/openteam # Build all platforms build-all: build-linux build-mac diff --git a/cmd/openteam/main.go b/backend/cmd/openteam/main.go similarity index 100% rename from cmd/openteam/main.go rename to backend/cmd/openteam/main.go diff --git a/go.mod b/backend/go.mod similarity index 100% rename from go.mod rename to backend/go.mod diff --git a/go.sum b/backend/go.sum similarity index 100% rename from go.sum rename to backend/go.sum diff --git a/internal/api/api.go b/backend/internal/api/api.go similarity index 100% rename from internal/api/api.go rename to backend/internal/api/api.go diff --git a/internal/auth/auth.go b/backend/internal/auth/auth.go similarity index 100% rename from internal/auth/auth.go rename to backend/internal/auth/auth.go diff --git a/internal/channel/channel.go b/backend/internal/channel/channel.go similarity index 100% rename from internal/channel/channel.go rename to backend/internal/channel/channel.go diff --git a/internal/channel/channel_test.go b/backend/internal/channel/channel_test.go similarity index 100% rename from internal/channel/channel_test.go rename to backend/internal/channel/channel_test.go diff --git a/internal/channel/health.go b/backend/internal/channel/health.go similarity index 100% rename from internal/channel/health.go rename to backend/internal/channel/health.go diff --git a/internal/cli/cli.go b/backend/internal/cli/cli.go similarity index 100% rename from internal/cli/cli.go rename to backend/internal/cli/cli.go diff --git a/internal/controller/init.go b/backend/internal/controller/init.go similarity index 100% rename from internal/controller/init.go rename to backend/internal/controller/init.go diff --git a/internal/controller/proxy/proxy.go b/backend/internal/controller/proxy/proxy.go similarity index 100% rename from internal/controller/proxy/proxy.go rename to backend/internal/controller/proxy/proxy.go diff --git a/internal/dao/apikey.go b/backend/internal/dao/apikey.go similarity index 100% rename from internal/dao/apikey.go rename to backend/internal/dao/apikey.go diff --git a/internal/dao/channel.go b/backend/internal/dao/channel.go similarity index 100% rename from internal/dao/channel.go rename to backend/internal/dao/channel.go diff --git a/internal/dao/model.go b/backend/internal/dao/model.go similarity index 100% rename from internal/dao/model.go rename to backend/internal/dao/model.go diff --git a/internal/dao/token.go b/backend/internal/dao/token.go similarity index 100% rename from internal/dao/token.go rename to backend/internal/dao/token.go diff --git a/internal/dao/usage.go b/backend/internal/dao/usage.go similarity index 100% rename from internal/dao/usage.go rename to backend/internal/dao/usage.go diff --git a/internal/dao/user.go b/backend/internal/dao/user.go similarity index 100% rename from internal/dao/user.go rename to backend/internal/dao/user.go diff --git a/internal/dto/batch.go b/backend/internal/dto/batch.go similarity index 100% rename from internal/dto/batch.go rename to backend/internal/dto/batch.go diff --git a/internal/dto/error.go b/backend/internal/dto/error.go similarity index 100% rename from internal/dto/error.go rename to backend/internal/dto/error.go diff --git a/internal/dto/key.go b/backend/internal/dto/key.go similarity index 100% rename from internal/dto/key.go rename to backend/internal/dto/key.go diff --git a/internal/dto/passkey.go b/backend/internal/dto/passkey.go similarity index 100% rename from internal/dto/passkey.go rename to backend/internal/dto/passkey.go diff --git a/internal/dto/response.go b/backend/internal/dto/response.go similarity index 100% rename from internal/dto/response.go rename to backend/internal/dto/response.go diff --git a/internal/dto/user.go b/backend/internal/dto/user.go similarity index 100% rename from internal/dto/user.go rename to backend/internal/dto/user.go diff --git a/internal/pkg/apikey/apikey.go b/backend/internal/pkg/apikey/apikey.go similarity index 100% rename from internal/pkg/apikey/apikey.go rename to backend/internal/pkg/apikey/apikey.go diff --git a/internal/pkg/crypto/crypto.go b/backend/internal/pkg/crypto/crypto.go similarity index 100% rename from internal/pkg/crypto/crypto.go rename to backend/internal/pkg/crypto/crypto.go diff --git a/internal/pkg/crypto/crypto_test.go b/backend/internal/pkg/crypto/crypto_test.go similarity index 100% rename from internal/pkg/crypto/crypto_test.go rename to backend/internal/pkg/crypto/crypto_test.go diff --git a/internal/pkg/jwt/jwt.go b/backend/internal/pkg/jwt/jwt.go similarity index 100% rename from internal/pkg/jwt/jwt.go rename to backend/internal/pkg/jwt/jwt.go diff --git a/internal/pkg/ratelimit/ratelimit.go b/backend/internal/pkg/ratelimit/ratelimit.go similarity index 100% rename from internal/pkg/ratelimit/ratelimit.go rename to backend/internal/pkg/ratelimit/ratelimit.go diff --git a/internal/pkg/resp/resp.go b/backend/internal/pkg/resp/resp.go similarity index 100% rename from internal/pkg/resp/resp.go rename to backend/internal/pkg/resp/resp.go diff --git a/internal/pkg/tokenizer/tokenizer.go b/backend/internal/pkg/tokenizer/tokenizer.go similarity index 100% rename from internal/pkg/tokenizer/tokenizer.go rename to backend/internal/pkg/tokenizer/tokenizer.go diff --git a/internal/proxy/convert/chat.go b/backend/internal/proxy/convert/chat.go similarity index 100% rename from internal/proxy/convert/chat.go rename to backend/internal/proxy/convert/chat.go diff --git a/internal/proxy/convert/chat_messages.go b/backend/internal/proxy/convert/chat_messages.go similarity index 100% rename from internal/proxy/convert/chat_messages.go rename to backend/internal/proxy/convert/chat_messages.go diff --git a/internal/proxy/convert/chat_responses.go b/backend/internal/proxy/convert/chat_responses.go similarity index 100% rename from internal/proxy/convert/chat_responses.go rename to backend/internal/proxy/convert/chat_responses.go diff --git a/internal/proxy/convert/convert_test.go b/backend/internal/proxy/convert/convert_test.go similarity index 100% rename from internal/proxy/convert/convert_test.go rename to backend/internal/proxy/convert/convert_test.go diff --git a/internal/proxy/convert/messages.go b/backend/internal/proxy/convert/messages.go similarity index 100% rename from internal/proxy/convert/messages.go rename to backend/internal/proxy/convert/messages.go diff --git a/internal/proxy/convert/responses.go b/backend/internal/proxy/convert/responses.go similarity index 100% rename from internal/proxy/convert/responses.go rename to backend/internal/proxy/convert/responses.go diff --git a/internal/proxy/convert/stream.go b/backend/internal/proxy/convert/stream.go similarity index 100% rename from internal/proxy/convert/stream.go rename to backend/internal/proxy/convert/stream.go diff --git a/internal/proxy/convert/types.go b/backend/internal/proxy/convert/types.go similarity index 100% rename from internal/proxy/convert/types.go rename to backend/internal/proxy/convert/types.go diff --git a/internal/proxy/gateway.go b/backend/internal/proxy/gateway.go similarity index 100% rename from internal/proxy/gateway.go rename to backend/internal/proxy/gateway.go diff --git a/internal/proxy/handlers.go b/backend/internal/proxy/handlers.go similarity index 100% rename from internal/proxy/handlers.go rename to backend/internal/proxy/handlers.go diff --git a/internal/service/apikey.go b/backend/internal/service/apikey.go similarity index 100% rename from internal/service/apikey.go rename to backend/internal/service/apikey.go diff --git a/internal/service/channel.go b/backend/internal/service/channel.go similarity index 100% rename from internal/service/channel.go rename to backend/internal/service/channel.go diff --git a/internal/service/model.go b/backend/internal/service/model.go similarity index 100% rename from internal/service/model.go rename to backend/internal/service/model.go diff --git a/internal/service/token.go b/backend/internal/service/token.go similarity index 100% rename from internal/service/token.go rename to backend/internal/service/token.go diff --git a/internal/service/usage.go b/backend/internal/service/usage.go similarity index 100% rename from internal/service/usage.go rename to backend/internal/service/usage.go diff --git a/internal/service/user.go b/backend/internal/service/user.go similarity index 100% rename from internal/service/user.go rename to backend/internal/service/user.go diff --git a/internal/service/webauth.go b/backend/internal/service/webauth.go similarity index 100% rename from internal/service/webauth.go rename to backend/internal/service/webauth.go diff --git a/internal/store/db.go b/backend/internal/store/db.go similarity index 100% rename from internal/store/db.go rename to backend/internal/store/db.go diff --git a/internal/store/models.go b/backend/internal/store/models.go similarity index 100% rename from internal/store/models.go rename to backend/internal/store/models.go diff --git a/internal/usage/recorder.go b/backend/internal/usage/recorder.go similarity index 100% rename from internal/usage/recorder.go rename to backend/internal/usage/recorder.go diff --git a/internal/utils/convert.go b/backend/internal/utils/convert.go similarity index 100% rename from internal/utils/convert.go rename to backend/internal/utils/convert.go diff --git a/internal/utils/map_tools.go b/backend/internal/utils/map_tools.go similarity index 100% rename from internal/utils/map_tools.go rename to backend/internal/utils/map_tools.go diff --git a/internal/utils/password.go b/backend/internal/utils/password.go similarity index 100% rename from internal/utils/password.go rename to backend/internal/utils/password.go diff --git a/internal/utils/pointer.go b/backend/internal/utils/pointer.go similarity index 100% rename from internal/utils/pointer.go rename to backend/internal/utils/pointer.go diff --git a/middleware/auth.go b/backend/middleware/auth.go similarity index 100% rename from middleware/auth.go rename to backend/middleware/auth.go diff --git a/middleware/auth_llm.go b/backend/middleware/auth_llm.go similarity index 100% rename from middleware/auth_llm.go rename to backend/middleware/auth_llm.go diff --git a/middleware/cors.go b/backend/middleware/cors.go similarity index 100% rename from middleware/cors.go rename to backend/middleware/cors.go diff --git a/middleware/ratelimit.go b/backend/middleware/ratelimit.go similarity index 100% rename from middleware/ratelimit.go rename to backend/middleware/ratelimit.go diff --git a/pkg/config/config.go b/backend/pkg/config/config.go similarity index 100% rename from pkg/config/config.go rename to backend/pkg/config/config.go diff --git a/pkg/tokenizer/tokenizer.go b/backend/pkg/tokenizer/tokenizer.go similarity index 100% rename from pkg/tokenizer/tokenizer.go rename to backend/pkg/tokenizer/tokenizer.go diff --git a/router/setRouter.go b/backend/router/setRouter.go similarity index 100% rename from router/setRouter.go rename to backend/router/setRouter.go diff --git a/wire/wire.go b/backend/wire/wire.go similarity index 100% rename from wire/wire.go rename to backend/wire/wire.go diff --git a/makefile b/makefile deleted file mode 100644 index a0e0841..0000000 --- a/makefile +++ /dev/null @@ -1,96 +0,0 @@ -GOPATH:=$(shell go env GOPATH) -VERSION=$(shell git describe --tags --always) -# 获取源码最近一次 git commit log,包含 commit sha 值,以及 commit message -GitCommitLog=$(shell git log) -# 检查源码在最近一次 git commit 基础上,是否有本地修改,且未提交的文件 -GitStatus=$(shell git status -s) -# 获取当前时间 -BuildTime=$(shell date +'%Y.%m.%d %H:%M:%S') -# 获取Go的版本 -BuildGoVersion=$(shell go version) - -LDFlags=" \ --X 'main.Version=$(VERSION)' \ --X 'main.GitCommitLog=$(GitCommitLog)' \ --X 'main.BuildTime=$(BuildTime)' \ --X 'main.BuildGoVersion=$(BuildGoVersion)'" - -.PHONY: web -# 构建前端并放入 Go embed 目录 (cmd/openteam/dist) -web: - cd frontend && (command -v pnpm >/dev/null 2>&1 || npm install -g pnpm) && pnpm install --frozen-lockfile && pnpm build - rm -rf cmd/openteam/dist - mkdir -p cmd/openteam - mv frontend/dist cmd/openteam/dist - touch cmd/openteam/dist/.gitkeep - -.PHONY: dev-backend -# 本地启动后端 (端口 8080, 数据库 ./db/openteam.db) -dev-backend: - PORT=8080 go run ./cmd/openteam - -.PHONY: dev-frontend -# 本地启动前端 dev server (端口 5173, /api 代理到后端) -dev-frontend: - cd frontend && pnpm dev - -.PHONY: dev -# 并行启动前后端本地开发环境 (Ctrl+C 一起退出) -dev: - $(MAKE) -j2 dev-backend dev-frontend - -.PHONY: build -# build -build: -# mkdir -p bin/ && go build -ldflags $(LDFlags) -o ./bin/ ./... - rm -rf bin - mkdir -p bin/ && CGO_ENABLED=0 go build -ldflags "-s -w" -o ./bin/openteam ./cmd/openteam/ - command -v upx >/dev/null 2>&1 && upx -9 bin/openteam || echo "upx 未安装,跳过二进制压缩" - -.PHONY:image -# build docker images -image: - docker build -t mirrors2/opencatd-open:latest -f deploy/docker/Dockerfile . --push - -.PHONY:docker -# build docker images -docker: - docker run --privileged --rm tonistiigi/binfmt --install all -# docker buildx create --use --name xbuilder --driver docker-container - docker buildx inspect xbuilder --bootstrap - docker buildx build --platform linux/amd64,linux/arm64 -t mirrors2/opencatd-open:latest -f deploy/docker/Dockerfile . --push - -.PHONY:image-dev -# build & push multi-arch dev image (PUSH=0 仅本地加载本机架构) -image-dev: - sh deploy/docker/build-dev.sh - -.PHONY: clean -# clean -clean: - rm -rf bin/ - -.PHONY: all -# generate all -all: - make build; - - -# show help -help: - @echo '' - @echo 'Usage:' - @echo ' make [target]' - @echo '' - @echo 'Targets:' - @awk '/^[a-zA-Z\-\_0-9]+:/ { \ - helpMessage = match(lastLine, /^# (.*)/); \ - if (helpMessage) { \ - helpCommand = substr($$1, 0, index($$1, ":")-1); \ - helpMessage = substr(lastLine, RSTART + 2, RLENGTH); \ - printf "\033[36m%-22s\033[0m %s\n", helpCommand,helpMessage; \ - } \ - } \ - { lastLine = $$0 }' $(MAKEFILE_LIST) - -.DEFAULT_GOAL := help