feat: 新增产品管理模块 + AI基于产品详情生成范式对话 + 一键远程部署脚本
- schema.sql: 新增 product 表(positioning/selling_points) + deal 表加 product_id + 序列重置 + ALTER TABLE 迁移 - server.py: 产品 CRUD API + deal 关联 product_id + 仪表盘产品线统计 + 范式对话动态读取产品详情 - index.html: 产品管理页面 + 录入成交产品下拉 + 仪表盘增强 + 范式对话产品选择 + 导航通用化 - run_demo.sh: python 改 python3 + 预置成交关联 product_id - deploy.sh: 一键远程部署脚本(rsync+ssh+重启) - deploy_remote.sh: 远程数据库迁移脚本
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
#!/bin/bash
|
||||
set -eu
|
||||
|
||||
# ============================================
|
||||
# 微信销售管理系统 - 一键远程部署
|
||||
# 用法: bash deploy.sh
|
||||
# ============================================
|
||||
|
||||
REMOTE_HOST="154.8.162.18"
|
||||
REMOTE_USER="root"
|
||||
REMOTE_PATH="/opt/wxsales"
|
||||
REMOTE_DEMO="${REMOTE_PATH}/demo"
|
||||
|
||||
echo "=========================================="
|
||||
echo " 微信销售管理系统 - 远程部署"
|
||||
echo "=========================================="
|
||||
echo " 目标: ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}"
|
||||
echo ""
|
||||
|
||||
# 1. Git 提交推送
|
||||
echo "[1/5] Git 提交推送..."
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
if [ -n "$(git status --porcelain)" ]; then
|
||||
git add -A
|
||||
git commit -m "deploy: $(date '+%Y-%m-%d %H:%M') 部署更新"
|
||||
git push origin main
|
||||
echo " ✓ 代码已推送"
|
||||
else
|
||||
echo " - 无本地改动,跳过提交"
|
||||
fi
|
||||
|
||||
# 2. 同步代码到远程
|
||||
echo ""
|
||||
echo "[2/5] 同步代码到远程服务器..."
|
||||
ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "mkdir -p ${REMOTE_PATH}"
|
||||
rsync -avz --delete --exclude='db/data' --exclude='db/socket' --exclude='__pycache__' \
|
||||
--exclude='.git' --exclude='web.log' --exclude='.run.pid' \
|
||||
"$(dirname "$0")/demo/" "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DEMO}/"
|
||||
echo " ✓ 代码已同步"
|
||||
|
||||
# 3. 远程执行数据库迁移 + 重启服务
|
||||
echo ""
|
||||
echo "[3/5] 远程数据库迁移..."
|
||||
ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} bash ${REMOTE_DEMO}/deploy_remote.sh
|
||||
echo " ✓ 数据库迁移完成"
|
||||
|
||||
# 4. 重启 Web 服务
|
||||
echo ""
|
||||
echo "[4/5] 重启 Web 服务..."
|
||||
ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "
|
||||
# 停止旧进程
|
||||
if lsof -ti:8770 >/dev/null 2>&1; then
|
||||
kill \$(lsof -ti:8770) 2>/dev/null || true
|
||||
sleep 1
|
||||
fi
|
||||
# 启动新进程
|
||||
cd ${REMOTE_DEMO}
|
||||
nohup /usr/bin/python3 -m uvicorn web.server:app --host 127.0.0.1 --port 8770 \
|
||||
> ${REMOTE_DEMO}/web.log 2>&1 &
|
||||
sleep 2
|
||||
if curl -s http://127.0.0.1:8770/api/dashboard >/dev/null 2>&1; then
|
||||
echo ' ✓ Web 服务启动成功'
|
||||
else
|
||||
echo ' ✗ Web 服务启动失败'
|
||||
cat ${REMOTE_DEMO}/web.log | tail -20
|
||||
exit 1
|
||||
fi
|
||||
"
|
||||
|
||||
# 5. 验证
|
||||
echo ""
|
||||
echo "[5/5] 验证..."
|
||||
if curl -s --max-time 10 http://sale.all8ai.top/api/products | grep -q '"id"' 2>/dev/null; then
|
||||
echo " ✓ 域名访问正常: http://sale.all8ai.top"
|
||||
else
|
||||
echo " ⚠ 域名访问异常,请检查 Nginx 配置"
|
||||
fi
|
||||
|
||||
PRODUCT_COUNT=$(ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} \
|
||||
"curl -s http://127.0.0.1:8770/api/products | python3 -c 'import sys,json; print(len(json.load(sys.stdin)))'" 2>/dev/null || echo "?")
|
||||
echo " ✓ 产品数量: ${PRODUCT_COUNT}"
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo " ✓ 部署完成!"
|
||||
echo "=========================================="
|
||||
echo " 访问地址: http://sale.all8ai.top"
|
||||
echo " API 文档: http://sale.all8ai.top/docs"
|
||||
echo "=========================================="
|
||||
Reference in New Issue
Block a user