#!/usr/bin/env python3
"""Hapus duplikat storytelling (cerita sama muncul 2x di tanggal beda) — sisakan yang paling awal."""
import sys, json, urllib.request
sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import HEADERS, BASE

UKY_T = "6a334e89c5ff4ce3a3225a48"

pend = []
for p in range(1, 80):
    raw = urllib.request.Request(f"{BASE}/public/schedule?page={p}&limit=100", headers=HEADERS)
    with urllib.request.urlopen(raw, timeout=30) as r:
        docs = json.load(r)["docs"]
    for d in docs:
        if d.get("accountId") == UKY_T and (d.get("status") or "").lower() == "pending":
            desc = d.get("description") or ""
            if "Storytelling" in (d.get("topic") or "") or "#Storytelling" in desc:
                pend.append(d)

# grup berdasarkan potongan judul (awal 30 char dari title tanpa prefix 'Cerita: ')
from collections import defaultdict
groups = defaultdict(list)
for d in pend:
    t = (d.get("title") or "").replace("Cerita: ", "").strip()
    # normalisasi: potong 25 char pertama sebagai kunci
    key = t[:25].lower()
    groups[key].append(d)

print(f"total storytelling: {len(pend)}")
to_delete = []
for key, items in groups.items():
    if len(items) > 1:
        items_sorted = sorted(items, key=lambda x: x.get("scheduleAt") or "")
        keep = items_sorted[0]
        for dup in items_sorted[1:]:
            to_delete.append((keep, dup))
            print(f"  DUP: {key[:35]}")
            print(f"    KEEP {keep.get('scheduleAt')} | {keep['id']}")
            print(f"    DEL  {dup.get('scheduleAt')} | {dup['id']}")

if len(sys.argv) > 1 and sys.argv[1] == "exec":
    print("\n=== DELETE ===")
    for keep, dup in to_delete:
        req = urllib.request.Request(f"{BASE}/public/schedule/{dup['id']}", headers=HEADERS, method="DELETE")
        with urllib.request.urlopen(req, timeout=30) as r:
            print(f"  ✅ DEL {dup['id']} ({dup.get('scheduleAt')})")
else:
    print(f"\n(dry-run — {len(to_delete)} akan dihapus)")
