Lewati ke isi

Assessment and eRaport Backlog Execution Plan

Last verified: 2026-04-19

1. Doc compliance

  • Mode kerja: server
  • Workspace root: /home/scola/odoo
  • Frontend repo: scola-fe-v2
  • Backend repo: custom_addons_scola/gcgscola
  • Dokumen acuan:
  • scola-fe-v2/docs/ai-guidelines/development-guide.md
  • scola-fe-v2/docs/ai-guidelines/workspace-governance.md
  • scola-fe-v2/docs/ai-guidelines/architecture-api.md
  • scola-fe-v2/docs/domains/academic/README.md
  • Scope audit:
  • kebijakan bobot nilai
  • alur input nilai guru dari LMS/CBT/manual sampai eRaport
  • coverage halaman ReportCardManagement lintas role
  • redundansi route, page, dan service

Dokumen ini adalah backlog eksekusi yang menurunkan hasil audit assessment dan eRaport menjadi work items yang bisa langsung dipecah menjadi issue FE, BE, dan QA.

2. Executive summary

Assessment dan eRaport di repo ini sudah mencakup hampir seluruh surface operasional sekolah:

  • setup kurikulum, komponen, grade scale, KKTP
  • teacher grading via LMS/CBT/manual
  • homeroom orchestration
  • admin workflow dan Dapodik sync
  • student dan parent consumption

Namun sistemnya belum punya SSOT tunggal untuk kebijakan nilai dan masih memiliki overlap implementasi yang signifikan.

Masalah tertinggi:

  1. kebijakan bobot nilai hidup di lebih dari satu tempat
  2. ACL batch input nilai masih berlubang
  3. kalkulasi final score memperlakukan 0 seperti nilai kosong
  4. subject line report tidak terikat kuat ke batch report
  5. admin dan homeroom pages terlalu overlap
  6. output student/parent belum memanfaatkan seluruh artefak rapor yang sudah tersedia di backend

3. Scope ownership

3.1 Backend modules dalam scope

Module Peran
scola_report_card owner workflow rapor, setup kurikulum rapor, komponen, serializer, ranking, publish
scola_assessment_bridge owner SSOT nilai agregat per siswa-mapel-komponen
scola_lms owner gradebook guru, publish nilai LMS ke bridge
scola_cbt owner publish nilai ujian CBT ke bridge
scola_dapodik_report_card_bridge owner validasi dan sinkronisasi rapor ke Dapodik

3.2 Frontend pages dalam scope

Role Pages
Admin AdminReportList, AdminReportDetail, CurriculumList, AssessmentComponentTree, GradeScaleList, KKTPConfig, ExamList, DapodikRaporSync
Faculty TeacherReportLineList, BatchScoreInput, HomeroomReportList, HomeroomReportDetail
Student StudentReportList, StudentReportDetail
Parent raportList
Leadership CurriculumQualityGate

4. Current-state decisions

4.1 Canonical policy decisions yang perlu diambil

  1. assessment_component.effective_weight harus menjadi SSOT final contribution ke eRaport.
  2. LMS weight profile dan mapping template harus menjadi alat bantu input, bukan sumber kebenaran final yang terpisah.
  3. academic.grade harus menjadi satu-satunya bridge nilai lintas LMS, CBT, dan manual.
  4. Final publish harus dibaca sebagai snapshot resmi, bukan view dinamis yang masih mudah berubah setelah publish.

4.2 Canonical routes yang disarankan

Role Route kanonik Catatan
Guru /faculty/assessment-hub pertahankan /faculty/report-card sebagai redirect sementara
Wali kelas /faculty/homeroom/report-card pertahankan /faculty/homeroom/orchestrator sebagai redirect sementara
Admin /admin/report-card route setup tetap di namespace ini
Parent /parent/report-cards pertahankan alias lama sebagai redirect sementara

5. Module backlog

5.1 scola_report_card

Status: owner utama, tetapi terlalu menanggung policy, workflow, serializer, dan sebagian orchestration yang belum ketat.

ID Priority Problem Refactor / change Acceptance criteria Depends on
RC-01 P0 batch_score_save bypass akses line-level dan draft guard Samakan policy mutasi batch dengan save per-line; wajib cek ownership line, role, dan state user tanpa otorisasi tidak bisa update komponen via batch endpoint; teacher hanya bisa ubah line miliknya; line non-draft ditolak none
RC-02 P0 final_score salah untuk skor 0 dan komponen kosong Tambah status eksplisit komponen (missing, filled, exempt) dan hitung score tanpa redistribusi bobot implisit skor 0 tetap dihitung; komponen kosong tidak menaikkan bobot komponen lain; total contribution selalu sesuai effective_weight RC-04
RC-03 P0 report tidak terikat kuat ke batch Ubah generator subject line agar hanya membaca teaching assignment / subject dari batch report aktif report siswa pada batch A tidak menarik mapel dari batch B; tidak ada subject bleed lintas rombel none
RC-04 P0 unique report key terlalu lemah Revisi constraint report menjadi minimal student + batch + term atau model ekuivalen satu siswa bisa punya report per batch-term tanpa collision; migrasi existing data aman none
RC-05 P1 submit/publish belum mewajibkan kelengkapan Tambah workflow gate untuk komponen wajib, attendance, deskripsi, P5, catatan, dan freeze snapshot report tidak bisa submit/publish jika mandatory fields belum lengkap; pesan error menjelaskan blocker RC-02, RC-03
RC-06 P1 artefak rapor belum lengkap di serializer Tambah field API untuk QR, signature, notes, publish metadata, achievement description, remedial summary FE student/parent/admin dapat membaca field yang sama dari serializer domain RC-05
RC-07 P1 reject flow belum konsisten menampung alasan Wajibkan reason pada reject dan simpan audit trail yang bisa dibaca kembali di detail report semua reject punya reason; reason tampil di audit/log workflow none
RC-08 P1 auto-fill dari bridge belum selesai Implement action_auto_fill_from_exams() atau ganti dengan service refresh tunggal dari academic.grade homeroom/admin bisa refresh report tanpa TODO path; source nilai yang dipakai jelas AB-01
RC-09 P2 attendance izin belum lengkap Lengkapi permission_days dari sumber attendance yang benar dan pastikan serializer mengirim ringkasan lengkap report attendance tidak lagi hardcoded 0 untuk izin none

5.2 scola_assessment_bridge

Status: fondasi SSOT nilai sudah benar arahnya, tetapi contract koreksi dan audit trail belum cukup kuat.

ID Priority Problem Refactor / change Acceptance criteria Depends on
AB-01 P0 kontrak bridge belum formal sebagai SSOT tunggal Dokumentasikan dan enforce academic.grade sebagai owner final aggregated component score semua publisher nilai lintas sumber menulis ke model yang sama dengan key yang konsisten none
AB-02 P0 idempotency check memblokir republish koreksi Ubah urutan logic: bandingkan payload dan allow overwrite flow yang terotorisasi sebelum duplicate short-circuit republish skor berbeda dengan source sama tidak macet; audit trail menyimpan old/new value AB-01
AB-03 P1 override manual belum cukup terstruktur Wajibkan source_type, overwrite_reason, dan metadata source saat nilai diganti setiap grade event punya alasan dan asal perubahan yang dapat diaudit AB-02
AB-04 P1 notifikasi publish disenyapkan Ganti bare except dengan logging terstruktur dan failure telemetry kegagalan notifikasi tercatat tanpa merusak transaksi utama none
AB-05 P2 taxonomy komponen belum divisualkan sebagai policy contract Tambah helper read-model untuk daftar canonical component type dan alias FE admin dapat menampilkan komponen canonical tanpa hardcode ganda none

5.3 scola_lms

Status: grading workspace sudah kaya fitur, tetapi masih berisiko drift dari formula rapor.

ID Priority Problem Refactor / change Acceptance criteria Depends on
LMS-01 P0 weight profile LMS bisa berbeda dari formula eRaport Tambah policy synchronization layer antara active curriculum component weights dan active LMS profile admin bisa melihat mismatch policy; LMS tidak diam-diam berjalan dengan formula lain RC-02, AB-01
LMS-02 P0 idempotency_key frontend terlalu stabil per student-component Ubah key dan contract publish agar koreksi skor dapat diproses tanpa duplicate dead-end publish ulang setelah koreksi assignment berhasil masuk ke bridge AB-02
LMS-03 P1 publish API belum kirim metadata source selengkap CBT Sertakan source_exam_id, source_attempt_id, item identity, dan konteks bucket saat publish trace dari report component ke item sumber LMS bisa dilakukan AB-03
LMS-04 P1 teacher UI berisiko salah paham bobot final Expose effective_weight dan policy summary di gradebook/component options API FE dapat menampilkan kontribusi final dan bukan hanya bucket-local weight RC-02
LMS-05 P2 mapping template dan weight profile terpisah dari policy governance Tambah admin screen/read-model policy yang memperlihatkan active mapping, active profile, dan effective report formula satu layar cukup untuk audit konfigurasi penilaian LMS-01

5.4 scola_cbt

Status: CBT publish path lebih rapi dari LMS, tetapi masih perlu diselaraskan dengan policy final rapor.

ID Priority Problem Refactor / change Acceptance criteria Depends on
CBT-01 P1 publish CBT belum tervisualkan sebagai bagian dari policy yang sama Selaraskan payload publish CBT dengan contract academic.grade terbaru CBT publish tetap sukses setelah contract bridge diperketat AB-02
CBT-02 P2 auto publish behavior belum jelas sebagai contract operasional Tegaskan trigger auto-publish, manual publish, dan observability event-nya admin/guru tahu kapan nilai CBT otomatis masuk bridge AB-01

5.5 scola_dapodik_report_card_bridge

Status: integrasi ada, tetapi status sinkronisasi belum jujur secara operasional.

ID Priority Problem Refactor / change Acceptance criteria Depends on
DP-01 P0 sync bisa success=True walau kirim gagal Ubah outcome menjadi synced, queued, failed, export_only UI dan API tidak lagi menyatakan sukses saat endpoint Dapodik gagal none
DP-02 P1 retry dan audit masih tipis Tambah retry policy, error summary, dan last-attempt metadata operator bisa tahu payload mana yang gagal dan kapan retry perlu dijalankan DP-01
DP-03 P1 validasi source report belum memanfaatkan completeness gate baru Sinkronkan validasi Dapodik dengan freeze snapshot publish hanya report yang valid dan final yang bisa disinkronkan RC-05

6. Frontend page backlog

6.1 Admin pages

Page Route Current role Backlog action Acceptance criteria Sequence
AdminReportList.vue /admin/report-card orchestration list Ekstrak shared list shell dengan homeroom; sisakan admin-only actions via action config list admin dan homeroom memakai shell yang sama; admin masih punya generate, ranking, publish, Dapodik entry points Wave 3
AdminReportDetail.vue /admin/report-card/:reportId orchestration detail Ekstrak shared report detail layout dengan homeroom; action bar driven by role/state detail admin dan homeroom tidak duplikasi layout tabel/info card; action berbeda hanya via config Wave 3
CurriculumList.vue /admin/report-card/curriculum policy setup Tambah link ke grading policy overview dan effective formula summary admin bisa melihat kurikulum aktif dan masuk ke layar policy tanpa hunting manual Wave 2
AssessmentComponentTree.vue /admin/report-card/curriculum/:curriculumId/components component setup Tampilkan effective_weight dan warning jika mismatch dengan LMS profile user melihat bobot final per node; mismatch policy ditandai Wave 2
GradeScaleList.vue /admin/report-card/grade-scale grade scale Pastikan relasinya jelas ke report final grade dan detail report admin paham grade scale mana yang aktif dan dipakai Wave 4
KKTPConfig.vue /admin/report-card/kktp ketuntasan policy Tambah status completeness per subject dan visibility di report preview subject tanpa KKTP terlihat sebagai blocker publish jika diwajibkan Wave 4
ExamList.vue /admin/report-card/exams referensi exam Kaitkan exam sources dengan bridge/report refresh policy admin dapat tahu exam mana yang menjadi source nilai rapor Wave 4
DapodikRaporSync.vue /admin/report-card/dapodik-sync sync ops Tampilkan status baru synced/queued/failed/export_only dan retry affordance operator bisa membedakan sukses lokal vs sukses kirim Wave 5
GenerateReportWizard.vue modal report generation Pastikan preview batch/subject memakai scoping batch yang benar preview generate tidak menampilkan mapel dari batch lain Wave 2
ComputeRankingWizard.vue modal ranking Sinkronkan warning dengan completeness gate baru ranking tidak jalan pada report batch yang belum valid bila policy mengharuskan Wave 4
ReportLineEditModal.vue shared modal line edit Tampilkan effective_weight, source grade, overwrite reason, dan status component guru/admin tahu kontribusi final dan source tiap komponen Wave 2
ReportLineDetailModal.vue shared modal read-only line detail Tambah achievement description, remedial, source metadata detail line setara dengan kebutuhan audit akademik Wave 4

6.2 Faculty pages

Page Route Current role Backlog action Acceptance criteria Sequence
TeacherReportLineList.vue /faculty/assessment-hub and alias teacher line inbox Jadikan route ini kanonik; tampilkan policy summary, completeness, dan source visibility guru melihat line miliknya, kontribusi final, status lengkap/belum lengkap Wave 2
BatchScoreInput.vue /faculty/report-card/batch-input mass input Perkuat guard, tampilkan effective_weight, dan jelaskan source of truth manual override teacher hanya bisa save line berwenang; kolom bobot tidak menyesatkan Wave 1
HomeroomReportList.vue /faculty/homeroom/report-card and alias homeroom orchestration list Gabungkan shell dengan admin list layout dan checklist memakai komponen shared; homeroom-only action tetap tersedia Wave 3
HomeroomReportDetail.vue /faculty/homeroom/report-card/:reportId homeroom orchestration detail Gabungkan layout dengan admin detail homeroom detail dan admin detail berbagi layout dasar; role action bar terpisah Wave 3

6.3 Student and parent pages

Page Route Current role Backlog action Acceptance criteria Sequence
StudentReportList.vue /student/report-card list published report Tambah publish metadata ringkas dan status validasi siswa bisa membedakan report final yang terbaru Wave 4
StudentReportDetail.vue /student/report-card/:reportId detail published report Tambah QR, signature, notes, achievement description, remedial summary detail siswa memuat artefak rapor resmi yang relevan Wave 4
raportList.vue /parent/report-cards list + PDF Tambah parent detail viewer atau preview drawer yang memakai serializer domain yang sama dengan student orang tua tidak hanya bergantung pada PDF untuk membaca detail rapor Wave 4

6.4 Leadership page

Page Route Current role Backlog action Acceptance criteria Sequence
CurriculumQualityGate.vue leadership monitoring route observability Tampilkan mismatch policy, ACL anomaly, stuck workflow, dan Dapodik failed queue wakasek dapat memantau readiness rapor dari satu dashboard Wave 5

7. Shared FE service backlog

Service Problem Refactor / change Acceptance criteria Sequence
reportCard.service.js terlalu banyak menanggung domain dan orchestration campur UI concern Pisahkan read-model API, mutation API, dan workflow helpers pemanggilan service lebih jelas; shared pages tidak perlu duplicate shaping logic Wave 1
assessmentWorkflow.service.js wrapper tipis, sebagian overlap dengan reportCard.service Jadikan workflow audit/telemetry helper murni, bukan salinan API layer tidak ada duplikasi method domain; observability tetap hidup Wave 3
parentReportCard.service.js shaping payload parent terpisah dari serializer domain utama Reuse serializer domain dan buat adapter tipis khusus PDF parent viewer dan PDF membaca sumber data yang konsisten Wave 4
reportCardSetup.service.js belum mengkonsolidasikan policy overview Tambah method untuk policy summary dan mismatch status halaman setup dapat menampilkan formula final dan mismatch LMS Wave 2
gradebook.service.js publish flow dan aggregation terlalu besar Pecah publish policy helper, component aggregation helper, dan source metadata helper republish lebih mudah diuji; logic kebijakan tidak tercampur dengan UI transform Wave 2

Wave 1 - Security and correctness foundation

Target:

  • tutup celah ACL
  • betulkan hasil hitung
  • kunci scoping report per batch

Items:

  1. RC-01
  2. RC-03
  3. RC-04
  4. AB-01
  5. AB-02
  6. LMS-02
  7. frontend items berlabel Wave 1

Release gate:

  • batch save unauthorized request ditolak
  • score 0 masuk kalkulasi
  • satu report tidak bisa tercampur batch lain

Wave 2 - Policy SSOT and teacher-facing clarity

Target:

  • satu formula resmi terlihat jelas
  • teacher/admin melihat kontribusi final yang benar

Items:

  1. RC-02
  2. LMS-01
  3. LMS-03
  4. LMS-04
  5. AB-03
  6. frontend items berlabel Wave 2

Release gate:

  • effective formula tampil di setup dan edit modal
  • mismatch LMS vs eRaport terlihat eksplisit
  • republish nilai LMS menyertakan source metadata yang memadai

Wave 3 - Workflow and UI consolidation

Target:

  • kurangi duplikasi admin vs homeroom
  • rapikan orchestration layer FE

Items:

  1. RC-05
  2. RC-07
  3. frontend items berlabel Wave 3

Release gate:

  • admin/homeroom shared shell aktif
  • publish blocker tampil sebelum workflow action
  • reject reason wajib dan terbaca

Wave 4 - Student and parent output completeness

Target:

  • rapor final tampil lengkap ke semua consumer

Items:

  1. RC-06
  2. RC-08
  3. RC-09
  4. frontend items berlabel Wave 4

Release gate:

  • student dan parent membaca artefak rapor resmi yang sama
  • refresh report dari bridge selesai tanpa path TODO
  • attendance summary lengkap

Wave 5 - Dapodik integrity and leadership monitoring

Target:

  • sync status operasional jujur
  • leadership monitoring jadi berguna untuk release readiness

Items:

  1. DP-01
  2. DP-02
  3. DP-03
  4. CBT-01
  5. CBT-02
  6. frontend items berlabel Wave 5

Release gate:

  • operator bisa membedakan queue, fail, dan success real
  • leadership dashboard menampilkan blocker utama rapor

9. Suggested issue breakdown

9.1 Backend issue packs

Issue pack Modules Suggested owner
Pack A - ACL and report scoping scola_report_card Agent Odoo
Pack B - Assessment bridge overwrite contract scola_assessment_bridge, scola_lms, scola_cbt Agent Odoo
Pack C - Publish completeness and serializer enrichment scola_report_card Agent Odoo
Pack D - Dapodik truthful status scola_dapodik_report_card_bridge Agent Odoo

9.2 Frontend issue packs

Issue pack Pages / services Suggested owner
Pack E - Teacher grading clarity TeacherReportLineList, BatchScoreInput, ReportLineEditModal, gradebook.service Agent FE
Pack F - Admin/homeroom consolidation AdminReportList, HomeroomReportList, AdminReportDetail, HomeroomReportDetail, workflow services Agent FE
Pack G - Student/parent report completeness StudentReportDetail, StudentReportList, raportList, parent/report services Agent FE
Pack H - Policy overview and Dapodik UI setup pages, DapodikRaporSync, leadership quality gate Agent FE

9.3 QA issue packs

Issue pack Verification focus
Pack Q1 unauthorized batch save, role ownership, draft-only mutation
Pack Q2 final score with 0, missing component, exempt component
Pack Q3 multi-batch student report generation and subject scoping
Pack Q4 LMS republish after correction
Pack Q5 student/parent display completeness and Dapodik truthful status

10. Definition of done

Sebuah wave dianggap selesai jika:

  1. acceptance criteria tiap item terpenuhi
  2. tidak ada route alias baru yang menambah kebingungan
  3. policy final contribution terlihat konsisten di setup, teacher input, report detail, dan publish output
  4. workflow role boundary dibuktikan oleh test atau manual verification yang terdokumentasi
  5. FE dan BE tidak lagi memiliki kontradiksi antara bobot LMS dan bobot eRaport

11. Notes for implementation

  1. Jangan mulai dari refactor UI besar sebelum RC-01, RC-03, RC-04, AB-02, dan LMS-02 selesai. Jika boundary data masih longgar, shared shell hanya akan memoles masalah lama.
  2. Jangan expose bobot baru di FE sebelum contract effective_weight final benar-benar stabil.
  3. Untuk migrasi report key dan batch scoping, siapkan skrip migrasi dan rollback plan terpisah.
  4. Untuk perubahan student/parent serializer, pertahankan backward compatibility selama satu release cycle jika PDF generator atau consumer lain masih membaca payload lama.

12. References

  • Domain SSOT: docs/domains/academic/README.md
  • Existing implementation artifacts:
  • docs/implementation/Academic/ADMIN_AKADEMIK_PHASE4_RUNBOOK_DAN_ROLLBACK_2026-02-26.md
  • docs/implementation/Academic/GURU_PENILAIAN_PHASE5_RUNBOOK_DAN_ROLLBACK_2026-02-27.md
  • Relevant code owners:
  • custom_addons_scola/gcgscola/scola_report_card
  • custom_addons_scola/gcgscola/scola_assessment_bridge
  • custom_addons_scola/gcgscola/scola_lms
  • custom_addons_scola/gcgscola/scola_cbt
  • custom_addons_scola/gcgscola/scola_dapodik_report_card_bridge
  • scola-fe-v2/src/views/ReportCardManagement
  • scola-fe-v2/src/services/reportCard
  • scola-fe-v2/src/services/lms/gradebook.service.js