#!/usr/bin/env bash
# Start Qwen3-Reranker-8B via transformers on port 8300
# API: http://localhost:8300/v1/rerank

set -euo pipefail

MODEL_PATH="/lsinfo/ai/hellotax_ai/llm_service/base_models/bge-reranker-v2-m3"
PORT=8300
LOG_FILE="/lsinfo/ai/hellotax_ai/llm_service/logs/reranker-${PORT}.log"
PID_FILE="/lsinfo/ai/hellotax_ai/llm_service/logs/reranker-${PORT}.pid"

mkdir -p "$(dirname "$LOG_FILE")"

# Check if already running
if [[ -f "$PID_FILE" ]] && kill -0 "$(cat "$PID_FILE")" 2>/dev/null; then
  echo "Reranker service already running (PID $(cat "$PID_FILE"))"
  exit 0
fi

export RERANK_MODEL_PATH="/lsinfo/ai/hellotax_ai/llm_service/base_models/bge-reranker-v2-m3"
export SERVED_MODEL_NAME="bge-reranker-v2-m3"
export RERANK_DEVICE="cuda"

echo "Starting transformers reranker server — Qwen3-Reranker-8B on port ${PORT}..."

nohup /lsinfo/ai/hellotax_ai/llm_service/venv_embed/bin/python \
  /lsinfo/ai/hellotax_ai/llm_service/servers/rerank_server.py \
  --host 0.0.0.0 --port "${PORT}" \
  > "${LOG_FILE}" 2>&1 &

echo $! > "${PID_FILE}"
echo "PID $(cat "$PID_FILE") — log: ${LOG_FILE}"

# Wait for service to be ready
echo -n "Waiting for reranker service to be ready"
for i in $(seq 1 30); do
  if curl -sf http://localhost:${PORT}/health > /dev/null 2>&1; then
    echo " ready."
    exit 0
  fi
  echo -n "."
  sleep 3
done
echo " timeout. Check log: ${LOG_FILE}"
exit 1
