# 我们past Go 服务构建
BIN      := past-server
GOOS    ?= linux
GOARCH  ?= amd64
VERSION ?= $(shell date +%Y%m%d-%H%M)

.PHONY: all web build build-windows build-local run dev test diff clean

all: web build

## 构建 React 管理后台（产物 web/admin/dist 会被 embed）
web:
	cd web/admin && npm ci --silent && npm run build

## 交叉编译 Linux 二进制（默认 linux/amd64；树莓派等用 GOARCH=arm64）
build:
	CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build -trimpath -ldflags "-s -w -X main.version=$(VERSION)" -o dist/$(BIN)-$(GOOS)-$(GOARCH) ./cmd/server
	@ls -lh dist/

## Windows 部署包：past-server.exe + 配置模板 + 部署脚本 → dist/windows/
build-windows:
	rm -rf dist/windows && mkdir -p dist/windows
	CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -trimpath -ldflags "-s -w -X main.version=$(VERSION)" -o dist/windows/past-server.exe ./cmd/server
	cp config.example.yaml dist/windows/config.yaml
	cp deploy/windows/*.ps1 deploy/windows/README.md dist/windows/
	cd dist && rm -f past-windows-deploy.zip && zip -qr past-windows-deploy.zip windows
	@ls -lh dist/windows/ dist/past-windows-deploy.zip

## 本机构建（开发用）
build-local:
	go build -o run/$(BIN) ./cmd/server

run: build-local
	./run/$(BIN) -config config.yaml

## 本地调试：使用不入库的 config.dev.yaml
dev: build-local
	./run/$(BIN) -config config.dev.yaml

test:
	go vet ./... && go test ./...

## PHP vs Go 响应对比（需先启动 dev 环境，见 ../dev/reset_dbs.sh）
diff:
	cd ../dev && for s in scenarios/*.json; do ./reset_dbs.sh >/dev/null; python3 apidiff.py $$s | tail -1; done

clean:
	rm -rf dist run/$(BIN) web/admin/dist
