#!/usr/bin/env bash
# stop_live.sh — Lv2 ライブ参加システム 停止スクリプト
#
# 使い方:
#   ./stop_live.sh           # transcribe停止のみ
#   ./stop_live.sh --clean   # + chunks/ の残骸wavも削除

set -uo pipefail

LIVE_DIR="$(cd "$(dirname "$0")" && pwd)"
PID_FILE="$LIVE_DIR/.live.pid"
CHUNKS_DIR="$LIVE_DIR/chunks"

CLEAN=false
if [ "${1:-}" = "--clean" ]; then
  CLEAN=true
fi

# ================ transcribe.sh 停止 ================
if [ -f "$PID_FILE" ]; then
  PID="$(cat "$PID_FILE" 2>/dev/null || true)"
  if [ -n "$PID" ] && kill -0 "$PID" 2>/dev/null; then
    kill -INT "$PID" 2>/dev/null || kill -TERM "$PID" 2>/dev/null || true
    # 終了待ち（最大5秒）
    for i in $(seq 1 10); do
      kill -0 "$PID" 2>/dev/null || break
      sleep 0.5
    done
    if kill -0 "$PID" 2>/dev/null; then
      kill -9 "$PID" 2>/dev/null || true
    fi
    echo "✅ 文字起こし停止（PID ${PID}）"
  else
    echo "ℹ️  transcribe.sh は既に停止済み（PID: ${PID:-不明}）"
  fi
  rm -f "$PID_FILE"
else
  echo "ℹ️  .live.pid が見つからない（既に停止済みかも）"
fi

# 念のため残存プロセスも確認
LEFTOVER="$(pgrep -f "transcribe.sh" 2>/dev/null || true)"
if [ -n "$LEFTOVER" ]; then
  echo "$LEFTOVER" | xargs kill -TERM 2>/dev/null || true
  echo "ℹ️  残存 transcribe.sh プロセスも停止"
fi

# ================ chunks/ 残骸WAV削除（--clean時のみ） ================
if [ "$CLEAN" = true ]; then
  if [ -d "$CHUNKS_DIR" ]; then
    WAV_COUNT="$(find "$CHUNKS_DIR" -name "*.wav" 2>/dev/null | wc -l | tr -d ' ')"
    if [ "$WAV_COUNT" -gt 0 ]; then
      find "$CHUNKS_DIR" -name "*.wav" -delete 2>/dev/null || true
      echo "🗑️  chunks/ の .wav $WAV_COUNT 件を削除"
    else
      echo "ℹ️  chunks/ に .wav なし"
    fi
  fi
fi

# ================ dashboard は止めない ================
echo ""
echo "✅ 停止完了"
echo "   ※ dashboard (http://localhost:8765) は他のJarvisが使っている可能性があるため停止しない"
echo "   ※ 停止する場合: kill \$(cat \"$LIVE_DIR/../../../dashboard/.server.pid\" 2>/dev/null)"
