#!/usr/bin/env python3
"""Susun tabel nilai keyword StudioSoft: permintaan, peluang klik hilang, dan tindakan per keyword."""
import json

data = json.load(open("drafts/ss_keyword_nilai.json"))
CTR_TARGET = 0.026  # CTR wajar di posisi ~8 menurut kurva internal StudioSoft

for h in data:
    h["peluang_klik"] = round(h["imp"] * CTR_TARGET - h["klik"], 1)
    h["ctr_target_klik"] = int(h["imp"] * CTR_TARGET)
    if h["pos"] <= 10:
        h["pita"] = "halaman 1"
    elif h["pos"] <= 20:
        h["pita"] = "halaman 2 (atas)"
    elif h["pos"] <= 30:
        h["pita"] = "halaman 2-3"
    elif h["pos"] <= 50:
        h["pita"] = "halaman 4-5"
    else:
        h["pita"] = "jauh"

kandidat = [h for h in data if h["imp"] >= 15]
kandidat.sort(key=lambda x: x["peluang_klik"], reverse=True)

print(f"{'keyword':<48} {'imp':>5} {'klik':>5} {'CTR':>6} {'pos':>6} {'pita':<14} {'peluang klik':>12}")
for h in kandidat[:30]:
    print(f"{h['query'][:46]:<48} {h['imp']:>5} {h['klik']:>5} {h['ctr']:>5}% {h['pos']:>6} {h['pita']:<14} {h['peluang_klik']:>12}")

print("\n=== sudah halaman 1 tapi nol klik (masalah cuplikan, bukan peringkat) ===")
p1 = [h for h in data if h["pos"] <= 10 and h["imp"] >= 10]
p1.sort(key=lambda x: x["imp"], reverse=True)
for h in p1[:15]:
    print(f"  imp {h['imp']:>4} | pos {h['pos']:>5} | klik {h['klik']:>3} | {h['query'][:60]:<62} {h['halaman'][:30]}")

print("\n=== pecah sinyal: satu keyword, beberapa halaman sendiri ===")
semua = json.load(open("drafts/ss_keyword_nilai.json"))
qk = {}
for h in semua:
    qk.setdefault(h["query"], []).append(h)
print("  (peta query→halaman dihitung terpisah; lihat ss_keyword_serp.json)")

json.dump(kandidat, open("drafts/ss_keyword_final.json", "w"), indent=1, ensure_ascii=False)
print(f"\n{len(kandidat)} kandidat → drafts/ss_keyword_final.json")
