# ============================================================ # Aily - 企业 AI 应用平台 Makefile # ============================================================ .PHONY: help dev-api dev-web dev build test lint migrate-up migrate-down migrate-create sqlc docker-up docker-down # Default help: ## 显示帮助信息 @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' # ==================== Development ==================== dev-api: ## 启动后端开发服务器(热重载需安装 air) cd server && go run ./cmd/server/ dev-web: ## 启动前端开发服务器 cd apps/web && npm run dev dev: ## 同时启动前后端(需要 goreman 或手动开两个终端) @echo "请在两个终端分别运行: make dev-api 和 make dev-web" # ==================== Build ==================== build-api: ## 编译后端 cd server && CGO_ENABLED=0 go build -o ../dist/server ./cmd/server/ build-web: ## 编译前端 cd apps/web && npm run build build: build-api build-web ## 编译前后端 # ==================== Test ==================== test: ## 运行后端测试 cd server && go test ./... -v -count=1 test-cover: ## 运行测试并生成覆盖率报告 cd server && go test ./... -coverprofile=coverage.out && go tool cover -html=coverage.out # ==================== Lint ==================== lint-api: ## 后端代码检查 cd server && go vet ./... lint-web: ## 前端代码检查 cd apps/web && npm run lint lint: lint-api lint-web ## 全部代码检查 # ==================== Database ==================== MIGRATE_URL ?= "postgres://aily:aily@localhost:5432/aily_portal?sslmode=disable" migrate-up: ## 执行数据库迁移(全部) migrate -database $(MIGRATE_URL) -path server/migrations up migrate-down: ## 回滚最近一次迁移 migrate -database $(MIGRATE_URL) -path server/migrations down 1 migrate-create: ## 创建新迁移文件 (用法: make migrate-create NAME=create_xxx) migrate create -ext sql -dir server/migrations -seq $(NAME) migrate-status: ## 查看迁移状态 migrate -database $(MIGRATE_URL) -path server/migrations version # ==================== sqlc ==================== sqlc: ## 生成 sqlc 代码 cd server && sqlc generate # ==================== Docker ==================== docker-up: ## 启动基础设施 (PostgreSQL + Redis + MinIO) docker compose -f docker/docker-compose.yml up -d docker-down: ## 停止基础设施 docker compose -f docker/docker-compose.yml down docker-dify-up: ## 启动 Dify 服务 docker compose -f docker/docker-compose.dify.yml up -d docker-dify-down: ## 停止 Dify 服务 docker compose -f docker/docker-compose.dify.yml down docker-all-up: docker-up docker-dify-up ## 启动全部服务 docker-all-down: docker-dify-down docker-down ## 停止全部服务 docker-logs: ## 查看 Docker 日志 docker compose -f docker/docker-compose.yml logs -f # ==================== Production ==================== docker-prod-up: ## 启动生产环境 docker compose -f docker/docker-compose.prod.yml up -d --build docker-prod-down: ## 停止生产环境 docker compose -f docker/docker-compose.prod.yml down # ==================== PPT Worker ==================== dev-ppt: ## 启动 PPT Worker 开发服务器 cd ppt-worker && python app.py ppt-worker-install: ## 安装 PPT Worker 依赖 cd ppt-worker && pip install -r requirements.txt # ==================== Seed ==================== seed: ## 初始化种子数据(管理员账号、示例应用) PGPASSWORD=aily psql -h localhost -U aily -d aily_portal -f server/migrations/seed.sql seed-ppt: ## 初始化 PPT 生成应用种子数据 PGPASSWORD=aily psql -h localhost -U aily -d aily_portal -f server/migrations/seed_ppt.sql # ==================== Setup ==================== setup: docker-up ## 初始化开发环境(启动基础服务+迁移+种子数据) @echo "⏳ 等待数据库启动..." @sleep 3 $(MAKE) migrate-up $(MAKE) seed @echo "✅ 开发环境初始化完成!" @echo " 管理员账号: admin@aily.com / admin123" @echo " 创作者账号: zhangsan@aily.com / admin123" @echo " 普通用户: lisi@aily.com / admin123" @echo "" @echo "运行 make dev-api 和 make dev-web 启动开发服务器" # ==================== Clean ==================== clean: ## 清理构建产物 rm -rf dist/ server/server apps/web/.next apps/web/out