.PHONY: all build run stop test lint migrate-up clean help SERVICES = gateway auth-service purchaser-service textile-service washing-service help: ## 显示帮助信息 @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' all: build ## 构建所有服务 build: ## 构建所有服务二进制 @for svc in $(SERVICES); do \ echo "==> Building $$svc..."; \ cd $$svc && go build -o bin/$$svc ./cmd/ && cd ..; \ done @echo "==> All services built." run: ## 启动所有服务 (Docker Compose) docker-compose up --build -d run-dev: ## 启动开发环境 (前台,含日志) docker-compose up --build stop: ## 停止所有服务 docker-compose down restart: stop run ## 重启所有服务 logs: ## 查看所有服务日志 docker-compose logs -f logs-%: ## 查看指定服务日志 (如: make logs-gateway) docker-compose logs -f $* test: ## 运行所有服务的测试 @for svc in $(SERVICES); do \ echo "==> Testing $$svc..."; \ cd $$svc && go test ./... -v && cd ..; \ done lint: ## 代码检查 @for svc in $(SERVICES); do \ echo "==> Linting $$svc..."; \ cd $$svc && go vet ./... && cd ..; \ done tidy: ## 整理所有模块依赖 @for svc in shared $(SERVICES); do \ echo "==> Tidying $$svc..."; \ cd $$svc && go mod tidy && cd ..; \ done migrate-up: ## 执行数据库迁移 @echo "==> Running database migrations..." @PGPASSWORD=$${DB_PASSWORD:-iloom_secret_2024} psql -h localhost -U $${POSTGRES_USER:-iloom} -d $${POSTGRES_DB:-iloom} -f scripts/init-schemas.sql @echo "==> Migrations complete." clean: ## 清理构建产物 @for svc in $(SERVICES); do \ rm -rf $$svc/bin; \ done @echo "==> Cleaned." dev-%: ## 单独运行指定服务 (如: make dev-gateway) cd $* && go run ./cmd/ docker-build-%: ## 单独构建指定服务镜像 (如: make docker-build-gateway) docker-compose build $* health: ## 检查所有服务健康状态 @echo "Gateway: $$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8080/health)" @echo "Auth: $$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8081/health)" @echo "Purchaser: $$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8082/health)" @echo "Textile: $$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8083/health)" @echo "Washing: $$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8084/health)"