#!/usr/bin/env python3
"""TSC: siapkan pelacakan konversi — periksa plugin situs, aliran data GA4, kejadian kunci,
dan uji apakah Enhanced Measurement bisa diatur lewat API."""
import base64, json, os, re, urllib.request, urllib.error, importlib.util
from google.oauth2 import service_account
from googleapiclient.discovery import build

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
KEY = os.path.expanduser("~/.hermes/gsc_service_account.json")
UA = {"User-Agent": "Mozilla/5.0"}
GA_SCOPE = ["https://www.googleapis.com/auth/analytics.readonly"]
GA_EDIT = ["https://www.googleapis.com/auth/analytics.edit"]
PROP = "properties/490140645"

spec = importlib.util.spec_from_file_location("cfg_tsc", f"{WS}/cfg_tsc.py")
mod = importlib.util.module_from_spec(spec); spec.loader.exec_module(mod)
CFG = mod.CFG
AUTH = base64.b64encode(f'{CFG["user"]}:{CFG["pass"]}'.encode()).decode()


def rest(p):
    r = urllib.request.Request(f'https://{CFG["domain"]}{p}', headers={"Authorization": f"Basic {AUTH}", **UA})
    with urllib.request.urlopen(r, timeout=150) as x:
        return json.loads(x.read())


print("=== 1. plugin yang aktif di situs ===")
try:
    pl = rest("/wp-json/wp/v2/plugins?_fields=plugin,name,status,version")
    for p in sorted(pl, key=lambda x: x.get("status", "")):
        if p.get("status") == "active":
            print(f"   [aktif] {p.get('name','?')[:44]:<46} v{str(p.get('version'))[:10]}")
except Exception as e:
    print("   gagal:", str(e)[:80])

print("\n=== 2. aliran data GA4 ===")
adm = build("analyticsadmin", "v1beta",
            credentials=service_account.Credentials.from_service_account_file(KEY, scopes=GA_SCOPE),
            cache_discovery=False)
ds = adm.properties().dataStreams().list(parent=PROP).execute().get("dataStreams", [])
for d in ds:
    print(f"   {d['name']} | {d.get('displayName')} | {d.get('type')}")
    print(f"      kunci: {sorted(d.keys())}")

print("\n=== 3. uji baca setelan Enhanced Measurement lewat v1alpha ===")
try:
    adm_a = build("analyticsadmin", "v1alpha",
                  credentials=service_account.Credentials.from_service_account_file(KEY, scopes=GA_SCOPE),
                  cache_discovery=False)
    d2 = adm_a.properties().dataStreams().get(name=ds[0]["name"]).execute()
    print(f"   kunci v1alpha: {sorted(d2.keys())}")
    print(f"   enhancedMeasurementSettings: {d2.get('enhancedMeasurementSettings') or 'TIDAK ADA di respons'}")
except Exception as e:
    print("   gagal:", str(e)[:120])

print("\n=== 4. kejadian kunci yang sudah ditandai ===")
ke = adm.properties().keyEvents().list(parent=PROP).execute().get("keyEvents", [])
print(f"   {len(ke)} kejadian: {[(k.get('eventName'), k.get('countingMethod')) for k in ke]}")

print("\n=== 5. uji izin tulis (analytics.edit) ===")
try:
    adm_e = build("analyticsadmin", "v1beta",
                  credentials=service_account.Credentials.from_service_account_file(KEY, scopes=GA_EDIT),
                  cache_discovery=False)
    daftar = adm_e.properties().keyEvents().list(parent=PROP).execute().get("keyEvents", [])
    print(f"   izin tulis OK — {len(daftar)} kejadian terbaca")
except Exception as e:
    print("   izin tulis GAGAL:", str(e)[:160])

print("\n=== 6. formulir di beranda & situs ===")
h = urllib.request.urlopen(urllib.request.Request(f'https://{CFG["domain"]}/', headers=UA), timeout=90).read().decode("utf-8", "replace")
print(f"   <form> di beranda: {len(re.findall(r'<form', h, re.I))}")
plug = sorted(set(re.findall(r"wp-content/plugins/([a-z0-9\-]+)/", h)))
print(f"   penanda plugin form: {plug}")
print(f"   gtag: {'ada' if 'gtag(' in h else 'tidak'} | Site Kit: {'ada' if 'google-site-kit' in h else 'tidak'}")
wa = sorted(set(re.findall(r"wa\.me/(\d+)", h)))
print(f"   wa.me: {wa[:3]}")
