build_rps() mengisi blok naratif (Peta CPL-CPMK, Deskripsi Singkat MK,
Bahan Kajian, Pustaka, Media, Dosen Pengampu, MK Prasyarat) lewat
t.cell(18, 2) dst -- indeks baris tetap sesuai template asli (39 baris).
Tapi baris-baris itu dieksekusi SETELAH daftar CPL/CPMK/Sub-CPMK
digandakan & baris contohnya dibuang -- jumlah baris yang disisipkan
beda-beda tiap MK (tergantung berapa CPL/CPMK/Sub-CPMK-nya), jadi
t.cell(18, 2) di tabel yang sudah berubah itu tidak lagi menunjuk baris
"Peta CPL-CPMK" yang dimaksud. Teks jadi nyasar ke sel/baris lain,
termasuk kolom sempit -- terlihat sebagai puluhan halaman teks terpotong
huruf demi huruf.
Pola yang benar sudah dipakai untuk tabel mingguan (trs[31], trs[33],
dst -- referensi elemen XML baris asli yang dibekukan di awal, tak
ikut bergeser). Terapkan pola sama (helper cell()) untuk blok naratif
yang kelewat.
Diverifikasi: label & isi sekarang sejajar benar (baris "Peta CPL - CP
MK" berisi peta CPMK->CPL, bukan lagi nama dosen pengampu), dokumen
turun dari puluhan halaman rusak jadi 2 halaman rapi untuk bagian ini.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Sel "Peta CPL-CPMK" pada template resmi UNTAN memuat tabel kecil bersarang
(contoh isian bawaan SN-Dikti). _set_text() cuma membuang paragraf tambahan
saat menimpa sel dengan teks generate, tak tahu ada tabel bersarang di
dalamnya -- hasilnya sel berakhir dengan w:tbl tanpa w:p setelahnya, yang
melanggar skema OOXML. Word membaca file itu sebagai "rusak" dan otomatis
memperbaikinya sendiri saat dibuka, dan perbaikan-otomatis itulah yang
mengacak tata letak dokumen.
- _set_text() sekarang membuang tabel bersarang tersisa sebelum menulis
teks baru ke sel manapun (berlaku umum, bukan cuma sel yang saat ini
kena masalah)
- Ganti templates/rps_untan.docx dengan versi yang sudah dirapikan
formatnya (font/spacing) -- struktur baris & kolom identik (39x18),
jadi tetap kompatibel dengan pemetaan baris di rps_untan.py
- Diverifikasi: tak ada lagi sel yang berakhir dengan tabel bersarang
tanpa paragraf penutup di seluruh dokumen hasil generate
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Dokumen RTM resmi sesuai template baku prodi (FORM RPS & RTM UNTAN), diisi
di halaman /rps/{kode}/rtm sendiri setelah RPS ditandai selesai — blok Tugas
bisa ditambah/dihapus dinamis, dan bisa diunduh sebagai .docx. Murni
dokumentasi, tak menyimpan atau memengaruhi nilai/skor mahasiswa sama sekali.
- Tampilan "Isi Per Komponen Penilaian" diganti dari tombol bertumpuk teks
jadi tabel (Komponen/Sub-CPMK/Bobot/Status/Aksi) dengan status berupa
stempel, lebih mudah dipindai.
- Filter pencarian MK (ketik kode/nama) di kotak penugasan dosen /admin.
- Istilah NPM diseragamkan jadi NIM di seluruh aplikasi (label, header,
template Excel, dokumen portofolio), termasuk migrasi kolom database
mahasiswa.npm -> nim yang aman (ALTER TABLE RENAME COLUMN, otomatis saat
startup, tanpa kehilangan data; parser Excel tetap terima file lama
berheader NPM).
- Fitur ganti password mandiri (/akun): verifikasi password lama, sesi lain
otomatis keluar setelah berhasil, sesi yang dipakai tetap aktif.
- RPS: dosen RPS+MK kini bisa menyesuaikan redaksi kalimat Sub-CPMK (bagian
D) untuk MK yang diampu -- kode & kaitan CPMK/CPL tetap dari kurikulum,
hanya teksnya yang bisa disesuaikan. Penyesuaian otomatis konsisten di
dropdown mingguan (F), checklist komponen (G), serta unduhan RPS &
portofolio, tanpa menyentuh data kurikulum induk atau halaman nilai/
dashboard prodi.
- Form RPS dibungkus <fieldset disabled> untuk dosen tanpa hak edit --
seluruh field benar-benar terkunci (bukan cuma tombol simpan hilang).
- Peran dosen dipecah jadi dosen_mk (nilai & portofolio saja, RPS baca-only)
dan dosen_rps_mk (bisa edit RPS juga); migrasi otomatis dari skema lama.
- Rekap Bobot Penilaian RPS pakai 6 komponen teknik asesmen baku prodi;
total wajib tepat 100%, komponen individual boleh dikosongkan.
- Dropdown & daftar Sub-CPMK tak lagi terpotong teksnya.
- Bagian F (Rencana Mingguan): tombol "Isi Otomatis" per baris (termasuk
usulan Bobot) yang muncul setelah Sub-CPMK dipilih, plus panel contoh
teks bantu per kolom.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Dashboard pemetaan statis kini dilayani aplikasi di /dashboard
(app/static/dashboard.html). Fitur lengkap Tahap 1-4 + dasbor monitoring,
menu global, filter semester, input nilai langsung, penggabungan nilai
team teaching, tabel bisa urut. Dockerfile berubah dari nginx statis ke
uvicorn/FastAPI: healthcheck, proxy-headers, volume /data (SQLite).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>