#!/usr/bin/env python3
"""Hitung persentase naik/turun klik dan tayangan tiap klien dibanding 28 hari sebelumnya."""
import json, os

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
SRC = sorted([f for f in os.listdir(f"{WS}/drafts") if f.startswith("seo_semua_klien_") and f.endswith(".json")])[-1]
d = json.load(open(f"{WS}/drafts/{SRC}"))
data = d["data"]
print(f"sumber: {SRC} · periode {d['periode'][0]} s/d {d['periode'][1]}\n")


def persen(sekarang, lalu):
    if not lalu:
        return None
    return round((sekarang - lalu) / lalu * 100, 1)


baris = []
for h in data:
    if h["klik28"] is None:
        continue
    baris.append({
        "nama": h["nama"],
        "klik": h["klik28"], "klik_lalu": h["klik_lalu"], "klik_persen": persen(h["klik28"], h["klik_lalu"]),
        "tayang": h["tayang28"], "tayang_lalu": h["tayang_lalu"],
        "tayang_persen": persen(h["tayang28"], h["tayang_lalu"]),
        "posisi": h["posisi28"], "posisi_lalu": h["posisi_lalu"],
        "posisi_selisih": round((h["posisi_lalu"] or 0) - (h["posisi28"] or 0), 1),
    })

print(f"{'klien':<24} {'klik':>6} {'lalu':>6} {'Δ klik':>9} {'tayangan':>9} {'Δ tayang':>10} {'posisi':>13}")
for b in sorted(baris, key=lambda x: -(x["klik_persen"] if x["klik_persen"] is not None else -999)):
    kp = f"{b['klik_persen']:+.1f}%" if b["klik_persen"] is not None else "-"
    tp = f"{b['tayang_persen']:+.1f}%" if b["tayang_persen"] is not None else "-"
    ps = f"{b['posisi_lalu']} → {b['posisi']} ({b['posisi_selisih']:+.1f})"
    print(f"{b['nama']:<24} {b['klik']:>6} {b['klik_lalu']:>6} {kp:>9} {b['tayang']:>9} {tp:>10} {ps:>13}")

tk, tl = sum(b["klik"] for b in baris), sum(b["klik_lalu"] for b in baris)
tt, ttl = sum(b["tayang"] for b in baris), sum(b["tayang_lalu"] for b in baris)
print(f"\n{'TOTAL':<24} {tk:>6} {tl:>6} {persen(tk, tl):>+8.1f}% {tt:>9} {persen(tt, ttl):>+9.1f}%")

json.dump(baris, open(f"{WS}/drafts/seo_persen_klien.json", "w"), ensure_ascii=False, indent=1)
print(f"\n→ drafts/seo_persen_klien.json")
