#!/usr/bin/env python3
"""Laporan konsolidasi konten DAS (hasil + daftar redirect)."""
import json, os, re

WS = os.path.dirname(os.path.abspath(__file__))
lap = json.load(open(os.path.join(WS, "das_konsolidasi_laporan.json")))
peta = {r["id"]: r for r in json.load(open(os.path.join(WS, "das_peta_konten.json")))}
GEL2 = {6571: 6722, 6726: 6722, 6931: 6722, 7626: 7777, 6730: 6661, 8298: 6479, 6411: None, 6916: None, 5449: None, 6867: None}
urls = [l.strip() for l in open(os.path.join(WS, "das_url_pensiun.txt")) if l.strip()]

L = []
L.append("# Konsolidasi konten DAS Bengkel Indonesia (17 Sep 2026)\n")
L.append("**Hasil akhir: 192 artikel publish → 150.** 42 artikel dipensiunkan (status draft, masih bisa dipulihkan), "
         "17 di antaranya isinya digabung dulu ke halaman utama klasternya.\n")

L.append("\n## 1. Artikel yang isinya digabung ke halaman utama\n")
L.append("| Artikel yang dipensiunkan | Digabung ke | Bagian yang dipindah |")
L.append("|---|---|---|")
for x in sorted(lap, key=lambda y: -y["src"]):
    if not x.get("dst"):
        continue
    bagian = "; ".join(x.get("bagian") or []) or "—"
    L.append(f"| #{x['src']} {x['judul_src'][:52]} | #{x['dst']} {x['judul_dst'][:38]} | {bagian[:110]} |")
for src, dst in sorted(GEL2.items()):
    if dst:
        L.append(f"| #{src} | #{dst} | (gelombang 2 — duplikat, sebagian tanpa bagian baru) |")

L.append("\n## 2. Halaman utama yang jadi lebih kuat\n")
L.append("| Halaman | Kata sebelum | Kata sesudah |")
L.append("|---|---|---|")
for row in [("5569", "Bengkel Spesialis Alphard Surabaya", 676, 1166),
            ("6304", "Bengkel Mobil Alphard Surabaya Terbaik", 1007, 1261),
            ("5684", "Bengkel Spesialis Lexus di Surabaya", 595, 765),
            ("5619", "Bengkel Spesialis Fortuner Surabaya", 329, 746),
            ("7810", "Kapan Mobil Perlu Engine Overhaul", 996, 1733),
            ("8051", "Bengkel Mobil Mewah di Surabaya", 1259, 1828),
            ("8079", "Gejala Mesin Honda Perlu Overhaul", 1193, 1724),
            ("7812", "Cara Merawat Mesin Mobil Agar Awet", 1307, 1449),
            ("6887", "Bengkel Overhaul Mobil Surabaya", 945, 1116),
            ("6722", "Bengkel Mobil Honda Brio Terbaik", 263, 600)]:
    L.append(f"| #{row[0]} {row[1]} | {row[2]} | {row[3]} |")
L.append("\n(Catatan: angka di dalam API = isi artikel saja. Di halaman live sudah diperiksa: "
         "`/bengkel-spesialis-alphard-surabaya/` ≈2.950 kata, `/bengkel-spesialis-lexus-di-surabaya/` ≈2.561 kata.)\n")

L.append("\n## 3. Daftar URL pensiun + target redirect (42)\n")
L.append("Ini yang perlu Bos pasang redirect 301 — REST WordPress tidak bisa membuat redirect, butuh plugin "
         "(Redirection, Yoast Premium, atau aturan di nginx/hosting).\n")
L.append("```")
for u in urls:
    L.append(u)
L.append("```")
L.append("\nSemua artikel di atas **masih tersimpan** sebagai draft di WordPress. Kalau ada yang ternyata masih "
         "dibutuhkan, tinggal dipulihkan tanpa kehilangan tulisan.\n")

L.append("\n## 4. Cara kerja & verifikasi\n")
L.append("- Pemilihan: artikel yang tidak dapat impresi sama sekali selama 90 hari, bersudut sama dengan artikel lain, "
         "atau bagian dari batch terbit di hari yang sama (2 Agu, 19 Agu, 8 Jul, 28-29 Mei 2024).")
L.append("- Penggabungan: hanya bagian `<h2>` yang **belum ada** di halaman tujuan yang dipindah, maksimal 2 bagian "
         "per artikel, tanpa memindahkan blok FAQ/Kesimpulan.")
L.append("- Verifikasi: tiap penulisan dibaca ulang dari API (`?context=edit`), status tiap artikel diperiksa satu per satu, "
         "dan halaman utama diperiksa di HTML live.")
L.append("- Semua tindakan reversibel: konten yang dipensiunkan berstatus draft, bukan dihapus.\n")

L.append("\n## 5. Langkah berikutnya\n")
L.append("1. 👤 Pasang redirect 301 sesuai daftar di atas.")
L.append("2. 👤 Request Indexing halaman utama hasil gabung (paling penting: Alphard, Lexus, Fortuner, overhaul, Honda Brio, Honda umum).")
L.append("3. 🤖 Cek ulang jumlah query & impresi per minggu — kalau jumlah query mulai naik, konsolidasinya bekerja.")
L.append("4. 🤖 Gelombang berikutnya kalau diperlukan: klaster rem (20 artikel) dan servis (28 artikel) belum diperiksa sedetail ini.")

out = os.path.join(WS, "laporan_konsolidasi_das_20260917.md")
open(out, "w").write("\n".join(L))
print("ditulis:", out, os.path.getsize(out), "byte")
