80 lines
1.9 KiB
Bash
80 lines
1.9 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
set -e
|
|||
|
|
|
|||
|
|
echo "=========================================="
|
|||
|
|
echo " Jarvis 个人 AI 助理 - 一键启动"
|
|||
|
|
echo "=========================================="
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 检查 uv
|
|||
|
|
if ! command -v uv &> /dev/null; then
|
|||
|
|
echo "[错误] 未找到 uv,请先安装: https://github.com/astral-sh/uv"
|
|||
|
|
echo "安装命令: pip install uv"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 检查 npm
|
|||
|
|
if ! command -v npm &> /dev/null; then
|
|||
|
|
echo "[错误] 未找到 npm,请先安装 Node.js: https://nodejs.org"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 检查 .env
|
|||
|
|
if [ ! -f backend/.env ]; then
|
|||
|
|
echo "[提示] 首次运行,请编辑 backend/.env 文件"
|
|||
|
|
echo " 填入: ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxxxxxx"
|
|||
|
|
echo ""
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|||
|
|
|
|||
|
|
# 安装后端依赖
|
|||
|
|
echo "[1/4] 安装后端依赖..."
|
|||
|
|
cd "$SCRIPT_DIR/backend"
|
|||
|
|
uv sync --quiet
|
|||
|
|
echo "[OK] 后端依赖安装完成"
|
|||
|
|
|
|||
|
|
# 安装前端依赖
|
|||
|
|
echo ""
|
|||
|
|
echo "[2/4] 安装前端依赖..."
|
|||
|
|
cd "$SCRIPT_DIR/frontend"
|
|||
|
|
npm install --silent
|
|||
|
|
echo "[OK] 前端依赖安装完成"
|
|||
|
|
|
|||
|
|
# 启动后端
|
|||
|
|
echo ""
|
|||
|
|
echo "[3/4] 启动后端服务 (端口 8000)..."
|
|||
|
|
cd "$SCRIPT_DIR/backend"
|
|||
|
|
uv run uvicorn app.main:app --reload --port 8000 &
|
|||
|
|
BACKEND_PID=$!
|
|||
|
|
|
|||
|
|
# 等待后端
|
|||
|
|
echo " 等待后端启动..."
|
|||
|
|
sleep 5
|
|||
|
|
|
|||
|
|
# 启动前端
|
|||
|
|
echo ""
|
|||
|
|
echo "[4/4] 启动前端服务 (端口 5173)..."
|
|||
|
|
cd "$SCRIPT_DIR/frontend"
|
|||
|
|
npm run dev &
|
|||
|
|
FRONTEND_PID=$!
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "=========================================="
|
|||
|
|
echo " 启动完成!"
|
|||
|
|
echo ""
|
|||
|
|
echo " 后端: http://localhost:8000"
|
|||
|
|
echo " 前端: http://localhost:5173"
|
|||
|
|
echo " API文档: http://localhost:8000/docs"
|
|||
|
|
echo "=========================================="
|
|||
|
|
echo ""
|
|||
|
|
echo "提示:"
|
|||
|
|
echo " - 首次使用请先注册账号"
|
|||
|
|
echo " - 对话前请在 backend/.env 填入 API Key"
|
|||
|
|
echo " - 关闭时请按 Ctrl+C"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 等待信号
|
|||
|
|
trap "kill $BACKEND_PID $FRONTEND_PID 2>/dev/null; exit" SIGINT SIGTERM
|
|||
|
|
wait
|