#!/usr/bin/env python3
"""TSC: siapkan kejadian konversi di GA4 + deteksi plugin formulir dari halaman yang bisa diakses."""
import json, os, re, time, urllib.request, urllib.error
from google.oauth2 import service_account
from googleapiclient.discovery import build

KEY = os.path.expanduser("~/.hermes/gsc_service_account.json")
GA_EDIT = ["https://www.googleapis.com/auth/analytics.edit"]
PROP = "properties/490140645"
UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36"}

adm = build("analyticsadmin", "v1beta",
            credentials=service_account.Credentials.from_service_account_file(KEY, scopes=GA_EDIT),
            cache_discovery=False)

print("=== 1. kejadian kunci sekarang ===")
ke = adm.properties().keyEvents().list(parent=PROP).execute().get("keyEvents", [])
for k in ke:
    print(f"   {k.get('eventName')} | {k.get('countingMethod')} | {k.get('name')}")

print("\n=== 2. deteksi plugin & formulir dari halaman yang bisa diakses ===")
for u in ("https://www.theskincodeclinic.com/tentang-kami/", "https://www.theskincodeclinic.com/faq-dokter-kulit-krian/"):
    try:
        h = urllib.request.urlopen(urllib.request.Request(u, headers=UA), timeout=90).read().decode("utf-8", "replace")
        plug = sorted(set(re.findall(r"wp-content/plugins/([a-z0-9\-]+)/", h)))
        print(f"   {u.replace('https://www.theskincodeclinic.com', '')}")
        print(f"      plugin: {plug[:14]}")
        print(f"      <form>: {len(re.findall(r'<form', h, re.I))} | gtag: {'ada' if 'gtag(' in h else 'tidak'} | "
              f"GTM: {sorted(set(re.findall(r'GTM-[A-Z0-9]+', h))) or 'tidak ada'}")
        print(f"      GA4 id: {sorted(set(re.findall(r'G-[A-Z0-9]{6,}', h))) or '(tidak tampak, kemungkinan lewat Site Kit)'}")
    except Exception as e:
        print(f"   {u}: gagal {str(e)[:60]}")

print("\n=== 3. daftar kejadian yang sudah terekam (untuk memilih yang layak jadi konversi) ===")
ga = build("analyticsdata", "v1beta",
           credentials=service_account.Credentials.from_service_account_file(
               KEY, scopes=["https://www.googleapis.com/auth/analytics.readonly"]), cache_discovery=False)
r = ga.properties().runReport(property=PROP, body={
    "dateRanges": [{"startDate": "2026-06-28", "endDate": "2026-09-25"}],
    "dimensions": [{"name": "eventName"}], "metrics": [{"name": "eventCount"}],
    "limit": 30, "orderBys": [{"metric": {"metricName": "eventCount"}, "desc": True}]}).execute()
for row in r.get("rows", []):
    print(f"   {row['dimensionValues'][0]['value'][:30]:<32} {row['metricValues'][0]['value']}")

print("\n=== 4. siapkan kejadian konversi (uji, belum dibuat) ===")
RENCANA = ["form_submit", "generate_lead", "click_whatsapp"]
for nama in RENCANA:
    sudah = any(k.get("eventName") == nama for k in ke)
    print(f"   {nama:<16} {'sudah ada' if sudah else 'akan dibuat sebagai key event'}")
