#!/usr/bin/env python3
"""Override manual (preseden 13 Okt 2026): buat post artikel Tslaw 17:00 WIB.

Guard schedule_all_threads men-skip karena post 09:00 (pipeline share poster) memuat
link HOMEPAGE 'https://tslaw.id' — bukan link artikel. Pola yang sama terjadi 13 Okt 2026
dan saat itu post artikel 17:00 tetap dibuat manual. Script ini meniru hal itu + mencatat log.
"""
import json, re, sys
from datetime import datetime, timedelta, timezone
sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import get_client, ACC

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
WIB = timezone(timedelta(hours=7))
DATE = "2026-10-17"
SLOT = 17

content = json.load(open(f"{WS}/threads_content_today.json"))
item = [a for a in content["accounts"] if a["account"] == "tslaw"][0]
text = item["text"]
assert "tslaw.id/" in text, "caption tslaw wajib memuat link ARTIKEL tslaw.id"

client = get_client()
ST = "2026-10-17T10:00:00.000Z"  # 17:00 WIB

# 1) pastikan belum ada jadwal tslaw di jam itu
docs = []
for p in range(1, 40):
    got = client.get_schedules(page=p, limit=100)
    b = got.get("docs", [])
    if not b:
        break
    docs.extend(b)
    if len(b) < 100:
        break
bentrok = [d for d in docs if d.get("accountId") == ACC.TSLAW_THREADS and d.get("scheduleAt") == ST]
if bentrok:
    print("⛔ sudah ada jadwal di slot itu:", [d.get("_id") for d in bentrok])
    sys.exit(1)

r = client.create_schedule(ACC.TSLAW_THREADS, text, ST,
                           title=item.get("title") or "tslaw Legalitas Usaha 2026-10-17",
                           topic=item.get("topic") or "Legalitas Usaha",
                           replies=[])
sid = r.get("scheduleId") or r.get("_id") or r.get("id") or "?"
print("✅ create:", sid, r)

# 2) verifikasi dari API
docs2 = client.get_schedules(page=1, limit=100)
all2 = list(docs2.get("docs", []))
for p in range(2, 40):
    g = client.get_schedules(page=p, limit=100)
    b = g.get("docs", [])
    if not b:
        break
    all2.extend(b)
    if len(b) < 100:
        break
d = [x for x in all2 if x.get("_id") == sid]
d = d[0] if d else None
URL_RE = re.compile(r"https?://\S+")

if d:
    desc = d.get("description") or ""
    urls = URL_RE.findall(desc)
    print("   verifikasi: status=%s len=%d urls=%s replies=%s topic=%s title=%s"
          % (d.get("status"), len(desc), urls, len(d.get("replies") or []),
             d.get("topic"), d.get("title")))
else:
    print("   ⚠️ tidak ditemukan di API — cek manual")

# 3) catat ke log anti-redundant
log = json.load(open(f"{WS}/log_threads_harian.json"))
log["last_date"] = DATE
log["posts"].append({"date": DATE, "threads_override_manual": [
    {"account": "tslaw", "slot": SLOT, "status": "ok", "id": sid, "scheduleAt": ST,
     "note": "guard skip karena post 09:00 share hanya memuat link homepage https://tslaw.id (bukan link artikel); preseden 13 Okt 2026"}]})
log.setdefault("threads_used_links", {}).setdefault(DATE, {}).setdefault("tslaw", []).append(
    {"url": re.findall(r"https?://\S+", text)[-1], "slot": SLOT, "scheduleAt": ST})
json.dump(log, open(f"{WS}/log_threads_harian.json", "w"), ensure_ascii=False, indent=2)
print("✅ log diperbarui")
