#!/usr/bin/env python3
"""Riset Threads tahap 6: coba insights dengan generatedId + ukur aktivitas akun dari data komentar."""
import json, sys, collections
from datetime import datetime, timedelta, 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()
d = client.get("/public/account?page=1&limit=100")
akun = d.get("docs", []) if isinstance(d, dict) else []
uky = next((a for a in akun if a.get("_id") == ACC.UKY_THREADS), None)
print("=== A. insights dengan generatedId ===")
if uky and uky.get("generatedId"):
    gen = uky["generatedId"]
    print(f"   generatedId UKY_THREADS: {gen[:40]}… ({len(gen)} karakter)")
    for jalur in (f"/public/account/insights?accountId={gen}",
                  f"/public/account/insights?accountId={gen}&period=30"):
        try:
            print(f"   ✅ {jalur[:70]} → {json.dumps(client.get(jalur))[:220]}")
            break
        except Exception as e:
            print(f"   ❌ {str(e)[:130]}")
else:
    print("   (tidak ada generatedId)")

print("\n=== B. aktivitas nyata dari data komentar (60 hari terakhir) ===")
semua = []
page = 1
while True:
    dd = client.get(f"/public/comment?page={page}&limit=100")
    rows = dd.get("docs", []) if isinstance(dd, dict) else []
    semua += rows
    if len(rows) < 100:
        break
    page += 1
print(f"   total komentar terbaca: {len(semua)}")

NAMA = {getattr(ACC, n): n for n in dir(ACC) if not n.startswith("_")}
per_akun = collections.Counter(c.get("accountId") for c in semua)
print("\n   komentar masuk per akun (terbanyak):")
for aid, n in per_akun.most_common(10):
    print(f"      {NAMA.get(aid, aid):<24} {n}")

batas = datetime.now(timezone.utc) - timedelta(days=60)
terbaru = [c for c in semua if str(c.get("createdAt") or "") >= batas.strftime("%Y-%m-%d")]
print(f"\n   60 hari terakhir: {len(terbaru)} komentar")
for aid, n in collections.Counter(c.get("accountId") for c in terbaru).most_common(8):
    print(f"      {NAMA.get(aid, aid):<24} {n}")
