#!/usr/bin/env python3
"""TSC: periksa kejadian 'click' — apakah itu klik keluar (mis. WhatsApp)? Menentukan konversi yang tepat."""
import os
from google.oauth2 import service_account
from googleapiclient.discovery import build

KEY = os.path.expanduser("~/.hermes/gsc_service_account.json")
PROP = "properties/490140645"
ga = build("analyticsdata", "v1beta",
           credentials=service_account.Credentials.from_service_account_file(
               KEY, scopes=["https://www.googleapis.com/auth/analytics.readonly"]), cache_discovery=False)

RENTANG = {"startDate": "2026-06-28", "endDate": "2026-09-25"}

print("=== kejadian 'click' beserta URL yang diklik (90 hari) ===")
try:
    r = ga.properties().runReport(property=PROP, body={
        "dateRanges": [RENTANG],
        "dimensions": [{"name": "linkUrl"}, {"name": "linkDomain"}, {"name": "outbound"}],
        "metrics": [{"name": "eventCount"}],
        "dimensionFilter": {"filter": {"fieldName": "eventName", "stringFilter": {"value": "click", "matchType": "EXACT"}}},
        "limit": 25, "orderBys": [{"metric": {"metricName": "eventCount"}, "desc": True}]}).execute()
    for row in r.get("rows", []):
        u = row["dimensionValues"][0]["value"]
        dom = row["dimensionValues"][1]["value"]
        out = row["dimensionValues"][2]["value"]
        print(f"   {row['metricValues'][0]['value']:>3}x | outbound={out} | {dom[:24]:<26} {u[:60]}")
    if not r.get("rows"):
        print("   (tidak ada dimensi linkUrl pada kejadian click — kemungkinan bukan klik keluar)")
except Exception as e:
    print("   gagal:", str(e)[:150])

print("\n=== semua kejadian + parameter yang tersedia (contoh) ===")
try:
    r = ga.properties().runReport(property=PROP, body={
        "dateRanges": [RENTANG], "dimensions": [{"name": "eventName"}, {"name": "pagePath"}],
        "metrics": [{"name": "eventCount"}], "limit": 15,
        "orderBys": [{"metric": {"metricName": "eventCount"}, "desc": True}]}).execute()
    for row in r.get("rows", []):
        print(f"   {row['dimensionValues'][0]['value'][:22]:<24} {row['metricValues'][0]['value']:>4} | {row['dimensionValues'][1]['value'][:44]}")
except Exception as e:
    print("   gagal:", str(e)[:120])

print("\n=== apakah ada kejadian yang berkaitan dengan kontak? ===")
for nama in ("form_submit", "form_start", "generate_lead", "contact", "whatsapp", "click_wa", "phone_click"):
    r = ga.properties().runReport(property=PROP, body={
        "dateRanges": [RENTANG], "dimensions": [{"name": "eventName"}], "metrics": [{"name": "eventCount"}],
        "dimensionFilter": {"filter": {"fieldName": "eventName", "stringFilter": {"value": nama, "matchType": "EXACT"}}},
        "limit": 1}).execute()
    jumlah = sum(int(x["metricValues"][0]["value"]) for x in r.get("rows", []))
    print(f"   {nama:<16} {'ADA — ' + str(jumlah) + 'x' if jumlah else 'tidak ada'}")
