#!/usr/bin/env bash
# 在 Docker 容器内后台启动 pdf_converter_v2 API 服务，并写日志
# 使用：在 Clerk2.5 或 pdf_converter_v2 下执行 bash pdf_converter_v2/scripts/start_api_in_container.sh
# 工作目录：脚本会自动进入 pdf_converter_v2 所在目录
# 日志：默认 $CLERK_ROOT/logs/pdf-converter-v2-api.log，可通过 PDF_CONVERTER_API_LOG 覆盖
# 端口：默认 4214，可通过 PDF_CONVERTER_API_PORT 覆盖

set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
CLERK_ROOT="${CLERK_ROOT:-$(cd "$PROJECT_ROOT/.." 2>/dev/null && pwd || echo "$PROJECT_ROOT")}"
PORT="${PDF_CONVERTER_API_PORT:-4214}"
LOG_DIR="${CLERK_ROOT}/logs"
LOG_FILE="${PDF_CONVERTER_API_LOG:-${LOG_DIR}/pdf-converter-v2-api.log}"
PID_FILE="${LOG_DIR}/pdf-converter-v2-api.pid"

# NPU 容器内：PaddleOCR 走 NPU，MinerU 用 pipeline
export PADDLE_OCR_DEVICE="${PADDLE_OCR_DEVICE:-npu:0}"
export BACKEND="${BACKEND:-pipeline}"
export API_URL="${API_URL:-http://127.0.0.1:5282}"

mkdir -p "$LOG_DIR"
cd "$PROJECT_ROOT"

# 若已有 PID 文件且进程存在，先提示
if [ -f "$PID_FILE" ]; then
  OLD_PID=$(cat "$PID_FILE")
  if kill -0 "$OLD_PID" 2>/dev/null; then
    echo "已有进程在运行 PID=$OLD_PID，日志: $LOG_FILE" >&2
    exit 1
  fi
  rm -f "$PID_FILE"
fi

nohup python3 api_server.py --host 0.0.0.0 --port "$PORT" >> "$LOG_FILE" 2>&1 &
echo $! > "$PID_FILE"
echo "已后台启动 pdf_converter_v2 API，端口 $PORT"
echo "  PID:  $(cat $PID_FILE)"
echo "  日志: $LOG_FILE"
echo "  查看: tail -f $LOG_FILE"
