#!/bin/bash # 餐智库一键启动脚本 # 同时启动后端 API 服务和前端开发服务器 set -e BACKEND_DIR="$(cd "$(dirname "$0")" && pwd)" FRONTEND_DIR="$(cd "$(dirname "$0")/.." && pwd)" echo "=== 餐智库启动 ===" # 检查后端虚拟环境 if [ ! -d "$BACKEND_DIR/venv" ]; then echo "[后端] 创建虚拟环境..." python3 -m venv "$BACKEND_DIR/venv" echo "[后端] 安装依赖..." "$BACKEND_DIR/venv/bin/pip" install -r "$BACKEND_DIR/requirements.txt" -q echo "[后端] 安装 Playwright 浏览器..." "$BACKEND_DIR/venv/bin/playwright" install chromium fi # 检查 .env 文件 if [ ! -f "$BACKEND_DIR/.env" ]; then echo "[后端] 复制 .env.example -> .env" cp "$BACKEND_DIR/.env.example" "$BACKEND_DIR/.env" echo "[提示] 请编辑 backend/.env 填入 DASHSCOPE_API_KEY" fi # 启动后端 echo "[后端] 启动 API 服务 (端口 8765)..." "$BACKEND_DIR/venv/bin/python" "$BACKEND_DIR/app.py" & BACKEND_PID=$! echo "[后端] PID=$BACKEND_PID" # 等待后端就绪 sleep 2 # 启动前端 echo "[前端] 启动开发服务器 (端口 3000)..." cd "$FRONTEND_DIR" npm run dev & FRONTEND_PID=$! echo "[前端] PID=$FRONTEND_PID" echo "" echo "=== 启动完成 ===" echo "前端: http://localhost:3000" echo "后端: http://localhost:8765/api/health" echo "" echo "按 Ctrl+C 停止所有服务" trap "kill $BACKEND_PID $FRONTEND_PID 2>/dev/null; exit" INT TERM wait