#!/usr/bin/env python3
"""Angka GSC/GA4 halaman 3234 (cara-daftar-cv-pt-online) sebelum-sesudah perbaikan 10 Okt.

Token OAuth atun dicabut 8 Okt 2026 (invalid_grant). Bila GSC/GA4 tetap tidak bisa
diakses, skrip melaporkannya jujur dan memakai snapshot audit 8 Okt sebagai acuan.
"""
import json, urllib.parse, urllib.request
from datetime import date, timedelta

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
TOKEN = f"{WS}/seo-oauth/google_token_atun.json"
SITE = urllib.parse.quote("https://www.tslaw.id/", safe="")
HAL = "https://www.tslaw.id/cara-daftar-cv-pt-online/"

ok = True
try:
    from google.oauth2.credentials import Credentials
    from google.auth.transport.requests import Request
    c = Credentials.from_authorized_user_file(TOKEN)
    if c.expired and c.refresh_token:
        c.refresh(Request())          # sengaja TIDAK menulis balik ke berkas token
    H = {"Authorization": f"Bearer {c.token}", "Content-Type": "application/json"}

    def api(u, data=None):
        r = urllib.request.Request(u, headers=H, data=json.dumps(data).encode() if data else None)
        with urllib.request.urlopen(r, timeout=150) as x:
            return json.loads(x.read())

    akhir = date.today() - timedelta(days=3)
    for hari in (7, 28, 90):
        awal = (akhir - timedelta(days=hari - 1)).isoformat()
        d = api(f"https://www.googleapis.com/webmasters/v3/sites/{SITE}/searchAnalytics/query",
                {"startDate": awal, "endDate": akhir.isoformat(), "dimensions": ["query"],
                 "dimensionFilterGroups": [{"filters": [
                     {"dimension": "page", "operator": "equals", "expression": HAL}]}]})
        rows = d.get("rows", [])
        print(f"GSC {hari:>2} hari ({awal} -> {akhir}): "
              f"{sum(r['impressions'] for r in rows)} tayangan, {sum(r['clicks'] for r in rows)} klik")
        for r in sorted(rows, key=lambda z: -z["impressions"])[:5]:
            print(f"    {r['impressions']:>3} tayangan | {r['clicks']} klik | "
                  f"pos {r['position']:.1f} | {r['keys'][0]}")

    ga = api("https://analyticsdata.googleapis.com/v1beta/properties/537990618:runReport",
             {"dateRanges": [{"startDate": "90daysAgo", "endDate": "today"}],
              "dimensions": [{"name": "landingPagePlusQueryString"}],
              "metrics": [{"name": "sessions"}, {"name": "engagedSessions"}],
              "dimensionFilter": {"filter": {"fieldName": "landingPagePlusQueryString",
                                             "stringFilter": {"matchType": "CONTAINS",
                                                              "value": "cara-daftar-cv-pt-online"}}}})
    print("\nGA4 90 hari (landing page mengandung cara-daftar-cv-pt-online):")
    for r in ga.get("rows", []) or []:
        print("   ", r["dimensionValues"][0]["value"], "| sesi:", r["metricValues"][0]["value"],
              "| engaged:", r["metricValues"][1]["value"])
except Exception as e:
    ok = False
    print(f"[GSC/GA4 TIDAK TERSEDIA] {type(e).__name__}: {e}")

aud = json.load(open(f"{WS}/drafts/tslaw_audit_selaras.json"))
baris = [x for x in aud if x["id"] == 3234]
if baris:
    x = baris[0]
    print(f"\n[snapshot audit 8 Okt 2026] #{x['id']} {x['slug']}")
    print(f"   kata (metrik audit): {x['kata']} | tayangan GSC 90 hari: {x['tayang']} | "
          f"klik: {x['klik']} | sesi GA4 90 hari: {x['sesi_ga4']}")
    print(f"   fokus Yoast: {x['fokus']!r} | kueri nyata: {x['kueri'] or 'tidak ada'}")
print(f"\n[status] GSC/GA4 live: {'OK' if ok else 'GAGAL - minta Bos autorisasi ulang token'}")
