import json, os, glob
from datetime import datetime, timezone, timedelta
PROJ = "/home/tuan-nguyen/.openclaw/workspace/003-tang-chi-bo-giang-giai"
tz = timezone(timedelta(hours=7))

if not os.path.exists(f"{PROJ}/progress-ocr.json"):
    print("ERROR: progress-ocr.json not found")
    exit(1)

with open(f"{PROJ}/progress-ocr.json") as f: data = json.load(f)
notes = {os.path.basename(x).replace("-notes.md","") for x in glob.glob(f"{PROJ}/edited-notes/gemini-flash/*.md")}
edited = {os.path.basename(x).replace(".md","") for x in glob.glob(f"{PROJ}/edited/gemini-flash/*.md")}

# ƯU TIÊN 1: Check batch in_progress (resume/stuck)
for b in data["batches"]:
    if b["status"] == "in_progress":
        has_out = b["name"] in edited
        has_notes = b["name"] in notes
        started = datetime.fromisoformat(b["started_at"]) if b.get("started_at") else None
        elapsed = (datetime.now(tz) - started).total_seconds()/60 if started else 999
        if not has_out or not has_notes:
            if elapsed > 15:
                b["status"] = "pending"
                print(f"STUCK:{b['name']} (no output after {elapsed:.0f}min) -> RESET")
            else:
                print(f"SKIP:{b['name']} (another session running)")
                exit(0)
        else:
            b["status"] = "done"
            b["completed_at"] = datetime.now(tz).isoformat()
            print(f"RECOVER:{b['name']} -> done (was forgotten)")
            with open(f"{PROJ}/progress-ocr.json","w") as f: json.dump(data, f, indent=2, ensure_ascii=False)
            exit(0)

# ƯU TIÊN 2: Chọn batch pending đầu tiên
target = None
for b in data["batches"]:
    if b["name"] not in edited or b["name"] not in notes:
        target = b; break
if target is None:
    print("ALL_DONE"); exit(0)
target["status"] = "in_progress"
target["started_at"] = datetime.now(tz).isoformat()
print(f"PROCESS:{target['name']}:{target['pages']}")

with open(f"{PROJ}/progress-ocr.json","w") as f: json.dump(data, f, indent=2, ensure_ascii=False)
