#!/usr/bin/env python3
"""DAS: akun Google Ads tertaut + tren mingguan (kapan anjlok) + kejadian kunci."""
import os
from google.oauth2 import service_account
from googleapiclient.discovery import build

KEY = os.path.expanduser("~/.hermes/gsc_service_account.json")
CRE = service_account.Credentials.from_service_account_file
RO = ["https://www.googleapis.com/auth/analytics.readonly"]
GA = "properties/443064659"

adm = build("analyticsadmin", "v1beta", credentials=CRE(KEY, scopes=RO), cache_discovery=False)
ga = build("analyticsdata", "v1beta", credentials=CRE(KEY, scopes=RO), cache_discovery=False)
gsc = build("searchconsole", "v1", credentials=CRE(KEY, scopes=["https://www.googleapis.com/auth/webmasters.readonly"]),
            cache_discovery=False)

print("=== 1. akun Google Ads yang tertaut ke GA4 DAS ===")
try:
    links = adm.properties().googleAdsLinks().list(parent=GA).execute().get("googleAdsLinks", [])
    if links:
        for l in links:
            print(f"   customerId {l.get('customerId')} | nama {l.get('displayName')} | admin {l.get('canManageClients')} | {l.get('name')}")
    else:
        print("   tidak ada akun Ads tertaut (di properti ini)")
except Exception as e:
    print("   gagal:", str(e)[:130])

print("\n=== 2. kejadian kunci (konversi) yang ditandai di GA4 DAS ===")
try:
    ke = adm.properties().keyEvents().list(parent=GA).execute().get("keyEvents", [])
    for k in ke:
        print(f"   {k.get('eventName')} | {k.get('countingMethod')}")
except Exception as e:
    print("   gagal:", str(e)[:110])

print("\n=== 3. tren GSC mingguan (3 bulan) ===")
rows = gsc.searchanalytics().query(siteUrl="https://dasindonesia.com/", body={
    "startDate": "2026-06-28", "endDate": "2026-09-25", "dimensions": ["date"], "rowLimit": 200}).execute().get("rows", [])
minggu = {}
for r in rows:
    tgl = r["keys"][0]
    tahun, bln, hari = map(int, tgl.split("-"))
    import datetime
    d = datetime.date(tahun, bln, hari)
    pekan = (d - datetime.timedelta(days=d.weekday())).isoformat()
    m = minggu.setdefault(pekan, {"klik": 0, "imp": 0})
    m["klik"] += r["clicks"]; m["imp"] += r["impressions"]
for pekan in sorted(minggu):
    m = minggu[pekan]
    print(f"   pekan {pekan}: {m['klik']:>4} klik | {m['imp']:>6} impresi")

print("\n=== 4. halaman yang kehilangan impresi terbesar (28d vs 28d sebelumnya) ===")
def per_halaman(a, b):
    d = {}
    for r in gsc.searchanalytics().query(siteUrl="https://dasindonesia.com/", body={
            "startDate": a, "endDate": b, "dimensions": ["page"], "rowLimit": 5000}).execute().get("rows", []):
        d[r["keys"][0].replace("https://dasindonesia.com", "")] = (r["impressions"], r["clicks"])
    return d
lama = per_halaman("2026-08-01", "2026-08-28")
baru = per_halaman("2026-08-29", "2026-09-25")
selisih = []
for u, (imp_l, klik_l) in lama.items():
    imp_b, klik_b = baru.get(u, (0, 0))
    selisih.append((imp_l - imp_b, imp_l, imp_b, klik_l, klik_b, u))
selisih.sort(reverse=True)
for s in selisih[:10]:
    print(f"   -{s[0]:>5} impresi | {s[1]:>5} → {s[2]:>4} | klik {s[3]}→{s[4]} | {s[5][:52]}")
