#!/bin/bash # deploy/toggle_bioflow_176.sh —— 176 生信模块快速开关(off/on) # 用法(在 176 上执行,或从 175 ssh 过去执行): # bash /srv/plantai/toggle_bioflow_176.sh off # 关生信:env=false + 重启 BFF → 生信 TAB/入口消失 # bash /srv/plantai/toggle_bioflow_176.sh on # 开生信:env=true + 重启 BFF → 生信 TAB 恢复 # 原理:BFF main.py 按 BIOFLOW_ENABLED 决定是否注册 bioflow 反代路由; # 不注册时 /api/bioflow/health 返回 404,前端 probe 落 offline,生信 TAB 自动隐藏。 set -uo pipefail ACTION="${1:-}" ENV_FILE="/srv/plantai/install/sdk/.env" PY="/srv/plantai/install/venv/bin/python" if [ "$ACTION" != "off" ] && [ "$ACTION" != "on" ]; then echo "用法: $0 " >&2 exit 2 fi VAL="true" [ "$ACTION" = "off" ] && VAL="false" # 1. 改 env if grep -q "^BIOFLOW_ENABLED=" "$ENV_FILE"; then sed -i "s/^BIOFLOW_ENABLED=.*/BIOFLOW_ENABLED=$VAL/" "$ENV_FILE" else echo "BIOFLOW_ENABLED=$VAL" >> "$ENV_FILE" fi echo "BIOFLOW_ENABLED -> $VAL" # 2. 重启 BFF 8090(仅取 LISTEN 者;venv 必须绝对路径,cd sdk 后才能 import app.main) kill $(lsof -ti tcp:8090 -sTCP:LISTEN) 2>/dev/null sleep 2 cd /srv/plantai/install && set -a && . sdk/.env && set +a ( cd sdk && setsid "$PY" -m uvicorn app.main:app --host 127.0.0.1 --port 8090 \ > /tmp/plantai-sdk.log 2>&1 < /dev/null & ) && disown -a # 3. 自检 for i in $(seq 1 20); do sleep 2 curl -s -m 3 http://127.0.0.1:8090/api/health >/dev/null 2>&1 && break done curl -s -m 10 http://127.0.0.1:8090/api/health | head -c 150 echo if [ "$ACTION" = "off" ]; then CODE=$(curl -s -o /dev/null -w "%{http_code}" -m 8 http://127.0.0.1:8090/api/bioflow/health) echo "bioflow/health HTTP $CODE (off 期望 404)" [ "$CODE" = "404" ] && echo "OFF_OK" || echo "OFF_CHECK_FAIL" else curl -s -m 8 http://127.0.0.1:8090/api/bioflow/health | head -c 150 echo fi