Skip to content

feat: fill missing thesis grade from graduation Excel (ENH-010) - #112

Merged
ffooll-bit merged 1 commit into
mainfrom
feature/fill-missing-thesis-grade
Aug 31, 2026
Merged

feat: fill missing thesis grade from graduation Excel (ENH-010)#112
ffooll-bit merged 1 commit into
mainfrom
feature/fill-missing-thesis-grade

Conversation

@ffooll-bit

Copy link
Copy Markdown
Owner

Summary

Adds a nilai_skripsi letter-grade column to the PISN graduation Excel template and fills in a registered-but-ungraded thesis/skripsi course at submission time.

  • Graduation: EXCEL_HEADERS/downloadTemplate/parseExcel recognise a 5th nilai_skripsi column (stored uppercased per student); new private findMissingGradeThesis() resolves the thesis course that is still ungraded and returns its composite key; finish() pushes the Excel value via UpdateNilaiPerkuliahanKelas only when the grade is currently missing.
  • NeoFeeder: new updateNilaiPerkuliahanKelas($token, $idRegistrasi, $idKelas, $record) using sendMutation('UpdateNilaiPerkuliahanKelas', ...) with the composite key id_registrasi_mahasiswa + id_kelas_kuliah (schema verified live via GetDictionary).
  • wizard.php: card 3 shows the Excel value with a "(akan diisi)" tag on an ungraded thesis row.

Related issues

Fixes #110

Checklist

  • php -l passes on all modified PHP files
  • npm run build succeeds and committed assets are up to date (no asset changes)
  • php spark routes shows correct new routes (if routes changed) (no route changes)
  • vendor/bin/php-cs-fixer fix passes (no style violations)
  • vendor/bin/phpunit is green (36/36)
  • No debug code: dd(), var_dump(), console.log(), print_r(), exit()
  • All user inputs validated server-side
  • All POST forms include csrf_field() (no new forms)
  • All HTML output uses esc()
  • No unrelated files changed
  • CHANGELOG updated if this is a user-facing change
  • Behaviour verified in the browser if UI changed (attach a screenshot if useful)

Screenshot (if applicable)

Not included — verified via Playwright (non-mutating): uploading a file with the nilai_skripsi column parses cleanly and card 3 renders the thesis row correctly.

Notes for reviewers

  • The grade is pushed only when the target thesis/skripsi course currently has no grade (nilai_huruf/nilai_angka empty) and a value was provided in the Excel column; students without a value are left untouched.
  • Composite key (id_registrasi_mahasiswa + id_kelas_kuliah) is sourced from the cloud transcript row returned by getCekTranskripMahasiswa (verified live on NIM 202010087).
  • A deliberate live-mutation was NOT performed during verification (no Berikutnya/finish() on real data); the push path was covered by a read-only reflection check of findMissingGradeThesis() (all cases pass) and local CI.

@ffooll-bit
ffooll-bit merged commit 5b7678e into main Aug 31, 2026
1 check passed
@ffooll-bit
ffooll-bit deleted the feature/fill-missing-thesis-grade branch August 31, 2026 04:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Graduation wizard: allow filling in a missing thesis grade

1 participant