#!/usr/bin/env python3
"""Kurva CTR StudioSoft berdasarkan pita posisi + simulasi kalau keyword lokal naik ke halaman 1."""
import os
from datetime import date, timedelta
from google.oauth2 import service_account
from googleapiclient.discovery import build

creds = service_account.Credentials.from_service_account_file(
    os.path.expanduser("~/.hermes/gsc_service_account.json"),
    scopes=["https://www.googleapis.com/auth/webmasters.readonly"])
gsc = build("webmasters", "v3", credentials=creds, cache_discovery=False)
S = "https://studiosoft.id/"
e = date.today() - timedelta(days=2)
a, b = (e - timedelta(days=89)).isoformat(), e.isoformat()
rows = gsc.searchanalytics().query(siteUrl=S, body={"startDate": a, "endDate": b, "dimensions": ["query"],
                                                    "rowLimit": 5000}).execute().get("rows", [])

PITA = [(1, 3, "posisi 1-3"), (4, 10, "posisi 4-10"), (11, 20, "posisi 11-20"),
        (21, 50, "posisi 21-50"), (51, 999, "posisi 51+")]
print("=== KURVA CTR MILIK STUDIOSOFT (90 hari, data nyata) ===")
for lo, hi, label in PITA:
    grp = [r for r in rows if lo <= r["position"] <= hi]
    imp = sum(r["impressions"] for r in grp)
    klik = sum(r["clicks"] for r in grp)
    ctr = klik / imp * 100 if imp else 0
    print(f"  {label:<14} {len(grp):>4} query | {int(imp):>6} impresi | {int(klik):>4} klik | CTR {ctr:>5.2f}%")

print("\n=== 5 KEYWORD LOKAL PRIORITAS: sekarang vs kalau halaman 1 ===")
PRIORITAS = ["digital marketing agency surabaya", "digital marketing surabaya", "digital agency surabaya",
             "jasa seo surabaya", "branding agency surabaya"]
tot_imp = tot_klik = 0
for kw in PRIORITAS:
    r = [x for x in rows if x["keys"][0] == kw]
    if not r:
        continue
    imp, klik, pos = int(r[0]["impressions"]), int(r[0]["clicks"]), r[0]["position"]
    tot_imp += imp; tot_klik += klik
    print(f"  {kw:<32} {imp:>5} imp | {klik} klik | pos {pos:>5.1f} | CTR {klik/imp*100 if imp else 0:>4.2f}%")
print(f"\n  TOTAL sekarang : {tot_imp} impresi → {tot_klik} klik (CTR {tot_klik/tot_imp*100:.2f}%)")

# data nyata: berapa CTR rata-rata keyword StudioSoft yang sudah di posisi 4-10
grup_atas = [r for r in rows if 4 <= r["position"] <= 10 and r["impressions"] >= 5]
if grup_atas:
    imp = sum(r["impressions"] for r in grup_atas); klik = sum(r["clicks"] for r in grup_atas)
    ctr_atas = klik / imp * 100 if imp else 0
    print(f"  Pembanding nyata: {len(grup_atas)} query StudioSoft di posisi 4-10 → CTR {ctr_atas:.1f}%")
    print(f"  Kalau {tot_imp} impresi itu dapat CTR seperti itu → sekitar {int(tot_imp*ctr_atas/100)} klik "
          f"(sekarang {tot_klik})")
