Files
PlantAI-rag-new/agent/legacy-rag/scripts/start.sh
T
jerryandClaude Fable 5 2f82c4a8dc P4/M5: agent/legacy-rag 源码迁移(449 模块 191K 行)+ 影子 7911/7912 冒烟
- 按生产 7900 容器黄金清单迁移(compile.manifest 449 条目,0 缺失)
- 入口双态:api.app(生产同源 3 路由)/ api.main(裁剪 11 路由族 91 路径)
- 修复:advanced/__init__ 空文件(包标记误覆盖,已从主项目恢复)
- 修复:api/rag_routes.py 跨环境 site-packages 注入改 LEGACY_GF_SITE_PACKAGES 门控
- 修复:scripts/utils 缺失(动态加载 reasoning_engine)
- 影子验证:kg/stats 数据连通(6.2s,与 7900 同源 normalized 后端)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-31 14:20:41 +08:00

52 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# agent/legacy-rag/scripts/start.sh —— 旧路由族服务唯一启动接口
# 用法:bash scripts/start.sh [port] [app|main]
# app = 3 路由(生产 7900 同源,默认) / main = 11 路由裁剪版
set -euo pipefail
AGENT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
PORT="${1:-7910}"
ENTRY="${2:-app}"
ENV_FILE="${LEGACY_ENV_FILE:-$AGENT_ROOT/env/prod.env}"
LOG_FILE="${LEGACY_LOG_FILE:-/tmp/plantai-agent-legacy-$PORT.log}"
PID_FILE="$AGENT_ROOT/run/legacy-$PORT.pid"
PYTHON="${LEGACY_PYTHON:-/home/xzq/miniconda3/envs/test4py311/bin/python}"
BIND="${LEGACY_API_HOST:-127.0.0.1}"
case "$ENTRY" in
app) APP_MOD="api.app:app" ;;
main) APP_MOD="api.main:app" ;;
*) echo "未知入口: $ENTRY (app|main)" >&2; exit 2 ;;
esac
mkdir -p "$AGENT_ROOT/run"
[[ -x "$PYTHON" ]] || { echo "legacy Python 不可执行: $PYTHON" >&2; exit 1; }
[[ -f "$ENV_FILE" ]] || { echo "缺少 env 文件: $ENV_FILE" >&2; exit 1; }
if [[ -f "$PID_FILE" ]] && kill -0 "$(cat "$PID_FILE")" 2>/dev/null; then
echo "legacy-rag 已在运行 pid=$(cat "$PID_FILE")" >&2
exit 1
fi
set -a
# shellcheck disable=SC1090
. "$ENV_FILE"
set +a
cd "$AGENT_ROOT"
setsid "$PYTHON" -m uvicorn "$APP_MOD" \
--host "$BIND" --port "$PORT" \
> "$LOG_FILE" 2>&1 < /dev/null &
echo $! > "$PID_FILE"
disown
for _ in $(seq 1 30); do
if curl -sf --max-time 3 "http://127.0.0.1:$PORT/health" >/dev/null 2>&1; then
echo "legacy-rag UP ($ENTRY, $BIND:$PORT, pid=$(cat "$PID_FILE"))"
exit 0
fi
sleep 2
done
echo "legacy-rag FAIL —— 日志尾部:" >&2
tail -30 "$LOG_FILE" >&2
exit 1