#!/usr/bin/env python3
"""Beri nilai tiap kandidat kata kunci TSC: permintaan nyata (GSC) + peluang klik + kemenangan + nilai komersial."""
import json

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
d = json.load(open(f"{WS}/drafts/tsc_pilih_kata_kunci.json"))
gsc, serp = d["gsc"], d["serp"]

# tayangan GSC 90 hari untuk kandidat (dari data nyata)
KANDIDAT = {
    "dokter kulit sidoarjo": 455,
    "dokter kulit krian": 284,
    "dokter kulit terdekat": 276,
    "dokter spesialis kulit terdekat": 154,
    "klinik kecantikan krian": 91,
    "dokter spesialis kulit sidoarjo": 70,
    "klinik kecantikan terdekat": 59,
    "spesialis kulit dan kelamin terdekat": 35,
    "dokter kulit sidoarjo terdekat": 23,
    "dokter kulit dan kelamin sidoarjo": 27,
}
KLIK = {"dokter kulit sidoarjo": 0, "dokter kulit krian": 1, "dokter kulit terdekat": 2,
        "dokter spesialis kulit terdekat": 0, "klinik kecantikan krian": 4,
        "dokter spesialis kulit sidoarjo": 0, "klinik kecantikan terdekat": 0,
        "spesialis kulit dan kelamin terdekat": 1, "dokter kulit sidoarjo terdekat": 0,
        "dokter kulit dan kelamin sidoarjo": 1}
POSISI = {"dokter kulit sidoarjo": 6.8, "dokter kulit krian": 1.2, "dokter kulit terdekat": 3.3,
          "dokter spesialis kulit terdekat": 3.4, "klinik kecantikan krian": 4.7,
          "dokter spesialis kulit sidoarjo": 7.7, "klinik kecantikan terdekat": 4.5,
          "spesialis kulit dan kelamin terdekat": 6.8, "dokter kulit sidoarjo terdekat": 5.2,
          "dokter kulit dan kelamin sidoarjo": 9.1}
# nilai komersial: seberapa dekat niat pencari dengan datang ke klinik
KOMERSIAL = {"dokter kulit sidoarjo": 95, "dokter kulit krian": 95, "dokter kulit terdekat": 92,
             "dokter spesialis kulit terdekat": 90, "klinik kecantikan krian": 88,
             "dokter spesialis kulit sidoarjo": 90, "klinik kecantikan terdekat": 85,
             "spesialis kulit dan kelamin terdekat": 88, "dokter kulit sidoarjo terdekat": 95,
             "dokter kulit dan kelamin sidoarjo": 92}

maks = max(KANDIDAT.values())
hasil = []
for kw, tayang in KANDIDAT.items():
    permintaan = tayang / maks * 100
    # peluang klik: bandingkan CTR nyata dengan harapan pada posisi itu
    pos = POSISI[kw]
    harap = 0.30 if pos <= 3 else (0.15 if pos <= 10 else 0.05)
    ctr = KLIK[kw] / tayang
    peluang = min(100, ctr / harap * 100)
    # kemenangan: posisi + kepadatan agregator di 20 besar
    dasar = 100 if pos <= 3 else (85 if pos <= 5 else (65 if pos <= 10 else 30))
    ag = serp.get(kw, {}).get("agregat", 5)
    kemenangan = max(10, dasar - max(0, ag - 4) * 6)
    nilai = permintaan * .35 + peluang * .25 + kemenangan * .25 + KOMERSIAL[kw] * .15
    hasil.append({"kata": kw, "tayang": tayang, "klik": KLIK[kw], "posisi": pos,
                  "permintaan": round(permintaan), "peluang_klik": round(peluang),
                  "kemenangan": round(kemenangan), "komersial": KOMERSIAL[kw],
                  "nilai": round(nilai), "agregat": ag})

hasil.sort(key=lambda x: -x["nilai"])
print(f"{'kata kunci':<38}{'tayang':>7}{'klik':>5}{'pos':>6}{'permintaan':>11}{'peluang':>9}{'menang':>8}{'nilai':>7}")
for h in hasil:
    print(f"{h['kata'][:37]:<38}{h['tayang']:>7}{h['klik']:>5}{h['posisi']:>6}{h['permintaan']:>11}"
          f"{h['peluang_klik']:>9}{h['kemenangan']:>8}{h['nilai']:>7}")

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