#!/bin/bash
DIR="$(cd "$(dirname "$0")" && pwd)"

echo ""
echo "============================================================"
echo "  AIPM 本地转写服务 启动器"
echo "============================================================"
echo ""

# ── 0) 防冲突：检测并清理占用 8765 端口的旧进程 ──
echo "[0/2] 检查端口 8765 ..."
OLD_PID=$(lsof -ti:8765 2>/dev/null || ss -tlnp 2>/dev/null | grep ':8765' | grep -oP 'pid=\K\d+' || true)
if [ -n "$OLD_PID" ]; then
  echo "  [!] 端口 8765 已被占用（PID=$OLD_PID），正在关闭旧服务..."
  kill "$OLD_PID" 2>/dev/null
  sleep 1
  # 强杀
  kill -9 "$OLD_PID" 2>/dev/null
  echo "  [OK] 旧进程已关闭"
else
  echo "      端口空闲，可以启动"
fi

# ── 1) 查找 Python 运行环境 ──
echo "[1/2] 检测 Python 运行环境..."
if [ -x "$DIR/venv/bin/python3" ]; then
  PY="$DIR/venv/bin/python3"
elif [ -x "$DIR/python313/python3" ]; then
  PY="$DIR/python313/python3"
elif [ -n "$MEETING_VENV" ] && [ -x "$MEETING_VENV/bin/python3" ]; then
  PY="$MEETING_VENV/bin/python3"
elif command -v python3 >/dev/null 2>&1; then
  PY="$(command -v python3)"
else
  echo "  [X] 未找到 Python，请先运行 install.sh 安装依赖。"
  exit 1
fi
echo "      找到：$PY"

# ── 2) 启动服务 ──
echo "[2/2] 启动转写服务..."
export WHISPER_MODEL=${WHISPER_MODEL:-small}
export WHISPER_COMPUTE=int8
export WHISPER_BEAM=1
export HF_HUB_DISABLE_XET=1
export HF_ENDPOINT=https://hf-mirror.com

echo ""
echo "  模型 $WHISPER_MODEL | 精度 $WHISPER_COMPUTE | beam $WHISPER_BEAM"
echo "  监听地址 http://127.0.0.1:8765"
echo ""
"$PY" "$DIR/server.py" > "$DIR/server.log" 2>&1 &
sleep 2
(xdg-open "http://127.0.0.1:8765/monitor" 2>/dev/null || open "http://127.0.0.1:8765/monitor" 2>/dev/null) &
echo ""
echo "  ✅ 服务已启动！自动打开【桌面悬浮进度窗】。"
echo ""
echo "  使用说明："
echo "    · 停止服务：pkill -f 'server.py'"
echo "    · 日志文件：$DIR/server.log"
echo "    · 回到 AIPM 会议纪要页面上传录音即可转写"
echo "    · 更新插件后重新执行本脚本即可自动重启"
echo ""
