first commit

This commit is contained in:
rayd1o
2026-03-05 11:46:58 +08:00
commit e7033775d8
20657 changed files with 1988940 additions and 0 deletions

134
restart.sh Executable file
View File

@@ -0,0 +1,134 @@
#!/bin/bash
# Planet 重启脚本 - 停止并重启所有服务
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
echo -e "${BLUE}🔄 重启智能星球计划...${NC}"
echo ""
# 停止服务
echo -e "${YELLOW}🛑 停止服务...${NC}"
# 停止后端
if pgrep -f "uvicorn.*app.main:app" > /dev/null 2>&1; then
pkill -f "uvicorn.*app.main:app" 2>/dev/null || true
echo " ✅ 后端已停止"
else
echo " 后端未运行"
fi
# 停止前端
if pgrep -f "vite" > /dev/null 2>&1; then
pkill -f "vite" 2>/dev/null || true
echo " ✅ 前端已停止"
else
echo " 前端未运行"
fi
# 停止 Docker 服务
if command -v docker &> /dev/null && docker ps &> /dev/null 2>&1; then
if command -v docker-compose &> /dev/null; then
docker-compose down > /dev/null 2>&1 || true
else
docker compose down > /dev/null 2>&1 || true
fi
echo " ✅ Docker 容器已停止"
fi
# 等待服务完全停止
echo ""
echo -e "${YELLOW}⏳ 等待进程退出...${NC}"
sleep 2
# 检查端口是否已释放
if lsof -i :8000 > /dev/null 2>&1 || netstat -tlnp 2>/dev/null | grep -q ":8000" || ss -tlnp 2>/dev/null | grep -q ":8000"; then
echo -e "${YELLOW}⚠️ 端口 8000 仍被占用,强制杀死...${NC}"
fuser -k 8000/tcp 2>/dev/null || true
sleep 1
fi
if lsof -i :3000 > /dev/null 2>&1 || netstat -tlnp 2>/dev/null | grep -q ":3000" || ss -tlnp 2>/dev/null | grep -q ":3000"; then
echo -e "${YELLOW}⚠️ 端口 3000 仍被占用,强制杀死...${NC}"
fuser -k 3000/tcp 2>/dev/null || true
sleep 1
fi
echo ""
echo -e "${GREEN}✅ 服务已停止${NC}"
echo ""
# 启动服务
echo -e "${BLUE}🚀 启动服务...${NC}"
# 启动 Docker 服务
if command -v docker &> /dev/null && docker ps &> /dev/null 2>&1; then
echo -e "${BLUE}🗄️ 启动数据库...${NC}"
if command -v docker-compose &> /dev/null; then
docker-compose up -d postgres redis > /dev/null 2>&1 || true
else
docker compose up -d postgres redis > /dev/null 2>&1 || true
fi
echo -e "${YELLOW}⏳ 等待数据库就绪...${NC}"
sleep 5
fi
# 同步 Python 依赖
echo -e "${BLUE}🐍 同步 Python 依赖...${NC}"
cd "$SCRIPT_DIR/backend"
uv sync > /dev/null 2>&1 || true
cd "$SCRIPT_DIR"
# 初始化数据库
echo -e "${BLUE}🗃️ 初始化数据库...${NC}"
PYTHONPATH="$SCRIPT_DIR/backend" python "$SCRIPT_DIR/backend/scripts/init_admin.py" > /dev/null 2>&1 || true
# 启动后端
echo -e "${BLUE}🔧 启动后端服务...${NC}"
export PYTHONPATH="$SCRIPT_DIR/backend"
cd "$SCRIPT_DIR/backend"
nohup python -m uvicorn app.main:app --host 0.0.0.0 --port 8000 > /tmp/planet_backend.log 2>&1 &
BACKEND_PID=$!
cd "$SCRIPT_DIR"
echo -e "${YELLOW}⏳ 等待后端启动...${NC}"
sleep 3
if curl -s http://localhost:8000/health > /dev/null 2>&1; then
echo -e "${GREEN}✅ 后端已启动${NC}"
else
echo -e "${RED}❌ 后端启动失败${NC}"
tail -10 /tmp/planet_backend.log
fi
# 启动前端
echo -e "${BLUE}🌐 启动前端服务...${NC}"
cd "$SCRIPT_DIR/frontend"
npm run dev > /tmp/planet_frontend.log 2>&1 &
FRONTEND_PID=$!
cd "$SCRIPT_DIR"
sleep 2
echo ""
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}✅ 重启完成!${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
echo -e "${BLUE}🌐 访问地址:${NC}"
echo " 后端: http://localhost:8000"
echo " API文档: http://localhost:8000/docs"
echo " 前端: http://localhost:3000"
echo ""
echo -e "${BLUE}📝 日志:${NC}"
echo " tail -f /tmp/planet_backend.log"
echo " tail -f /tmp/planet_frontend.log"