#!/bin/bash
# start-watcher.sh — 用 venv python 起 watcher（系統 python3 冇 playwright 會 ImportError）。
# 用法：bash start-watcher.sh [--once] [seat ...]；無 seat 參數＝由 seats.conf 讀全部 ≥5 欄席位。
# 每個席位寫 run/watcher-<seat>.pid，keep 靠 PID 檢查（唔用 pgrep：pgrep 會 self-match 假陽性）。
set -euo pipefail
HERE="$(cd "$(dirname "$0")" && pwd)"
. "$HERE/env.sh"
WATCHER="$ARENA_HOME/scripts/watcher.py"
mkdir -p "$ARENA_HOME/logs" "$ARENA_HOME/local-profiles" "$ARENA_HOME/run"
[ -x "$VENV/bin/python" ] || { echo "❌ 冇 venv：$VENV（跑 setup.sh）"; exit 2; }
[ -f "$WATCHER" ] || { echo "❌ 冇 watcher.py：$WATCHER"; exit 2; }
ONCE=""; [ "${1:-}" = "--once" ] && { ONCE="--once"; shift; }
SEATS_ARG="$*"
[ -z "$SEATS_ARG" ] && SEATS_ARG="$(awk '!/^#/ && NF>=5 {print $1}' "$ARENA_HOME/seats.conf")"   # ≥5 欄＝同 patched watcher 一致
N5=$(awk '!/^#/ && NF==5' "$ARENA_HOME/seats.conf" 2>/dev/null | wc -l)
[ "${N5:-0}" -gt 0 ] && echo "⚠️  seats.conf 有 $N5 行係 5 欄：原版 watcher 會靜默掉行（要收就要 bash hardening-apply.sh）；最穩＝一律寫足 6 欄。"
for s in $SEATS_ARG; do
  pidf="$ARENA_HOME/run/watcher-$s.pid"
  if [ -f "$pidf" ] && kill -0 "$(cat "$pidf")" 2>/dev/null; then echo "• $s 已在生（PID $(cat "$pidf")）"; continue; fi
  DISPLAY=$DISPLAY nohup "$VENV/bin/python" "$WATCHER" "$s" $ONCE >> "$ARENA_HOME/logs/watcher-$s.console.log" 2>&1 &
  echo $! > "$pidf"
  echo "▶ 起咗 $s（PID $(cat "$pidf")）"
done
