# -*- coding: utf-8 -*- """ Ekstrak data kurikulum (CPL, CPMK, MK, Sub-CPMK, matriks) yang ter-embed di dashboard pemetaan, lalu simpan sebagai seed/kurikulum.json. Jalankan ulang bila data dashboard diperbarui: python tools/extract_seed.py [path_index_html] """ import json import pathlib import sys BASE = pathlib.Path(__file__).resolve().parent.parent DEFAULT_SRC = BASE.parent / "dashboard-deploy" / "index.html" OUT = BASE / "seed" / "kurikulum.json" def main() -> None: src = pathlib.Path(sys.argv[1]) if len(sys.argv) > 1 else DEFAULT_SRC html = src.read_text(encoding="utf-8") i = html.find('{"cpl"') if i < 0: raise SystemExit(f"Blok JSON kurikulum tidak ditemukan di {src}") data, _ = json.JSONDecoder().raw_decode(html[i:]) OUT.parent.mkdir(parents=True, exist_ok=True) OUT.write_text(json.dumps(data, ensure_ascii=False, indent=1), encoding="utf-8") n_sub = sum( len(c["subs"]) for mk in data["sub"].values() for c in mk["cpmks"].values() ) print( f"[OK] {OUT.name}: {len(data['cpl'])} CPL, {len(data['cpmk'])} CPMK, " f"{len(data['mk'])} MK, {n_sub} Sub-CPMK (sumber: {src})" ) if __name__ == "__main__": main()