#!/usr/bin/env python3
"""Susun daftar orang yang SUDAH berinteraksi dengan akun kita (bahan balasan balik) + rutinitas harian."""
import json, re, sys
from collections import Counter, defaultdict
from datetime import datetime, timezone

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
sys.path.insert(0, WS)
from repliz_client import get_client, ACC          # noqa: E402

client = get_client()
semua, page = [], 1
while True:
    d = client.get(f"/public/comment?page={page}&limit=100")
    rows = d.get("docs", []) if isinstance(d, dict) else []
    semua += rows
    if len(rows) < 100:
        break
    page += 1

NAMA_AKUN = {getattr(ACC, n): n for n in dir(ACC) if not n.startswith("_")}
orang = defaultdict(lambda: {"jumlah": 0, "akun": set(), "contoh": [], "tanggal": []})
for c in semua:
    isi = c.get("comment") if isinstance(c.get("comment"), dict) else {}
    teks_mentah = json.dumps(isi, ensure_ascii=False)
    nama = re.findall(r"\"username\":\s*\"([^\"]{2,40})\"", teks_mentah) or \
           re.findall(r"\"name\":\s*\"([^\"]{2,40})\"", teks_mentah)
    if not nama:
        continue
    for n in set(nama):
        if n.lower() in ("studioSoft", "instagram", "threads"):
            continue
        o = orang[n]
        o["jumlah"] += 1
        o["akun"].add(NAMA_AKUN.get(c.get("accountId"), "?"))
        o["tanggal"].append(str(c.get("createdAt"))[:10])
        t = str(isi.get("text") or "")[:90]
        if t:
            o["contoh"].append(t)

print(f"=== {len(orang)} orang pernah berinteraksi dengan akun kita ===\n")
for n, o in sorted(orang.items(), key=lambda x: -x[1]["jumlah"]):
    print(f"   @{n:<28} {o['jumlah']:>2}x | akun: {', '.join(sorted(o['akun']))} | terakhir {max(o['tanggal'])}")
    if o["contoh"]:
        print(f"        «{o['contoh'][0][:80]}»")

hasil = {n: {"jumlah": o["jumlah"], "akun": sorted(o["akun"]), "terakhir": max(o["tanggal"]),
             "contoh": o["contoh"][:3]} for n, o in orang.items()}
json.dump(hasil, open(f"{WS}/drafts/threads_orang_berinteraksi.json", "w"), indent=1, ensure_ascii=False)

with open(f"{WS}/drafts/rutinitas_threads_harian.md", "w") as f:
    f.write("# Rutinitas Harian Threads (bagian yang tidak bisa diotomasi)\n\n")
    f.write(f"Disusun {datetime.now(timezone.utc).strftime('%d %B %Y')} dari data balasan Repliz.\n\n")
    f.write("## 1. Balas balik yang sudah berinteraksi (10-15 menit)\n\n")
    f.write("Orang-orang ini sudah pernah berinteraksi dengan akun kita — prioritas pertama.\n\n")
    for n, o in sorted(orang.items(), key=lambda x: -x[1]["jumlah"])[:15]:
        f.write(f"- @{n} — {o['jumlah']}x, terakhir {max(o['tanggal'])}\n")
    f.write("\n## 2. Balas akun se-niche (20-30 menit)\n\n")
    f.write("Cari di kolom pencarian Threads dengan kata kunci: `digital marketing indonesia`, "
            "`agensi surabaya`, `UMKM online`, `AI untuk bisnis`, `SEO indonesia`. "
            "Balas 10-15 postingan yang benar-benar Anda punya pendapatnya.\n\n")
    f.write("## 3. Aturan balasan (agar tidak dianggap bait)\n\n")
    f.write("- Balas isinya, bukan sekadar memuji. Sebutkan alasan atau pengalaman.\n")
    f.write("- Kalau tidak punya pendapat, lewati. Jangan memaksa.\n")
    f.write("- Jangan menautkan apa pun dalam balasan.\n")
    f.write("- Satu balasan per akun per hari sudah cukup.\n\n")
    f.write("## 4. Yang diukur\n\n")
    f.write("Jumlah balasan masuk ke akun kita (dipantau otomatis tiap Senin dari data Repliz). "
            "Titik nol @ukyhandoko: 7 balasan. Target uji 21 hari: rata-rata 2 balasan per postingan.\n")

print(f"\n→ daftar: drafts/threads_orang_berinteraksi.json")
print(f"→ rutinitas: drafts/rutinitas_threads_harian.md")
