Files
2026-06-15 23:48:37 +08:00

134 lines
4.3 KiB
Makefile

# ============================================================
# 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