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
|