#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Detail error + jadwal 'pending tapi sudah lewat' untuk akun TS Law."""
import sys, datetime
sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import get_client

AKUN = {
    "6a35f8b7c5ff4ce3a322b2ed": "TSLAW Threads",
    "6a76a54d62caae1e04f30968": "TSLAW IG",
    "6a3b41d1c5ff4ce3a32753e8": "TSLAW FB",
}
WIB = datetime.timezone(datetime.timedelta(hours=7))
now = datetime.datetime.now(datetime.timezone.utc)

c = get_client()
docs, page = [], 1
while True:
    r = c.get(f"/public/schedule?page={page}&limit=100")
    d = r.get("docs") or []
    docs.extend(d)
    if not d or page * 100 >= (r.get("totalDocs") or 0):
        break
    page += 1


def w(t):
    return datetime.datetime.fromisoformat(t.replace("Z", "+00:00")).astimezone(WIB)


for acc, nama in AKUN.items():
    mine = [x for x in docs if (x.get("account") or {}).get("_id") == acc]
    print(f"\n=== {nama} ===")
    err = sorted([x for x in mine if x.get("status") == "error"], key=lambda x: x.get("scheduleAt") or "")
    print(f"  error ({len(err)}):")
    for x in err:
        print(f"    {w(x['scheduleAt']):%d %b %H:%M} | {x.get('type'):5} | {(x.get('title') or '')[:45]} | "
              f"{(x.get('errorMessage') or '')[:60]}")
    lewat = sorted([x for x in mine if x.get("status") == "pending" and w(x["scheduleAt"]) < now],
                   key=lambda x: x.get("scheduleAt") or "")
    print(f"  pending tapi sudah lewat ({len(lewat)}):")
    for x in lewat:
        print(f"    {w(x['scheduleAt']):%d %b %H:%M} | {x.get('type'):5} | {(x.get('title') or '')[:45]}")
    # horizon
    dep = [x for x in mine if x.get("status") == "pending" and w(x["scheduleAt"]) >= now]
    if dep:
        dep.sort(key=lambda x: x["scheduleAt"])
        print(f"  horizon pending: {w(dep[0]['scheduleAt']):%d %b} -> {w(dep[-1]['scheduleAt']):%d %b} ({len(dep)} jadwal)")
    else:
        print("  horizon pending: KOSONG")
