Lewati ke isi

Extracurricular End-to-End UAT

Checklist UAT manual e2e lengkap untuk modul ekstrakurikuler lintas role, dari setup ekskul, pendaftaran siswa, approval anggota, absensi pembina, sampai monitoring orang tua dan wakasek.

Last verified: 2026-05-01 Audience: QA, PM, implementor sekolah, admin kesiswaan, guru BK, guru pembina, wakasek kesiswaan Workspace root: /home/salfath/scola-fe-v2 Related FE automation: tests/e2e/features/student_affairs/extracurricular_lifecycle.spec.ts Related QA references: uat-scenarios.md, seed-contract.md, UAT_SETUP_GUIDE.md


1. Tujuan

Dokumen ini dipakai untuk menjawab pertanyaan berikut: - apakah seluruh alur operasional ekskul berjalan end-to-end untuk semua role yang terlibat? - apakah hak akses antar role konsisten antara menu, halaman detail, aksi tombol, dan direct URL? - apakah status anggota dan status presensi tampil konsisten di admin, guru pembina, siswa, orang tua, dan monitoring pimpinan?

UAT dinyatakan Pass hanya jika: 1. Admin dapat mengelola master ekskul, anggota, dan status pendaftaran tanpa mismatch data. 2. Guru pembina hanya dapat mengakses ekskul yang memang dibinanya, termasuk saat membuka URL langsung. 3. Guru BK hanya dapat memantau ekskul dari portal counseling dan tidak bisa membuat absensi dari URL langsung. 4. Siswa dapat mendaftar, melihat status, mundur, dan daftar ulang sesuai aturan bisnis. 5. Orang tua dapat memantau ekskul anak dan riwayat presensi dengan status yang benar. 6. Wakasek kesiswaan dapat melakukan monitoring read-only tanpa aksi yang mengubah data. 7. Jumlah anggota, jumlah sesi, dan riwayat presensi konsisten antar halaman yang saling terkait.


2. Scope Workflow

2.1 In Scope

  • list ekskul per role
  • create, edit, delete ekskul oleh admin
  • buka/tutup pendaftaran
  • kapasitas anggota
  • approval, rejection, resign, dan re-register anggota
  • monitoring jumlah anggota aktif vs pending
  • create dan edit sesi absensi oleh guru pembina
  • monitoring list sesi absensi oleh BK
  • monitoring riwayat presensi oleh siswa, orang tua, dan wakasek
  • validasi direct URL dan hidden action per role
  • state kosong, state penuh, state pendaftaran ditutup, state tanpa anak, dan state tanpa sesi

2.2 Out of Scope

  • sinkronisasi backend Odoo record rule di luar perilaku FE yang terlihat
  • notifikasi WhatsApp/email eksternal
  • laporan PDF atau export jika tidak tersedia di UI ekskul
  • provisioning user/seed di luar kebutuhan UAT ekskul

3. Role Matrix

Role Portal utama Route utama Hak yang harus lolos UAT
Admin Admin kesiswaan /admin/extracurriculars CRUD ekskul, kelola anggota, approval, rejection, resign anggota, monitoring detail penuh
Guru BK / Counselor Counseling /counseling/extracurriculars View-only list, detail, dan list absensi semua ekskul tanpa aksi tambah absensi
Guru Pembina / Faculty Faculty /faculty/extracurricular View ekskul binaan sendiri, create/edit absensi, tidak bisa membuka ekskul milik guru lain
Siswa Student /student/extracurriculars Browse, filter, daftar, lihat status, mundur, daftar ulang, lihat riwayat presensi
Orang Tua Parent /parent/extracurriculars Pantau ekskul anak, pilih anak, lihat status anggota dan riwayat presensi
Wakasek Kesiswaan Vice principal /vice-principal/student-affairs/extracurricular Monitoring read-only daftar ekskul dan status siswa

Catatan: - Jika tenant memakai role lain yang mewarisi capability yang sama, uji mengikuti portal yang dipakai role tersebut. - Guru mapel non-pembina dipakai sebagai negative case untuk memastikan pembatasan ownership guru pembina benar-benar bekerja.


4. Environment & Akun Uji

4.1 Baseline yang Direkomendasikan

  • FE local: http://127.0.0.1:5173
  • FE demo: https://dev.gcgscola.id
  • Backend demo: https://be-dev.gcgscola.id
  • Database demo: scoladev

4.2 Akun Demo yang Sudah Terdokumentasi

Mengacu ke docs/demo/DEMO_RUNBOOK.md:

Role Login Password Status referensi
Admin admin admin Terdokumentasi di demo runbook
Guru Pembina guru.demo guru.demo Terdokumentasi di demo runbook
Guru BK gurubk.demo gurubk.demo Terdokumentasi di demo runbook
Orang Tua 3674000000001013 3674000000001013 Terdokumentasi di demo runbook

4.3 Akun yang Harus Disiapkan dari Seed QA atau Tenant UAT

Dokumen demo runbook belum mendefinisikan akun siswa dan wakasek khusus untuk ekskul, jadi penguji harus menyiapkan:

Role Sumber akun Kriteria minimal
Siswa seed QA / tenant UAT punya akun portal aktif dan terhubung ke 1 siswa
Wakasek Kesiswaan seed QA / tenant UAT punya capability monitoring kesiswaan
Guru non-pembina seed QA / tenant UAT guru aktif yang tidak menjadi coach_id ekskul target

Jika memakai env QA, gunakan pola dari seed-contract.md: - E2E_ADMIN_USER / E2E_ADMIN_PASS - E2E_TEACHER_USER / E2E_TEACHER_PASS - E2E_STUDENT_USER / E2E_STUDENT_PASS - E2E_PARENT_USER / E2E_PARENT_PASS


5. Data Uji yang Wajib Ada

Siapkan minimal 5 ekskul dengan kombinasi state berikut:

Kode Nama contoh Kondisi yang harus ada
EKS-A Basket Reguler aktif, pendaftaran buka, pembina valid, kuota longgar
EKS-B Paduan Suara Penuh aktif, pendaftaran buka, kuota penuh
EKS-C Robotik Ditutup aktif, registration_open = false
EKS-D Voli Rejoin punya anggota dengan riwayat resigned atau inactive
EKS-E Futsal Presensi punya minimal 1 sesi absensi dan 2 status presensi berbeda

Siapkan juga kombinasi user-record berikut:

Data Kebutuhan
Satu siswa calon anggota belum punya membership di EKS-A
Satu siswa pending sudah mengajukan ke EKS-A dan belum di-approve
Satu siswa aktif sudah aktif di EKS-E agar riwayat presensi bisa diuji
Satu siswa resigned/inactive pernah anggota EKS-D agar re-register bisa diuji
Satu orang tua terhubung ke siswa aktif atau pending
Satu guru pembina sah menjadi coach_id pada EKS-A dan EKS-E
Satu guru non-pembina tidak menjadi coach_id pada ekskul target

Checklist sebelum mulai: - tahun ajaran aktif benar - data siswa dan parent linkage valid - coach_id pada ekskul target tidak kosong - minimal satu ekskul punya member_count > 0 - minimal satu ekskul punya attendance_session_count > 0 atau data sesi aktual


6. Smoke UAT per Role

Jalankan smoke singkat ini sebelum masuk ke alur panjang.

Role Route minimum Expected
Admin /admin/extracurriculars list ekskul terbuka, tidak redirect, tombol tambah terlihat
Guru BK /counseling/extracurriculars list terbuka, tidak ada tombol tambah absensi
Guru Pembina /faculty/extracurricular hanya melihat ekskul binaan sendiri
Siswa /student/extracurriculars daftar ekskul tampil, filter bekerja, tidak ada error kosong
Orang Tua /parent/extracurriculars daftar ekskul anak tampil atau state kosong yang informatif
Wakasek Kesiswaan /vice-principal/student-affairs/extracurricular monitoring terbuka read-only tanpa tombol aksi siswa

Jika smoke gagal, hentikan UAT e2e dan perbaiki seed atau akses dulu.


7. Urutan Eksekusi UAT

Urutan ini disusun agar state data mengalir natural dari awal sampai akhir:

  1. Admin membuat atau menyiapkan ekskul target.
  2. Siswa browse dan mendaftar.
  3. Admin review pengajuan dan mengubah status anggota.
  4. Guru pembina mencatat absensi.
  5. Siswa melihat status dan riwayat presensi.
  6. Orang tua memonitor status ekskul anak.
  7. Guru BK memonitor seluruh ekskul dan sesi absensi.
  8. Wakasek kesiswaan memonitor secara read-only.
  9. Jalankan negative path dan regresi akses langsung via URL.
  10. Jalankan edge cases kuota penuh, pendaftaran ditutup, resign, dan re-register.

8. Scenario Matrix

ID Priority Role Workflow Pass Criteria
UAT-EKS-ADM-001 High Admin Create ekskul Ekskul baru tersimpan dan muncul di list
UAT-EKS-ADM-002 High Admin Edit ekskul Perubahan nama, pembina, kuota, dan status tersimpan
UAT-EKS-ADM-003 High Admin Delete ekskul Hanya ekskul uji yang terhapus dan list refresh
UAT-EKS-ADM-004 High Admin Approve pending member Status siswa berubah ke aktif dan count anggota ter-update
UAT-EKS-ADM-005 Medium Admin Reject pending member Status pending hilang dan alasan penolakan tampil bila ada
UAT-EKS-ADM-006 High Admin Resign / remove member Anggota aktif berpindah ke state non-aktif dan count turun
UAT-EKS-SIS-001 High Siswa Browse & register open ekskul Siswa dapat mengirim pengajuan dan melihat badge pending
UAT-EKS-SIS-002 High Siswa View approved membership Status aktif, detail ekskul, dan kehadiran tampil benar
UAT-EKS-SIS-003 High Siswa Resign dari ekskul Status berubah resigned dan aksi sesuai aturan
UAT-EKS-SIS-004 High Siswa Re-register after resigned/inactive Tombol daftar muncul lagi dan pengajuan baru bisa dibuat
UAT-EKS-SIS-005 Medium Siswa Quota full / registration closed Tombol daftar tidak tersedia dan pesan alasan jelas
UAT-EKS-FAC-001 High Guru Pembina View own extracurricular Hanya ekskul binaan sendiri yang tampil
UAT-EKS-FAC-002 High Guru Pembina Create attendance session Sesi absensi tersimpan dan count sesi bertambah
UAT-EKS-FAC-003 High Guru Pembina Edit attendance statuses Perubahan hadir/izin/sakit/alpa tersimpan
UAT-EKS-FAC-004 High Guru Pembina Direct URL unauthorized Guru non-pembina tidak bisa membuka ekskul milik pembina lain
UAT-EKS-BK-001 High Guru BK Monitor list & detail Dapat melihat ekskul dan statistik tanpa mismatch count
UAT-EKS-BK-002 High Guru BK Monitor attendance list Dapat melihat semua sesi yang ada
UAT-EKS-BK-003 High Guru BK Direct URL create blocked /counseling/extracurriculars/:id/absensi/new tidak bisa dipakai membuat absensi
UAT-EKS-PRN-001 High Orang Tua Monitor child extracurricular Status anggota dan kehadiran anak tampil benar
UAT-EKS-PRN-002 Medium Orang Tua Multi child selector Ganti anak mengganti daftar ekskul dan riwayat dengan benar
UAT-EKS-VPS-001 Medium Wakasek Read-only monitoring Monitoring terbuka tanpa kontrol mutasi data
UAT-EKS-REG-001 High Cross-role Session count consistency Count sesi di detail sama dengan jumlah item di list absensi
UAT-EKS-REG-002 High Cross-role Membership consistency Count anggota aktif konsisten antar admin, siswa, parent, dan BK
UAT-EKS-REG-003 High Cross-role Attendance status normalization permission/izin tampil konsisten lintas role

9. Detailed Test Cases

9.1 Admin

UAT-EKS-ADM-001 Admin membuat ekskul baru

  • Prasyarat: login sebagai admin
  • Langkah:
  • Buka /admin/extracurriculars
  • Klik tombol tambah ekskul
  • Isi nama, kategori, pembina, kuota anggota, dan buka pendaftaran
  • Simpan
  • Expected:
  • Toast sukses muncul
  • Redirect ke detail atau list tanpa error
  • Ekskul baru muncul di list
  • Pembina dan kuota yang dipilih tampil benar di detail

UAT-EKS-ADM-002 Admin mengubah konfigurasi ekskul

  • Prasyarat: ekskul target sudah ada
  • Langkah:
  • Buka detail ekskul dari /admin/extracurriculars/:id
  • Klik edit
  • Ubah minimal nama, registration_open, dan max_members
  • Simpan
  • Expected:
  • Perubahan terlihat di detail
  • Perubahan tercermin di list
  • Student portal menyesuaikan state baru tanpa perlu refresh keras

UAT-EKS-ADM-003 Admin menghapus ekskul uji

  • Prasyarat: gunakan ekskul dummy yang aman dihapus
  • Langkah:
  • Buka detail ekskul dummy
  • Klik hapus
  • Konfirmasi penghapusan
  • Expected:
  • Ekskul hilang dari list
  • Direct URL detail ekskul yang dihapus tidak lagi menampilkan data lama

UAT-EKS-ADM-004 Admin menyetujui pendaftaran siswa

  • Prasyarat: ada siswa dengan status pending di EKS-A
  • Langkah:
  • Login admin
  • Buka detail EKS-A
  • Pindah ke tab atau section anggota menunggu
  • Klik setujui pada siswa target
  • Expected:
  • Toast sukses muncul
  • Siswa pindah dari pending ke anggota aktif
  • Count anggota aktif bertambah
  • Student portal menampilkan status aktif
  • Parent portal menampilkan status aktif yang sama

UAT-EKS-ADM-005 Admin menolak pendaftaran siswa

  • Prasyarat: ada siswa lain dengan status pending
  • Langkah:
  • Buka detail ekskul target
  • Pilih siswa pending
  • Klik tolak
  • Expected:
  • Siswa tidak lagi muncul di daftar pending
  • Count anggota aktif tidak berubah
  • Student portal tidak lagi menganggap siswa aktif

UAT-EKS-ADM-006 Admin menonaktifkan anggota aktif

  • Prasyarat: ada siswa aktif di ekskul target
  • Langkah:
  • Buka detail ekskul
  • Pilih anggota aktif
  • Jalankan aksi keluarkan/resign sesuai UI
  • Expected:
  • Count anggota aktif turun
  • Status siswa berubah menjadi non-aktif atau resigned
  • Jika aturan pendaftaran masih terbuka, siswa bisa daftar ulang pada skenario re-register

9.2 Siswa

UAT-EKS-SIS-001 Siswa browse dan mendaftar ekskul yang terbuka

  • Prasyarat: siswa belum punya membership aktif/pending di EKS-A
  • Langkah:
  • Login siswa
  • Buka /student/extracurriculars
  • Cari EKS-A
  • Klik daftar
  • Isi alasan bila form memintanya
  • Kirim pengajuan
  • Expected:
  • Toast sukses muncul
  • Badge status berubah menjadi menunggu/pending
  • Tombol daftar tidak muncul lagi untuk ekskul yang sama

UAT-EKS-SIS-002 Siswa melihat status aktif dan histori presensi

  • Prasyarat: pengajuan siswa sudah di-approve admin dan pembina sudah membuat sesi absensi
  • Langkah:
  • Login siswa aktif
  • Buka /student/extracurriculars
  • Buka detail presensi atau histori pada ekskul aktif
  • Expected:
  • Status anggota aktif tampil
  • Persentase/rekap presensi tampil
  • Riwayat menampilkan label status yang ramah, misalnya Hadir, Izin, Sakit, Alpa
  • Status permission tidak tampil sebagai label mentah

UAT-EKS-SIS-003 Siswa mundur dari ekskul

  • Prasyarat: siswa berstatus aktif pada satu ekskul
  • Langkah:
  • Buka ekskul aktif dari portal siswa
  • Klik aksi mundur/keluar
  • Konfirmasi
  • Expected:
  • Status berubah menjadi resigned atau non-aktif
  • Rekap anggota di admin berkurang
  • Siswa tidak lagi dihitung sebagai anggota aktif

UAT-EKS-SIS-004 Siswa daftar ulang setelah resigned atau inactive

  • Prasyarat: siswa punya histori membership resigned atau inactive pada EKS-D
  • Langkah:
  • Login sebagai siswa tersebut
  • Buka /student/extracurriculars
  • Cari EKS-D
  • Cek apakah tombol daftar kembali muncul
  • Kirim pengajuan baru
  • Expected:
  • Tombol daftar tersedia
  • Pengajuan baru bisa terkirim
  • Status baru menjadi pending
  • Histori lama tidak memblokir pendaftaran baru

UAT-EKS-SIS-005 Siswa terkena pembatasan kuota atau pendaftaran ditutup

  • Prasyarat: EKS-B penuh dan EKS-C ditutup
  • Langkah:
  • Login siswa yang eligible
  • Buka daftar ekskul
  • Cari EKS-B dan EKS-C
  • Expected:
  • Tidak ada tombol daftar untuk kondisi yang diblok
  • Alasan blok jelas, misalnya kuota penuh atau pendaftaran ditutup
  • Tidak ada cara submit pengajuan via UI

9.3 Guru Pembina

UAT-EKS-FAC-001 Guru pembina hanya melihat ekskul binaannya

  • Prasyarat: guru target menjadi pembina pada EKS-A dan EKS-E
  • Langkah:
  • Login sebagai guru.demo atau akun pembina lain
  • Buka /faculty/extracurricular
  • Expected:
  • Hanya ekskul dengan coach_id milik guru tersebut yang tampil
  • Ekskul guru lain tidak muncul di list

UAT-EKS-FAC-002 Guru pembina membuat sesi absensi

  • Prasyarat: ekskul target punya anggota aktif
  • Langkah:
  • Dari list faculty, buka detail ekskul binaan
  • Buka halaman absensi
  • Klik tambah sesi
  • Simpan sesi
  • Expected:
  • Toast sukses muncul
  • Count sesi di detail bertambah 1
  • Sesi baru muncul di /faculty/extracurricular/:id/absensi
  • Sesi yang sama muncul di monitoring BK

UAT-EKS-FAC-003 Guru pembina mengubah status kehadiran

  • Prasyarat: ada sesi absensi ekskul yang bisa diedit
  • Langkah:
  • Buka detail sesi absensi
  • Ubah minimal 3 status: hadir, izin, sakit/alpa
  • Simpan
  • Expected:
  • Perubahan tersimpan
  • Student portal dan parent portal menampilkan status yang sama
  • Status izin dibaca sebagai Izin, bukan label mentah yang berbeda

UAT-EKS-FAC-004 Guru non-pembina tidak bisa bypass direct URL

  • Prasyarat: ada guru aktif yang bukan pembina ekskul target
  • Langkah:
  • Login sebagai guru non-pembina
  • Buka langsung /faculty/extracurricular/:id
  • Buka juga /faculty/extracurricular/:id/absensi
  • Coba /faculty/extracurricular/:id/absensi/new
  • Expected:
  • User diarahkan kembali ke /faculty/extracurricular atau ditolak dengan state aman
  • Data ekskul milik guru lain tidak tampil
  • Tidak ada form draft absensi yang bisa dipakai

9.4 Guru BK / Counselor

UAT-EKS-BK-001 Guru BK memonitor daftar dan detail ekskul

  • Prasyarat: login gurubk.demo
  • Langkah:
  • Buka /counseling/extracurriculars
  • Pilih satu ekskul
  • Expected:
  • Semua ekskul sekolah dapat dimonitor
  • Summary detail tampil
  • Count anggota dan sesi tidak kosong palsu

UAT-EKS-BK-002 Guru BK melihat daftar sesi absensi

  • Prasyarat: ekskul target punya minimal 1 sesi absensi
  • Langkah:
  • Dari detail ekskul counseling, buka halaman absensi
  • Cocokkan daftar sesi dengan data yang dibuat pembina
  • Expected:
  • Semua sesi yang valid muncul
  • Jumlah item di list sama dengan count sesi di detail

UAT-EKS-BK-003 Guru BK tidak bisa membuat absensi dari direct URL

  • Prasyarat: login gurubk.demo
  • Langkah:
  • Buka /counseling/extracurriculars/:id/absensi/new secara langsung
  • Coba juga buka URL dengan nilai non-numerik lain jika perlu
  • Expected:
  • Halaman tidak membuka mode create tersembunyi
  • User diarahkan ke list absensi atau halaman aman lain
  • Tidak ada tombol simpan untuk membuat sesi

9.5 Orang Tua

UAT-EKS-PRN-001 Orang tua memonitor ekskul anak

  • Prasyarat: anak memiliki membership aktif atau pending
  • Langkah:
  • Login parent
  • Buka /parent/extracurriculars
  • Pilih anak jika tersedia selector
  • Buka kartu ekskul target
  • Expected:
  • Status anggota anak sesuai data terbaru
  • Nama ekskul, pembina, dan ringkasan kehadiran tampil
  • Riwayat presensi memakai label status yang konsisten

UAT-EKS-PRN-002 Orang tua mengganti anak pada multi-child selector

  • Prasyarat: parent terhubung ke lebih dari 1 siswa
  • Langkah:
  • Login parent multi-child
  • Pilih anak A dan catat daftar ekskul
  • Ganti ke anak B
  • Expected:
  • Daftar ekskul dan status berubah mengikuti anak aktif
  • Data anak A tidak tertinggal di tampilan anak B

9.6 Wakasek Kesiswaan

UAT-EKS-VPS-001 Wakasek memonitor tanpa aksi mutasi data

  • Prasyarat: login sebagai wakasek kesiswaan
  • Langkah:
  • Buka /vice-principal/student-affairs/extracurricular
  • Lakukan browse dan pencarian
  • Buka detail salah satu ekskul
  • Expected:
  • Data monitoring tampil
  • Tidak ada tombol daftar, approve, tambah sesi, atau edit absensi
  • Terminologi halaman bersifat monitoring/read-only

9.7 Cross-Role Consistency & Regression

UAT-EKS-REG-001 Count sesi konsisten antara detail dan list absensi

  • Prasyarat: pembina baru saja menambah satu sesi pada ekskul target
  • Langkah:
  • Catat count sesi pada detail faculty
  • Buka list absensi faculty
  • Ulangi cek dari counseling detail dan list absensi
  • Expected:
  • Count sesi dan jumlah item list sama
  • Tidak ada kondisi detail 1 sesi tetapi list kosong

UAT-EKS-REG-002 Count anggota aktif konsisten lintas portal

  • Prasyarat: ada kombinasi anggota aktif, pending, dan resigned
  • Langkah:
  • Lihat count anggota di admin detail
  • Cek status di portal siswa terkait
  • Cek status yang sama di parent
  • Cek monitoring BK
  • Expected:
  • Hanya anggota aktif yang dihitung sebagai aktif
  • Pending tidak menaikkan count aktif
  • Resigned/inactive tidak memblokir re-register

UAT-EKS-REG-003 Status presensi konsisten lintas role

  • Prasyarat: satu sesi punya kombinasi present, permission, sick, dan absent
  • Langkah:
  • Cek form pembina
  • Cek riwayat di siswa
  • Cek riwayat di parent
  • Expected:
  • Semua role membaca status dengan label yang semakna
  • permission tidak hilang, tidak berubah abu-abu default, dan tidak tampil sebagai string mentah

10. Negative & Edge Cases Tambahan

Jalankan minimal satu kali per tenant UAT:

ID Skenario Expected
NEG-EKS-001 Siswa tanpa relasi student record membuka portal ekskul Muncul state kosong atau pesan panduan, bukan error runtime
NEG-EKS-002 Parent tanpa child linkage membuka portal ekskul Muncul state kosong aman
NEG-EKS-003 Ekskul tanpa pembina dibuka admin Admin tetap bisa edit, tetapi faculty tidak boleh mendapat akses tanpa ownership
NEG-EKS-004 Ekskul tanpa sesi absensi dibuka BK, siswa, dan parent Muncul state kosong yang konsisten, bukan mismatch count
NEG-EKS-005 Student refresh setelah status diubah admin Status terbaru muncul tanpa perlu logout/login ulang permanen
NEG-EKS-006 Browser back/forward setelah aksi daftar atau approve UI tidak menampilkan state lawas yang menyesatkan

11. Evidence & Sign-Off Template

Untuk setiap skenario, simpan minimal: - role yang dipakai - route yang diuji - nama ekskul target - screenshot sebelum dan sesudah aksi utama - hasil Pass, Fail, atau Blocked - catatan bug jika ada mismatch data, akses, atau wording

Template rekap:

ID Role Route Data Uji Hasil Bukti Catatan
UAT-EKS-ADM-004 Admin /admin/extracurriculars/12 Basket Reguler / siswa A Pass screenshot count anggota naik dari 9 ke 10

Kriteria sign-off: 1. Semua skenario high priority Pass. 2. Tidak ada bug otorisasi direct URL yang memungkinkan mutasi data oleh role read-only. 3. Tidak ada mismatch count anggota atau count sesi antar halaman utama. 4. Tidak ada label status presensi yang berbeda arti antar role.


12. Referensi Teknis FE Saat Audit

Dokumen ini disusun berdasarkan struktur FE modul ekskul saat ini: - admin manage: src/views/CounselingManagement/Ekstrakurikuler/Admin/ - counselor dan faculty: src/views/CounselingManagement/Ekstrakurikuler/ - student portal: src/views/StudentViews/Extracurricular/StudentExtracurricular.vue - parent portal: src/views/ParentViews/Counseling/ParentExtracurricular.vue - route fragments: - src/router/studentServicesRoutes.js - src/router/counselingRoutes.js - src/router/studentRouteFragments/counselingCommunity.js - src/router/parentRouteFragments/counseling.js - src/router/vicePrincipalRoutes.js

Jika FE flow berubah, perbarui dokumen ini bersamaan dengan perubahan route atau capability terkait.