#!/bin/bash
# BMC1 Auto-Dispatcher
# Chạy mỗi 10 phút bởi cron. Mỗi lần spawn translator cho 1 file chưa xử lý.
# Dùng openclaw agent --agent translator (CLI) để không bị hạn chế agentId.

WORKSPACE="/home/tuan-nguyen/.openclaw/workspace/Buddist-Monastic-Code-1"
BATCH_LOG="$WORKSPACE/revised/BATCH-LOG.txt"

# Kiểm tra có translator subagent đang chạy không
# Dùng pgrep để check tiến trình openclaw agent --agent translator
PIDS=$(pgrep -f "openclaw.*agent.*--agent translator" 2>/dev/null || true)
RUNNING=$(echo "$PIDS" | grep -c . 2>/dev/null || echo 0)
# Nếu pgrep trả về empty, grep -c trả về 0
[ -z "$PIDS" ] && RUNNING=0
# Trim whitespace
RUNNING=$((RUNNING))

# Cũng check xem có file đang được xử lý (lock file) không
LOCK_FILE="/tmp/bmc1-dispatcher.lock"
if [ -f "$LOCK_FILE" ]; then
  LOCK_AGE=$(( $(date +%s) - $(stat -c %Y "$LOCK_FILE") ))
  if [ "$LOCK_AGE" -lt 300 ]; then
    echo "Lock còn hiệu lực ($LOCK_AGE giây), bỏ qua."
    exit 0
  else
    echo "Lock cũ ($LOCK_AGE giây), ghi đè."
  fi
fi

touch "$LOCK_FILE"

# Đếm số file đã hoàn thành
cd "$WORKSPACE"
DONE_COUNT=$(ls revised/buddhistmonasticcode_vi_*.md 2>/dev/null | wc -l)
echo "📊 BMC1: $DONE_COUNT/52 files done"

if [ "$DONE_COUNT" -ge 52 ]; then
  echo "✅ BMC1 COMPLETE: 52/52 files done"
  echo "$(date '+%Y-%m-%d %H:%M') ALL_DONE" >> "$BATCH_LOG"
  rm -f "$LOCK_FILE"
  exit 0
fi

if [ "$RUNNING" -ge 1 ]; then
  echo "⚠️ Có $RUNNING translator đang chạy, bỏ qua lượt này."
  rm -f "$LOCK_FILE"
  exit 0
fi

# Tìm file đầu tiên chưa có trong revised/
for f in buddhistmonasticcode_vi_*.md; do
  [ ! -f "$f" ] && continue
  [ "$f" = "pdf" ] || [ "$f" = "revised" ] && continue
  if [ ! -f "revised/$f" ]; then
    ID=$(basename "$f" .md | sed 's/buddhistmonasticcode_vi_//')
    echo "🎯 Spawning translator for batch $ID..."

    # Chạy openclaw agent trong background
    openclaw agent --agent translator --model deepseek/deepseek-v4-pro \
      --message "Bạn là chuyên gia hiệu đính văn bản Phật học Theravada.

## Nhiệm vụ
Hiệu đính file: $WORKSPACE/buddhistmonasticcode_vi_${ID}.md

## Quy trình
1. Đọc:
   - Style Guide: $WORKSPACE/revised/STYLE-GUIDE.md
   - Glossary: $WORKSPACE/revised/GLOSSARY.md
   - File mẫu: $WORKSPACE/revised/buddhistmonasticcode_vi_091_100.md

2. Hiệu đính: Giữ nguyên cấu trúc markdown, số trang, chú thích Pali.
   Thay cụm lặp: điều này có nghĩa là → nghĩa là, được đề cập đến → được đề cập, có khả năng là → có thể, có vẻ như là → dường như, nó được coi là → được xem là, và vì vậy → vì vậy, đối với vị ấy → với vị ấy, mà trong đó → trong đó.
   tỳ-kheo nhất quán. KHÔNG dùng Phần thứ. KHÔNG dùng giới bản, tỳ-khưu.
   Việt tự nhiên, trang trọng.

3. Ghi output: $WORKSPACE/revised/buddhistmonasticcode_vi_${ID}.md

4. Báo cáo ngắn thay đổi chính." \
      > /tmp/bmc1-batch-$ID.log 2>&1 &

    echo "$(date '+%Y-%m-%d %H:%M') SPAWNED $ID" >> "$BATCH_LOG"
    rm -f "$LOCK_FILE"
    exit 0
  fi
done

# Hết file
echo "✅ BMC1 COMPLETE: 52/52 files done"
echo "$(date '+%Y-%m-%d %H:%M') ALL_DONE" >> "$BATCH_LOG"
rm -f "$LOCK_FILE"
exit 0
