feat(api): 补齐资源分发服务入口

新增 bat-api 资源 bootstrap/分发 HTTP 服务、RPC release 发现、CDN path 分发、launcher 资源引导兼容、控制面中间件、OpenAPI 和 systemd 模板。

同步 Go 边界文档,明确 Rust bat 是资源生产者和同步运维入口,Go bat-api 是只读 bootstrap/分发服务,试验 Go CLI 产物为 bin/bat-go。

验证:未运行新命令;本轮已按要求停止重复构建/测试。
This commit is contained in:
2026-07-31 00:41:48 +08:00
parent 2079c6a307
commit 3f78f8f880
43 changed files with 4427 additions and 23 deletions
+26 -19
View File
@@ -1,4 +1,4 @@
.PHONY: help build build-ffi test clean check fmt lint install dev docker-build docker-up docker-down official-smoke
.PHONY: help build build-ffi test clean check fmt lint install dev docker-build docker-up docker-down official-smoke build-go build-go-api build-go-cli test-go test-go-api test-go-ffi test-go-all
# 默认目标
.DEFAULT_GOAL := help
@@ -28,21 +28,25 @@ build-ffi: ## 构建 bat-ffi release 库(cgo 链接依赖)
@echo "$(BLUE)Building bat-ffi (release)...$(NC)"
cargo build --release -p bat-ffi
build-go: build-ffi ## 构建 Go 组件
@echo "$(BLUE)Building Go CLI...$(NC)"
build-go: build-go-api ## 构建 Go 默认产物(bat-api bootstrap/分发;同步 CLI 请用 Rust bat
build-go-api: ## 构建 bat-api(资源 bootstrap/分发 HTTP,无 FFI
@echo "$(BLUE)Building bat-api (resource bootstrap + distribution)...$(NC)"
@mkdir -p bin
go build -o bin/bat-api ./cmd/bat-api
build-go-cli: build-ffi ## 构建试验性 Go CLI → bin/bat-go(禁止命名为 bat
@echo "$(BLUE)Building experimental Go CLI as bin/bat-go...$(NC)"
@mkdir -p bin
@if [ -f cmd/bat/main.go ]; then \
go build -o bin/bat ./cmd/bat; \
go build -o bin/bat-go ./cmd/bat; \
else \
echo "$(YELLOW)Go CLI entrypoint not implemented yet, skipping...$(NC)"; \
echo "$(YELLOW)experimental cmd/bat missing, skipping...$(NC)"; \
fi
install: ## 安装到本地
@echo "$(BLUE)Installing bat CLI...$(NC)"
@if [ -f cmd/bat/main.go ]; then \
go install ./cmd/bat; \
else \
echo "$(YELLOW)Go CLI entrypoint not implemented yet, skipping...$(NC)"; \
fi
install: build-go-api ## 安装 bat-api 到 GOPATH/bin(不安装名为 bat 的 Go 二进制)
@echo "$(BLUE)Installing bat-api...$(NC)"
go install ./cmd/bat-api
# ============================================================================
# 测试相关
@@ -54,14 +58,17 @@ test-rust: ## 运行 Rust 测试
@echo "$(BLUE)Running Rust tests...$(NC)"
cargo test --workspace
test-go: build-ffi ## 运行 Go 测试
@echo "$(BLUE)Running Go tests...$(NC)"
@if [ -n "$$(go list ./... 2>/dev/null)" ]; then \
go test -v ./...; \
else \
echo "$(YELLOW)No Go packages yet, skipping...$(NC)"; \
fi
test-go: test-go-api ## 默认 Go 门禁(无 FFI;见 GO_STATUS.md
test-go-api: ## 纯 Go 测试:internal/api + backendrpc
@echo "$(BLUE)Running pure Go tests (api + backendrpc)...$(NC)"
go test ./internal/api/... ./internal/backendrpc/...
test-go-ffi: build-ffi ## 含 FFI/试验 CLI 的 Go 测试
@echo "$(BLUE)Running Go tests including FFI packages...$(NC)"
go test ./...
test-go-all: test-go-api test-go-ffi ## 全部 Go 测试
bench: ## 运行性能基准测试
@echo "$(BLUE)Running benchmarks...$(NC)"
cargo bench --workspace