# TradeMate 外贸小助手 - Makefile # 快捷开发命令 .PHONY: help install run test build deploy clean logs docker-up docker-down db-migrate db-reset # ===================== # 默认目标 # ===================== help: @echo "TradeMate 外贸小助手 - 开发命令" @echo "" @echo "安装:" @echo " make install 安装所有依赖" @echo " make install-backend 安装后端依赖" @echo " make install-frontend 安装前端依赖" @echo "" @echo "运行:" @echo " make run 启动开发环境 (Docker Compose)" @echo " make run-backend 启动后端服务" @echo " make run-admin 启动管理后台" @echo " make run-user 启动用户工作台" @echo " make run-uniapp 启动移动端 H5" @echo " make docker-up 启动所有 Docker 服务" @echo " make docker-down 停止所有 Docker 服务" @echo "" @echo "测试:" @echo " make test 运行所有后端测试" @echo " make test-backend 运行后端测试" @echo " make test-coverage 运行测试并生成覆盖率报告" @echo "" @echo "构建:" @echo " make build 构建生产版本" @echo " make build-backend 构建后端 Docker 镜像" @echo " make build-admin 构建管理后台" @echo " make build-user 构建用户工作台" @echo " make build-uniapp 构建移动端" @echo "" @echo "数据库:" @echo " make db-migrate 运行数据库迁移" @echo " make db-reset 重置数据库 (危险!)" @echo "" @echo "部署:" @echo " make deploy 部署到生产环境" @echo " make deploy-staging 部署到预发布环境" @echo "" @echo "清理:" @echo " make clean 清理构建缓存" @echo " make clean-docker 清理 Docker 资源" @echo "" @echo "日志:" @echo " make logs 查看所有服务日志" @echo " make logs-backend 查看后端日志" # ===================== # 安装依赖 # ===================== install: install-backend install-frontend @echo "✅ 所有依赖安装完成" install-backend: @echo "📦 安装后端依赖..." cd backend && python3 -m venv venv && source venv/bin/activate && pip install --upgrade pip && pip install -r requirements.txt @echo "✅ 后端依赖安装完成" install-frontend: install-admin install-user install-uniapp @echo "✅ 前端依赖安装完成" install-admin: @echo "📦 安装管理后台依赖..." cd admin-frontend && npm install @echo "✅ 管理后台依赖安装完成" install-user: @echo "📦 安装用户工作台依赖..." cd user-frontend && npm install @echo "✅ 用户工作台依赖安装完成" install-uniapp: @echo "📦 安装移动端依赖..." cd uni-app && npm install @echo "✅ 移动端依赖安装完成" # ===================== # 运行开发环境 # ===================== run: docker-up @echo "🚀 开发环境已启动" @echo "" @echo "访问地址:" @echo " 后端 API: http://localhost:8000" @echo " API 文档: http://localhost:8000/docs" @echo " 管理后台: http://localhost:5173" @echo " 用户工作台: http://localhost:5174" @echo " 移动端 H5: http://localhost:3000" @echo " Nginx 代理: http://localhost:80" run-backend: @echo "🚀 启动后端服务..." cd backend && source venv/bin/activate && uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 run-admin: @echo "🚀 启动管理后台..." cd admin-frontend && npm run dev run-user: @echo "🚀 启动用户工作台..." cd user-frontend && npm run dev run-uniapp: @echo "🚀 启动移动端 H5..." cd uni-app && npm run dev:h5 docker-up: @echo "🐳 启动 Docker 服务..." docker-compose up -d --build @echo "⏳ 等待服务启动..." @sleep 10 docker-down: @echo "🛑 停止 Docker 服务..." docker-compose down # ===================== # 测试 # ===================== test: test-backend @echo "✅ 测试完成" test-backend: @echo "🧪 运行后端测试..." cd backend && source venv/bin/activate && pytest tests/ -v --tb=short test-coverage: @echo "🧪 运行测试并生成覆盖率报告..." cd backend && source venv/bin/activate && pytest tests/ -v --cov=app --cov-report=html --cov-report=term @echo "📊 覆盖率报告已生成: backend/htmlcov/index.html" # ===================== # 构建生产版本 # ===================== build: build-backend build-admin build-user build-uniapp @echo "✅ 所有构建完成" build-backend: @echo "🔨 构建后端 Docker 镜像..." docker-compose build backend celery-worker celery-beat build-admin: @echo "🔨 构建管理后台..." cd admin-frontend && npm run build @echo "📁 构建输出: admin-frontend/dist/" build-user: @echo "🔨 构建用户工作台..." cd user-frontend && npm run build @echo "📁 构建输出: user-frontend/dist/" build-uniapp: @echo "🔨 构建移动端 H5..." cd uni-app && npm run build:h5 @echo "📁 构建输出: uni-app/dist/" # ===================== # 数据库操作 # ===================== db-migrate: @echo "🗄️ 运行数据库迁移..." cd backend && source venv/bin/activate && alembic upgrade head db-autogenerate: @echo "🗄️ 自动生成迁移脚本..." cd backend && source venv/bin/activate && alembic revision --autogenerate -m "$(msg)" db-reset: @echo "⚠️ 警告: 即将重置数据库,此操作不可逆!" @read -p "确认? (yes/no): " confirm; \ if [ "$$confirm" = "yes" ]; then \ cd backend && source venv/bin/activate && alembic downgrade base && alembic upgrade head; \ echo "✅ 数据库已重置"; \ else \ echo "❌ 操作已取消"; \ fi # ===================== # 部署 # ===================== deploy: build @echo "🚀 部署到生产环境..." @echo "请确保已完成以下操作:" @echo " 1. 更新 .env 中的生产配置" @echo " 2. 运行 make db-migrate" @echo " 3. 配置 Nginx SSL 证书" @echo "" @echo "📋 部署步骤:" @echo " 1. docker-compose -f docker-compose.prod.yml up -d --build" @echo " 2. 验证服务健康检查" @echo " 3. 检查日志: make logs" deploy-staging: build @echo "🚀 部署到预发布环境..." docker-compose -f docker-compose.staging.yml up -d --build # ===================== # 清理 # ===================== clean: @echo "🧹 清理构建缓存..." cd admin-frontend && npm run clean 2>/dev/null || rm -rf dist node_modules/.cache cd user-frontend && npm run clean 2>/dev/null || rm -rf dist node_modules/.cache cd uni-app && rm -rf dist node_modules/.cache find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true find . -type f -name "*.pyc" -delete 2>/dev/null || true @echo "✅ 清理完成" clean-docker: @echo "🧹 清理 Docker 资源..." docker-compose down -v docker system prune -f @echo "✅ Docker 资源清理完成" # ===================== # 日志 # ===================== logs: @echo "📋 查看所有服务日志..." docker-compose logs -f logs-backend: @echo "📋 查看后端日志..." docker-compose logs -f backend logs-nginx: @echo "📋 查看 Nginx 日志..." docker-compose logs -f nginx # ===================== # 工具命令 # ===================== lint-backend: @echo "🔍 后端代码检查..." cd backend && source venv/bin/activate && flake8 app/ --max-line-length=100 || true lint-frontend: @echo "🔍 前端代码检查..." cd admin-frontend && npm run lint 2>/dev/null || true cd user-frontend && npm run lint 2>/dev/null || true format: @echo "🎨 格式化代码..." cd backend && source venv/bin/activate && black app/ --line-length 100 || true # ===================== # 快捷测试用户 # ===================== test-user: @echo "👤 测试用户信息:" @echo " 手机号: 13800138099" @echo " 密码: testpass123" @echo "" @echo "👤 游客模式:" @echo " 点击前端 '快速体验' 按钮即可无需登录体验"