#!/usr/bin/env python3
"""DAS — target SEO per klaster, gabungan GSC (visibilitas) + GA4 (hasil bisnis).
Keluaran: drafts/das_target_gsc_ga4.md + .json
"""
import json, os, re
from datetime import date, timedelta

from google.oauth2 import service_account
from googleapiclient.discovery import build

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
DOM = "dasindonesia.com"
PROP = "properties/443064659"
creds = service_account.Credentials.from_service_account_file(
    os.path.expanduser("~/.hermes/gsc_service_account.json"),
    scopes=["https://www.googleapis.com/auth/webmasters.readonly",
            "https://www.googleapis.com/auth/analytics.readonly"])
gsc = build("webmasters", "v3", credentials=creds, cache_discovery=False)
ga = build("analyticsdata", "v1beta", credentials=creds, cache_discovery=False)
AKHIR = date.today() - timedelta(days=2)
AWAL = AKHIR - timedelta(days=89)

# GSC per halaman
imp = {}
for r in gsc.searchanalytics().query(siteUrl=f"https://{DOM}/", body={
        "startDate": AWAL.isoformat(), "endDate": AKHIR.isoformat(), "dimensions": ["page"],
        "rowLimit": 5000}).execute().get("rows", []):
    imp[r["keys"][0].rstrip("/")] = {"tayang": int(r["impressions"]), "klik": int(r["clicks"]),
                                     "pos": round(r["position"], 1)}

# GA4 per halaman pendaratan
ses = {}
rows = ga.properties().runReport(property=PROP, body={
    "dateRanges": [{"startDate": AWAL.isoformat(), "endDate": AKHIR.isoformat()}],
    "dimensions": [{"name": "landingPagePlusQueryString"}],
    "metrics": [{"name": "sessions"}, {"name": "keyEvents"}], "limit": 1000}).execute().get("rows", [])
for r in rows:
    u = r["dimensionValues"][0]["value"].split("?")[0].rstrip("/")
    ses[f"https://{DOM}{u}"] = {"sesi": int(r["metricValues"][0]["value"]),
                                "kejadian": int(r["metricValues"][1]["value"])}

hasil = []
for url, g in imp.items():
    a = ses.get(url, {"sesi": 0, "kejadian": 0})
    skor = g["tayang"] + a["sesi"] * 20 + a["kejadian"] * 100
    hasil.append({"url": re.sub(r"^https?://(www\.)?dasindonesia\.com", "", url) or "/",
                  "tayang": g["tayang"], "klik": g["klik"], "pos": g["pos"],
                  "sesi": a["sesi"], "kejadian": a["kejadian"], "skor": skor})
hasil.sort(key=lambda x: -x["skor"])

print(f"=== DAS — {len(hasil)} halaman, 90 hari (GSC + GA4) ===")
print(f"{'tayangan':>9} {'klik':>5} {'pos':>5} {'sesi':>5} {'event':>5}  halaman")
for h in hasil[:25]:
    print(f"{h['tayang']:>9} {h['klik']:>5} {h['pos']:>5.1f} {h['sesi']:>5} {h['kejadian']:>5}  {h['url'][:60]}")

# ---- target per klaster ----
KLASTER = {
    "Nissan": ["bengkel-spesialis-nissan-surabaya"],
    "Toyota": ["bengkel-spesialis-toyota-surabaya", "bengkel-toyota-di-jagir"],
    "Mercy & BMW": ["bengkel-mercy-surabaya", "bengkel-mobil-bmw-mercy-surabaya"],
    "Lexus": ["bengkel-spesialis-lexus-di-surabaya"],
    "Transmisi matic": ["bengkel-spesialis-matic-surabaya"],
    "Honda": ["bengkel-honda-terbaik"],
    "Alphard": ["bengkel-spesialis-alphard-surabaya", "bengkel-mobil-alphard"],
    "Overhaul": ["kapan-mobil-perlu-engine-overhaul", "overhaul"],
    "Beranda (merek)": ["/"],
}
print("\n=== target per klaster (dasar: tayangan GSC + sesi/kejadian GA4) ===")
rekap = []
for nama, pola in KLASTER.items():
    kump = [h for h in hasil if any(p in h["url"] for p in pola)]
    if not kump:
        continue
    tayang = sum(h["tayang"] for h in kump)
    klik = sum(h["klik"] for h in kump)
    sesi = sum(h["sesi"] for h in kump)
    ev = sum(h["kejadian"] for h in kump)
    pos_terbaik = min((h["pos"] for h in kump if h["tayang"] > 20), default=None)
    rekap.append({"klaster": nama, "tayang": tayang, "klik": klik, "sesi": sesi, "kejadian": ev,
                  "pos": pos_terbaik, "halaman": [h["url"] for h in kump]})
    print(f"  {nama:<18} tayangan {tayang:>5} | klik {klik:>4} | sesi GA4 {sesi:>4} | key event {ev:>3} | "
          f"pos terbaik {pos_terbaik}")

with open(f"{WS}/drafts/das_target_gsc_ga4.md", "w") as f:
    f.write("# DAS — target SEO berbasis GSC dan GA4 (7 Oktober 2026)\n\n")
    f.write(f"Rentang data: {AWAL} sampai {AKHIR} (90 hari). Sumber: Search Console + GA4 properti 443064659.\n\n")
    f.write("## Kondisi per klaster\n\n")
    f.write("| Klaster | Tayangan GSC | Klik | Sesi GA4 | Key event | Posisi terbaik |\n|---|---|---|---|---|---|\n")
    for r in sorted(rekap, key=lambda x: -(x["tayang"] + x["sesi"] * 20)):
        f.write(f"| {r['klaster']} | {r['tayang']} | {r['klik']} | {r['sesi']} | {r['kejadian']} | {r['pos']} |\n")
    f.write("\n## Halaman dengan nilai bisnis tertinggi (gabungan tayangan + sesi)\n\n")
    f.write("| Halaman | Tayangan | Klik | Posisi | Sesi | Key event |\n|---|---|---|---|---|---|\n")
    for h in hasil[:20]:
        f.write(f"| `{h['url']}` | {h['tayang']} | {h['klik']} | {h['pos']} | {h['sesi']} | {h['kejadian']} |\n")
json.dump({"halaman": hasil, "klaster": rekap}, open(f"{WS}/drafts/das_target_gsc_ga4.json", "w"),
          ensure_ascii=False, indent=1)
print(f"\n→ drafts/das_target_gsc_ga4.md + .json")
