#!/bin/bash
# 2026-10-08 owner 指示：一次只開一個瀏覽器，輪流推
# 機制：rotation-seats.txt 定義席位（每行一隻）；rotation-turn.txt 記低而家輪到邊隻；
# watcher 成功／暫停後會自己退出；呢個 loop 就開下一隻。
# 任何時間只得一個 watcher＋一個 Chrome，慳 RAM。
# 本地專用，唔上 server，唔影響議會版本。
set -u
cd ~/workspace/arena-system || exit 1
export DISPLAY=:98

TURN_FILE="$HOME/workspace/arena-system/rotation-turn.txt"
PAUSED_FILE="$HOME/workspace/arena-system/rotation-paused.txt"
SEATS_FILE="$HOME/workspace/arena-system/rotation-seats.txt"

log() { echo "[$(date '+%F %T')] [COORD] $*";}

# 讀席位清單
read_seats() {
if [ -f "$SEATS_FILE" ]; then
grep -v '^$' "$SEATS_FILE" | tr -d ' \r'
else
printf "A2\nA3\nA4\n"
fi
}

# 俾定席位，搵下一隻（跳過暫停）
next_seat() {
local cur="$1"
local seats=($(read_seats))
local n=${#seats[@]}
local i=0
# 搵 cur 嘅 index
for ((i=0; i<n; i++)); do
[ "${seats[$i]}" = "$cur" ] && break
done
# 向後搵第一隻冇暫停嘅
for ((k=1; k<=n; k++)); do
local nxt="${seats[$(( (i+k) % n))]}"
if [! -f "$PAUSED_FILE" ] ||! grep -qx "$nxt" "$PAUSED_FILE" 2>/dev/null; then
echo "$nxt"
return
fi
done
echo "" # 全部暫停
}

# 初始化 turn 檔
if [! -f "$TURN_FILE" ]; then
read_seats | head -1 > "$TURN_FILE"
fi

while true; do
TURN=$(cat "$TURN_FILE" 2>/dev/null | tr -d ' \r\n')
# 驗證 TURN 係咪有效席位
if ! read_seats | grep -qx "$TURN" 2>/dev/null; then
TURN=$(read_seats | head -1)
echo "$TURN" > "$TURN_FILE"
fi

# 如果呢隻暫停咗，跳去下一隻
if [ -f "$PAUSED_FILE" ] && grep -qx "$TURN" "$PAUSED_FILE" 2>/dev/null; then
log "$TURN 已暫停，跳過"
NEXT=$(next_seat "$TURN")
if [ -z "$NEXT" ]; then
log "全部席位暫停，瞓 60 秒"
sleep 60
continue
fi
echo "$NEXT" > "$TURN_FILE"
continue
fi

log "開 $TURN（一次一個瀏覽器）"
pkill -f "scripts/watcher.py $TURN" 2>/dev/null
sleep 1

./venv/bin/python scripts/watcher.py "$TURN" >> "logs/watcher-$TURN.log" 2>&1
RC=$?
log "$TURN 退出（rc=$RC），2 秒後開下一隻"
sleep 2
done
