Tambah Analisis Proses Asesmen, Kelompok Capaian, riwayat nilai terstruktur, dan perbaikan bug CPL

- Portofolio: section "Analisis Proses Asesmen" (dropdown tertutup default) —
  distribusi huruf mutu, kelompok capaian (mean ± SD), Sub-CPMK terlemah/terkuat,
  kesenjangan rencana vs realisasi, mahasiswa berisiko, tren lintas tahun ajaran
- Portofolio: Nomor Dokumen & Tanggal Terbit terisi otomatis; placeholder contoh
  di Realisasi Pembelajaran dan Kendala & Tindak Lanjut; tombol "Isi Otomatis"
  merangkai draf Simpulan dari analisis + realisasi + kendala
- Nilai: tabel Kelompok Capaian (Atas/Tengah/Bawah, shading warna) dipindah ke
  dropdown "Detail Tambahan" bersama Skala Poin/Rincian Bobot/Hasil Ketercapaian;
  tabel utama tak lagi ada scroll vertikal internal
- Nilai: riwayat pengisian dicatat terstruktur (waktu, dosen, aksi, komponen),
  tanpa batas 8 entri, dengan ringkasan per komponen + dropdown Log Lengkap —
  mendukung akuntabilitas team teaching
- Fix bug data: seed kurikulum menyimpan 'cpl' CPMK sebagai string tunggal,
  bukan list, sehingga pecah per huruf saat di-join() di tabel Hasil
  Ketercapaian/Rekap (mis. "CPL-03" -> "C, P, L, -, 0, 3"); dinormalisasi di
  db.py (runtime) dan tools/extract_seed.py (agar re-seed berikutnya benar)
- Hover tooltip deskripsi lengkap di kode Sub-CPMK/CPMK/CPL (halaman Nilai
  dan Rekap CPL/CPMK)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Power BI Dev
2026-08-08 00:09:57 +07:00
parent af369883f3
commit 5d7ab16733
8 changed files with 491 additions and 37 deletions
+6
View File
@@ -30,6 +30,12 @@ def kurikulum() -> dict:
global _kur
if _kur is None:
_kur = json.loads(SEED.read_text(encoding="utf-8"))
# seed lama menyimpan 'cpl' CPMK sebagai string tunggal ("CPL-03")
# alih-alih list — semua pemakai (rollup, template |join) mengasumsikan
# list; tanpa ini string ikut ter-iterasi per huruf ("C, P, L, -, 0, 3").
for v in _kur.get("cpmk", {}).values():
if isinstance(v.get("cpl"), str):
v["cpl"] = [v["cpl"]]
return _kur