chore(deploy): 新增 bioflow_switch_restart.sh 切分支→重启→验证规范脚本
This commit is contained in:
Executable
+91
@@ -0,0 +1,91 @@
|
||||
#!/bin/bash
|
||||
# deploy/bioflow_switch_restart.sh —— 切分支后重启生信相关服务并验证
|
||||
#
|
||||
# 背景:QA(8091)/前端(5180)/bioflow_service(8098) 都是「启动时刻」快照,
|
||||
# 切分支后不重启就会跑旧分支的代码/配置(曾导致「设置面板无生信开关」+
|
||||
# 「规划降级」两个问题)。本脚本把「切分支→重启→验证」固化,避免再踩。
|
||||
#
|
||||
# 用法:bash deploy/bioflow_switch_restart.sh [分支名]
|
||||
# 分支名缺省 feature/bioflow-skill-orchestration
|
||||
#
|
||||
# 重启:QA(8091) + bioflow_service(8098) + 前端 vite(5180)
|
||||
# BFF(8090) 不重启:/api/capabilities 每次请求动态拉 QA registry,QA 重启后自动生效
|
||||
# 验证:服务健康 + QA registry 生信能力 + 前端 SettingsPanel 生信三开关
|
||||
#
|
||||
# 关键点(勿删):
|
||||
# - QA 需 source agent/qa/env/prod.env + 强制 QA_V1_ENABLE_BIOFLOW_AGENT=1(熔断开)
|
||||
# - 8098 裸启动即可:main.py 已内置 load_dotenv,自动加载 bioflow_service/.env
|
||||
# - 前端 pkill 用「zh/PlantAI-rag-new/ui/」精确匹配,避免误杀 5181(wjq 仓库) 的 vite
|
||||
set -uo pipefail
|
||||
|
||||
ROOT="/home/xzq/5090/teamWorkspace/zh/PlantAI-rag-new"
|
||||
VENV="/home/xzq/5090/teamWorkspace/zh/plantai-rag-new-venv/bin/python"
|
||||
BRANCH="${1:-feature/bioflow-skill-orchestration}"
|
||||
PASS=0; FAIL=0
|
||||
|
||||
ok() { PASS=$((PASS+1)); echo " ✅ $1"; }
|
||||
bad() { FAIL=$((FAIL+1)); echo " ❌ $1"; }
|
||||
|
||||
echo "======== 1. 切分支 ========"
|
||||
cd "$ROOT" || { echo "仓库目录不存在: $ROOT"; exit 1; }
|
||||
git checkout "$BRANCH" || { echo "切分支失败: $BRANCH"; exit 1; }
|
||||
echo "当前分支: $(git branch --show-current)"
|
||||
|
||||
echo ""
|
||||
echo "======== 2. 重启 QA (8091) ========"
|
||||
pkill -f "scripts.qa_v1_1_73_server" 2>/dev/null; sleep 2
|
||||
cd "$ROOT/agent/qa"
|
||||
set -a; source env/prod.env; set +a
|
||||
export QA_V1_ENABLE_BIOFLOW_AGENT=1 # 生信对话熔断开关,切生信分支必须开
|
||||
nohup "$VENV" -m uvicorn scripts.qa_v1_1_73_server:app --host 127.0.0.1 --port 8091 \
|
||||
> /tmp/plantai-qa-8091.log 2>&1 < /dev/null &
|
||||
disown
|
||||
|
||||
echo ""
|
||||
echo "======== 3. 重启 bioflow_service (8098) ========"
|
||||
pkill -f "app.main:app.*port 8098" 2>/dev/null; sleep 2
|
||||
cd "$ROOT/bioflow_service"
|
||||
nohup "$VENV" -m uvicorn app.main:app --host 127.0.0.1 --port 8098 \
|
||||
> /tmp/plantai-bioflow-8098.log 2>&1 < /dev/null &
|
||||
disown
|
||||
|
||||
echo ""
|
||||
echo "======== 4. 重启前端 vite (5180) ========"
|
||||
pkill -f "zh/PlantAI-rag-new/ui/node_modules/.bin/vite" 2>/dev/null; sleep 2
|
||||
cd "$ROOT/ui"
|
||||
VITE_BFF_TARGET="http://127.0.0.1:8090" setsid npm run dev \
|
||||
> /tmp/plantai-vite.log 2>&1 < /dev/null &
|
||||
disown
|
||||
|
||||
echo ""
|
||||
echo "等待服务启动 (12s)..."
|
||||
sleep 12
|
||||
|
||||
echo ""
|
||||
echo "======== 5. 验证 ========"
|
||||
|
||||
echo "[健康检查]"
|
||||
c=$(curl -s -m 3 -o /dev/null -w "%{http_code}" http://127.0.0.1:8098/docs 2>/dev/null)
|
||||
[ "$c" = "200" ] && ok "8098 bioflow_service /docs=$c" || bad "8098 bioflow_service /docs=$c(见 /tmp/plantai-bioflow-8098.log)"
|
||||
c=$(curl -s -m 3 -o /dev/null -w "%{http_code}" http://127.0.0.1:8091/api/v1/qa-v1-1-73/capabilities/registry 2>/dev/null)
|
||||
[ "$c" = "200" ] && ok "8091 QA registry=$c" || bad "8091 QA registry=$c(见 /tmp/plantai-qa-8091.log)"
|
||||
c=$(curl -s -m 3 -o /dev/null -w "%{http_code}" http://127.0.0.1:5180/ 2>/dev/null)
|
||||
[ "$c" = "200" ] && ok "5180 前端 =$c" || bad "5180 前端 =$c(见 /tmp/plantai-vite.log)"
|
||||
|
||||
echo "[生信能力注册]"
|
||||
REG=$(curl -s -m 5 http://127.0.0.1:8091/api/v1/qa-v1-1-73/capabilities/registry 2>/dev/null)
|
||||
BIO=$(echo "$REG" | grep -o '"name":"bioflow-[a-z-]*"' | wc -l)
|
||||
[ "$BIO" -ge 3 ] && ok "QA registry 生信能力 $BIO 个(期望 3)" || bad "QA registry 生信能力仅 $BIO 个(期望 3)"
|
||||
|
||||
echo "[前端生信三开关]"
|
||||
SW=$(curl -s -m 5 -H "Accept: */*" "http://127.0.0.1:5180/src/components/settings/SettingsPanel.vue" 2>/dev/null | grep -c "settingsBioflow\|bioflowCaps")
|
||||
[ "$SW" -ge 2 ] && ok "前端 SettingsPanel 含「生信分析能力」三开关" || bad "前端 SettingsPanel 无生信三开关(可能旧代码,需硬刷新浏览器)"
|
||||
|
||||
echo ""
|
||||
echo "======== 结果: $PASS 通过 / $FAIL 失败 ========"
|
||||
if [ "$FAIL" -eq 0 ]; then
|
||||
echo "✅ 全部就绪。浏览器请 Ctrl+Shift+R 硬刷新(清缓存),再测生信对话。"
|
||||
else
|
||||
echo "❌ 有失败项,请查看 /tmp/plantai-qa-8091.log /tmp/plantai-bioflow-8098.log /tmp/plantai-vite.log"
|
||||
fi
|
||||
exit "$FAIL"
|
||||
Reference in New Issue
Block a user