#!/usr/bin/env bash
# Stop all LLM services

set -euo pipefail

LOG_DIR="/lsinfo/ai/hellotax_ai/llm_service/logs"

echo "=========================================="
echo "Stopping all LLM services..."
echo "=========================================="

# Stop vLLM
if [[ -f "${LOG_DIR}/vllm-8100.pid" ]]; then
  PID=$(cat "${LOG_DIR}/vllm-8100.pid")
  if kill -0 "$PID" 2>/dev/null; then
    echo "Stopping vLLM (PID $PID)..."
    kill "$PID"
    rm -f "${LOG_DIR}/vllm-8100.pid"
  else
    echo "vLLM not running (stale PID file)"
    rm -f "${LOG_DIR}/vllm-8100.pid"
  fi
else
  echo "vLLM not running (no PID file)"
fi

# Stop embedding service
if [[ -f "${LOG_DIR}/embedding-8200.pid" ]]; then
  PID=$(cat "${LOG_DIR}/embedding-8200.pid")
  if kill -0 "$PID" 2>/dev/null; then
    echo "Stopping embedding service (PID $PID)..."
    kill "$PID"
    rm -f "${LOG_DIR}/embedding-8200.pid"
  else
    echo "Embedding service not running (stale PID file)"
    rm -f "${LOG_DIR}/embedding-8200.pid"
  fi
else
  echo "Embedding service not running (no PID file)"
fi

# Stop reranker service
if [[ -f "${LOG_DIR}/reranker-8300.pid" ]]; then
  PID=$(cat "${LOG_DIR}/reranker-8300.pid")
  if kill -0 "$PID" 2>/dev/null; then
    echo "Stopping reranker service (PID $PID)..."
    kill "$PID"
    rm -f "${LOG_DIR}/reranker-8300.pid"
  else
    echo "Reranker service not running (stale PID file)"
    rm -f "${LOG_DIR}/reranker-8300.pid"
  fi
else
  echo "Reranker service not running (no PID file)"
fi

# Stop LLaMA-Factory WebUI
if [[ -f "${LOG_DIR}/llamafactory-7860.pid" ]]; then
  PID=$(cat "${LOG_DIR}/llamafactory-7860.pid")
  if kill -0 "$PID" 2>/dev/null; then
    echo "Stopping LLaMA-Factory WebUI (PID $PID)..."
    kill "$PID"
    rm -f "${LOG_DIR}/llamafactory-7860.pid"
  else
    echo "LLaMA-Factory not running (stale PID file)"
    rm -f "${LOG_DIR}/llamafactory-7860.pid"
  fi
else
  echo "LLaMA-Factory not running (no PID file)"
fi

# Fallback: kill by port
echo ""
echo "Checking for any remaining processes on ports 8100, 8200, 8300, 7860..."
for port in 8100 8200 8300 7860; do
  PID=$(lsof -ti:$port 2>/dev/null || true)
  if [[ -n "$PID" ]]; then
    echo "Killing process on port $port (PID $PID)..."
    kill "$PID" 2>/dev/null || true
  fi
done

echo ""
echo "=========================================="
echo "All services stopped."
echo "=========================================="
