"""LOG451: pixelstomotors.com の自前の計測（ev-stats・cr-stats・hk-stats）から、
AI に読まれる量が人の来訪に変わるまでの段階を並べる集計。
入力は同じフォルダの JSON（2026-11-05 19:32〜19:33 JST に取得）。週は日本時間の月曜はじまり。"""
import json

def load(name):
    with open(name, encoding="utf-8") as f:
        return json.load(f)

ev_all = load("ev-a1102.json")      # 11/2 の週・人と機械の全部
ev_h = load("ev-h1102.json")        # 11/2 の週・人だけ
ev_h29 = load("ev-h1029.json")      # 10/29 から・人だけ（改善 No.01 の確かめ）
cr_all = load("cr.json")            # 10/25 からのクローラー
cr = load("cr1102.json")            # 11/2 からのクローラー
hk = load("hk-nb.json")             # ハコブくん（機械の印なし）

DAYS_NOW = 3 + 19.53 / 24           # 11/2 0:00 から 11/5 19:32 まで
DAYS_PREV = 7                       # 10/26〜11/1

print("== 1. 表示（ev-stats・週ごと） ==")
for w in ev_all["byWeek"][:2]:
    d = DAYS_NOW if w["week"] == "2026-11-02" else DAYS_PREV
    print(f'{w["label"]}: 全体 {w["views"]} / 人 {w["humanViews"]} / 機械 {w["botViews"]} / 不明 {w["unknownViews"]}'
          f' / 人の1日あたり {w["humanViews"]/d:.1f}')
for w in ev_h["byWeek"][:2]:
    print(f'  人だけ {w["week"]}: 中央値 {w["medianSeconds"]}秒 / 75%以上読んだ {w["read75Pct"]}% / スマホ {w["spPct"]}%'
          f' / リンクなしを押した {w["deadClicks"]} / メッセージの表示 {w["messageViews"]} / 入力開始 {w["formStarts"]}')

print("\n== 2. クローラー（cr-stats・週ごと） ==")
for w in cr_all["byWeek"]:
    d = DAYS_NOW if w["week"] == "2026-11-02" else (DAYS_PREV if w["week"] == "2026-10-26" else 1)
    print(f'{w["week"]}: {w["total"]} 回 / 1日あたり {w["total"]/d:.0f}')
print("11/2 の週の内訳:")
for b in cr["byBot"]:
    print(f'  {b["bot"]}（{b["who"]}）: {b["visits"]} 回 / ページ {b["pages"]} / 記事 {b["records"]}'
          f' / 確認済み {b["verified"]} / 確認できず {b["unverified"]} / エラー {b["errors"]}')

print("\n== 3. 4つの段階（11/2〜11/5 19:32） ==")
user_bots = ["ChatGPT-User", "Claude-User", "PerplexityBot"]
crawl = cr["total"]
asked = {b["bot"]: b["visits"] for b in cr["byBot"] if b["bot"] in user_bots}
refs = {r["from"]: r["count"] for r in ev_h["referrers"]}
ai_ref = sum(v for k, v in refs.items() if "chatgpt" in k or "perplexity" in k or "claude.ai" in k or "gemini" in k)
print(f"段階1 クローラーが読む: {crawl} 回（1日 {crawl/DAYS_NOW:.0f}）")
print(f"段階2 利用者の依頼で AI が読む: {sum(asked.values())} 回 {asked}（1日 {sum(asked.values())/DAYS_NOW:.1f}）")
print(f"段階3 AI の答えのリンクから人が来る: {ai_ref} 回（来た元 {[k for k in refs if 'chatgpt' in k]}）")
print("段階4 名前で検索される: Search Console で 11/16 に見る（今回は見ていない）")
print(f"参考 人のページ表示: {ev_h['byWeek'][0]['views']} 回（1日 {ev_h['byWeek'][0]['views']/DAYS_NOW:.1f}）")

print("\n== 4. 「AIで読む」ボタン ==")
for v in cr["byVia"]:
    print(f'  via={v["via"]}: {v["visits"]} 回 / 記事 {v["records"]} / {v["bots"]}')
amazon = sum(int(s.split()[-1]) for v in cr["byVia"] for s in v["bots"].split("、") if s.startswith("Amazonbot"))
via_total = sum(v["visits"] for v in cr["byVia"])
print(f"  合計 {via_total} 回のうち Amazonbot {amazon} 回（{amazon/via_total*100:.1f}%）")
print("  前の週:", cr_all["byViaWeek"][-1])
btn = [c for c in ev_h["clicks"] if "AIで読む" in c["target"]]
print(f"  人がボタンを押した記録（ev-stats）: {btn}")

print("\n== 5. 人の来た元・よく見られたページ（11/2 の週） ==")
for r in ev_h["referrers"]:
    print(f'  {r["from"]}: {r["count"]}')
for p in ev_h["byPage"][:12]:
    print(f'  {p["path"]}: {p["views"]} 回 / 中央値 {p.get("medianSeconds")}秒 / 75%以上 {p.get("read75Pct")}%')

print("\n== 6. 改善 No.01 の確かめ（10/29 から・人だけ） ==")
gpu = [p for p in ev_h29["byPage"] if p["path"] == "/gpu-buy-or-rent"]
print(f"  /gpu-buy-or-rent: {gpu}")
hits = [c for c in ev_h29["clicks"] if any(k in c["target"] for k in ["#calc", "｜now", "｜files"])]
print(f"  #calc・now・files のクリック: {hits if hits else 0}")
print(f"  押された場所: {[(a['area'], a['count']) for a in ev_h29['areas']]}")

print("\n== 7. 改善 No.02 の確かめ（11/2 から・404） ==")
e = cr["errors"]
print(f"  404 の住所 {len(e)} 種類・{sum(x['visits'] for x in e)} 回")
print(f"  LOG361 の古い住所: {[x for x in e if 'LOG361' in x['path']] or 0} / /ai-agent: {[x for x in e if 'ai-agent' in x['path']] or 0}")
brace = [x for x in e if "%7B" in x["path"] or "%20%2B%20" in x["path"]]
print(f"  コードの中の文字列を住所と読んだもの: {len(brace)} 種類・{sum(x['visits'] for x in brace)} 回")
print(f"  それ以外: {[(x['path'], x['visits']) for x in e if x not in brace]}")

print("\n== 8. ハコブくん（機械の印なし） ==")
for w in hk["byWeek"]:
    print(f'  {w["week"]}: 出た {w["shown"]} / 押した {w["click"]} / あとで見に来た {w["later"]}'
          f' / 押した割合 {w["click"]/w["shown"]*100:.1f}%')
