import json

# === 1. Load file JSON ===
with open("nilai.json", "r", encoding="utf-8") as f:
    nilai_data = json.load(f)

with open("pemetaan_pl.json", "r", encoding="utf-8") as f:
    pemetaan = json.load(f)


# === 2. Buat index pemetaan berdasarkan kode mata kuliah ===
map_mk = { mk["kode_mk"]: mk for mk in pemetaan["mata_kuliah"] }


# === 3. Ubah format data menjadi OBE ===
hasil = []

for mhs in nilai_data:
    daftar_matkul = []

    for smt_key in mhs:
        if not smt_key.startswith("SMT"):
            continue
        
        semester = mhs[smt_key]

        # Lewati kalau semester null, kosong, atau bukan dict
        if not isinstance(semester, dict):
            continue

        for key_mk, nilai_huruf in semester.items():
            kode_mk = key_mk.split("_")[0]

            if kode_mk in map_mk:
                info_mk = map_mk[kode_mk]

                daftar_matkul.append({
                    "kode_mk": kode_mk,
                    "nama_mk": info_mk["nama_mk"],
                    "nilai": nilai_huruf,
                    "cpl": info_mk["cpl"]
                })

    hasil.append({
        "NPM": mhs["NPM"],
        "Nama": mhs["Nama_Mahasiswa"],
        "Matkul": daftar_matkul
    })


# === 4. Simpan output ===
with open("hasil_nilai_obe.json", "w", encoding="utf-8") as f:
    json.dump(hasil, f, indent=2, ensure_ascii=False)

print("✔ File berhasil dibuat: hasil_nilai_obe.json")
