#!/usr/bin/env python3
"""KOREKSI: data GA4 yang benar untuk theskincodeclinic.com (properti 490140645),
lalu uji status semua halaman pendaratannya."""
import 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")
UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36"}
PROP = "properties/490140645"          # The Skin Code Clinic — BENAR
PROP_SSC = "properties/513751849"      # Surabaya Skin Centre — pembanding
ga = build("analyticsdata", "v1beta",
           credentials=service_account.Credentials.from_service_account_file(
               KEY, scopes=["https://www.googleapis.com/auth/analytics.readonly"]), cache_discovery=False)


def rep(prop, dims, mets, mulai, akhir, limit=12, urut=None):
    b = {"dateRanges": [{"startDate": mulai, "endDate": akhir}],
         "dimensions": [{"name": d} for d in dims], "metrics": [{"name": m} for m in mets], "limit": limit}
    if urut:
        b["orderBys"] = [{"metric": {"metricName": urut}, "desc": True}]
    return ga.properties().runReport(property=prop, body=b).execute().get("rows", [])


print("=== THE SKIN CODE CLINIC (490140645) — yang benar ===")
for label, mulai, akhir in (("28 hari", "2026-08-29", "2026-09-25"), ("90 hari", "2026-06-28", "2026-09-25")):
    print(f"\n  ── {label} ──")
    r = rep(PROP, [], ["sessions", "totalUsers", "screenPageViews", "keyEvents", "averageSessionDuration",
                       "engagementRate"], mulai, akhir, 1)
    if r:
        v = [x["value"] for x in r[0]["metricValues"]]
        print(f"     sesi {v[0]} | pengguna {v[1]} | halaman {v[2]} | kejadian kunci {v[3]} | "
              f"durasi {round(float(v[4]))}s | engagement {round(float(v[5])*100)}%")
    print("     kanal:")
    for row in rep(PROP, ["sessionDefaultChannelGroup"], ["sessions", "keyEvents"], mulai, akhir, 8, "sessions"):
        print(f"       {row['dimensionValues'][0]['value'][:20]:<22} sesi {row['metricValues'][0]['value']:>4} | "
              f"kunci {row['metricValues'][1]['value']}")
    print("     halaman pendaratan:")
    for row in rep(PROP, ["landingPagePlusQueryString"], ["sessions", "userEngagementDuration"], mulai, akhir, 10, "sessions"):
        d = row["dimensionValues"][0]["value"]; v = [x["value"] for x in row["metricValues"]]
        print(f"       sesi {v[0]:>4} | {round(float(v[1])/max(int(v[0]),1)):>4}s | {d[:56]}")

print("\n  ── kota (90 hari) ──")
for row in rep(PROP, ["city"], ["sessions"], "2026-06-28", "2026-09-25", 8, "sessions"):
    print(f"     {row['dimensionValues'][0]['value'][:26]:<28} {row['metricValues'][0]['value']}")

print("\n  ── kejadian (90 hari) ──")
for row in rep(PROP, ["eventName"], ["eventCount"], "2026-06-28", "2026-09-25", 15, "eventCount"):
    print(f"     {row['dimensionValues'][0]['value'][:28]:<30} {row['metricValues'][0]['value']}")

print("\n=== PEMBANDING: Surabaya Skin Centre (513751849) ===")
r = rep(PROP_SSC, [], ["sessions", "totalUsers", "keyEvents"], "2026-06-28", "2026-09-25", 1)
if r:
    v = [x["value"] for x in r[0]["metricValues"]]
    print(f"   sesi {v[0]} | pengguna {v[1]} | kejadian kunci {v[2]}")

print("\n=== status halaman pendaratan The Skin Code (yang benar) ===")
st, d, _ = (0, rep(PROP, ["landingPagePlusQueryString"], ["sessions"], "2026-06-28", "2026-09-25", 15, "sessions"), {})
for row in d:
    u = row["dimensionValues"][0]["value"]
    sesi = row["metricValues"][0]["value"]
    if u.startswith("(not set)") or not u.startswith("/"):
        continue
    try:
        r2 = urllib.request.urlopen(urllib.request.Request("https://www.theskincodeclinic.com" + u, headers=UA), timeout=60)
        print(f"   {r2.status} | sesi {sesi:>3} | {u[:56]}")
    except urllib.error.HTTPError as e:
        print(f"   {e.code} | sesi {sesi:>3} | {u[:56]}  ← MASALAH")
    except Exception as e:
        print(f"   ERR | sesi {sesi:>3} | {u[:56]} ({str(e)[:30]})")
