Lewati ke isi

PAUD Attendance Manual E2E UAT Runbook

Runbook manual untuk menguji fitur absensi siswa PAUD: pencatatan kedatangan dengan suhu badan, kepulangan, opsi input manual/RFID, dan integrasi dengan absensi setiap jam pelajaran.

Last verified: 2026-06-08
Mode: server development
Workspace root: /home/scola/odoo
Audience: QA, operator sekolah, admin, wali kelas, implementor lapangan
Related domain: Absensi & RFID

Dokumen acuan yang wajib dibaca sebelum eksekusi UAT: - Development Guide - Workspace Governance - Architecture API - Testing Guidelines


1. Tujuan

Pakai runbook ini untuk memastikan fitur absensi PAUD berjalan end-to-end: - Admin bisa mengatur mode absensi siswa dari Settings sebagai sumber konfigurasi utama. - Admin atau operator absensi yang diberi hak akses bisa mencatat kedatangan siswa PAUD beserta suhu badan. - Admin atau operator absensi yang diberi hak akses bisa mencatat kepulangan siswa di akhir sekolah. - RFID dapat dipakai sebagai metode kedatangan/kepulangan jika diaktifkan. - Absensi setiap jam pelajaran tetap berjalan sendiri dan tidak tercampur dengan data kedatangan/kepulangan. - Orang tua, siswa, admin, kepala sekolah, dan laporan melihat data yang konsisten tanpa hitung ganda.

UAT dinyatakan PASS jika konfigurasi, input harian, tampilan lintas role, dan rekap berjalan sesuai pass criteria di bawah.


2. Scope

In Scope

  • Settings Admin tab Pengaturan Absensi
  • Mode Kedatangan & Kepulangan
  • Metode Manual oleh petugas
  • Metode RFID
  • Opsi PAUD pencatatan suhu saat kedatangan
  • Validasi suhu wajib jika diaktifkan
  • Ambang demam
  • Halaman Kedatangan & Kepulangan Siswa
  • Check-in manual
  • Check-out manual
  • RFID gate-in/gate-out sebagai adapter
  • Absensi setiap jam pelajaran saat mode per-lesson aktif
  • Student/parent attendance view
  • Admin/principal reporting agar arrival_departure dan per_lesson tidak dihitung ganda

Out of Scope

  • Kalibrasi alat ukur suhu fisik
  • Integrasi hardware RFID offline buffering
  • Validasi medis klinis terhadap suhu siswa
  • Payroll atau absensi pegawai
  • Perubahan legal kebijakan sekolah terkait batas demam

3. Environment

Gunakan environment server dev yang aktif.

Item Nilai baseline
Workspace root /home/scola/odoo
Frontend dev/deployed https://dev.gcgscola.id
Backend dev local http://127.0.0.1:8074
Database dev scoladev
API architecture same-origin /api, tidak memakai VITE_API_URL produksi

Pre-flight cepat:

cd /home/scola/odoo
curl -sf http://127.0.0.1:8074/web/login
curl -sf https://dev.gcgscola.id/manifest.webmanifest

Jika salah satu gagal, hentikan UAT dan minta tim dev memperbaiki environment dulu.


4. Data dan Role Uji

Siapkan data berikut sebelum UAT:

Data Minimum
Kelas PAUD 1 batch aktif dengan minimal 3 siswa aktif
Siswa A Untuk check-in suhu normal dan check-out
Siswa B Untuk check-in suhu demam
Siswa C Untuk validasi belum datang / belum pulang
Wali kelas/guru Punya akses absensi siswa
Admin/operator absensi Punya akses halaman kedatangan/kepulangan
Orang tua Terhubung ke minimal Siswa A
RFID card Minimal 1 kartu terdaftar untuk Siswa A jika skenario RFID diuji
RFID device Minimal 1 device aktif jika skenario RFID diuji

Role yang dipakai:

Role Tanggung jawab UAT
Admin Konfigurasi mode absensi di Settings, monitoring laporan, dan boleh melakukan input harian untuk baseline UAT
Admin Staff/TU sebagai operator absensi Best practice untuk input kedatangan/kepulangan harian jika sekolah mendelegasikan operasional absensi ke TU/operator
Guru/Wali Kelas Validasi flow per jam pelajaran dan akses roster
Orang Tua Melihat ringkasan kedatangan/pulang anak
Siswa Melihat riwayat kehadiran pribadi jika portal siswa aktif
Principal/Wakasek Memeriksa rekap tanpa hitung ganda

Catatan akun: - Gunakan akun tenant/dev yang valid. - Untuk UAT baseline, konfigurasi selalu dilakukan dengan akun Admin. - Untuk input harian, best practice operasional adalah akun Admin Staff/TU atau operator absensi yang diberi hak students.attendance.edit. Jika tenant belum punya akun TU/operator yang valid, gunakan akun Admin sebagai fallback UAT. - Istilah operator absensi atau petugas di dokumen ini bukan role teknis baru. Artinya aktor operasional sekolah yang melakukan input harian. - Jangan hard-code password baru di dokumen. - Jika smoke Playwright diperlukan, override backend dev dengan E2E_ODOO_URL=http://127.0.0.1:8074.

Konfigurasi mode absensi: - Role: Admin. - Menu: Settings -> Pengaturan Sekolah -> tab Pengaturan Absensi. - Deep link: /settings/company?tab=attendance. - Fungsi: mengaktifkan/mematikan mode kedatangan-kepulangan, memilih metode manual/RFID, mengaktifkan suhu PAUD, dan mengatur per jam pelajaran.

Input kedatangan dan kepulangan harian: - Role best practice: Admin Staff/TU atau operator absensi yang diberi hak attendance edit. - Role fallback UAT: Admin. - Menu Admin: Kehadiran Siswa -> Kedatangan & Kepulangan. - Menu Admin Staff/TU: Admin Staff -> Siswa -> Kehadiran, lalu pilih kartu Kedatangan & Kepulangan. - Route langsung: /attendance/daily.

Absensi setiap jam pelajaran: - Role best practice: Guru atau Wali Kelas. - Menu: Faculty -> Kehadiran Siswa atau halaman absensi per sesi. - Route utama guru: /faculty/attendance.


5. Cara Mencatat Hasil

Gunakan status: - PASS: hasil sesuai ekspektasi. - FAIL: hasil berbeda atau data tidak konsisten. - BLOCKED: tidak bisa lanjut karena akun, seed, device, atau environment belum siap. - SKIP: skenario tidak relevan dengan konfigurasi sekolah yang sedang diuji.

Template catatan:

ID Role Status Bukti Catatan
PAUD-01 Admin PASS screenshot settings Mode tersimpan dan terbaca ulang

Untuk setiap FAIL, simpan: - screenshot halaman - akun yang dipakai - tanggal UAT - kelas/batch - nama siswa - suhu yang diinput - expected vs actual


6. Konfigurasi Baseline yang Harus Diuji

Uji minimal 3 kombinasi konfigurasi berikut.

Matrix Kedatangan/Kepulangan Metode Suhu PAUD Suhu wajib Per Jam Pelajaran
M1 Aktif Manual petugas Aktif Aktif Aktif
M2 Aktif RFID Aktif Aktif Aktif
M3 Nonaktif - Nonaktif Nonaktif Aktif
M4 optional Aktif Manual petugas Aktif Nonaktif Nonaktif

Default expected setelah upgrade: - Kedatangan/Kepulangan: nonaktif - Setiap Jam Pelajaran: aktif - Sistem lama absensi per jam pelajaran tetap bisa digunakan.


7. Smoke Check

PAUD-SM-01 - Admin membuka Settings Absensi

Role: Admin

Langkah: 1. Login sebagai admin. 2. Buka Settings. 3. Buka tab Pengaturan Absensi. 4. Cari section Mode Absensi Siswa.

Expected: - Section mode absensi siswa tampil. - Ada toggle Kedatangan & Kepulangan. - Ada toggle Setiap Jam Pelajaran. - Jika kedatangan/kepulangan aktif, pilihan metode manual/RFID tampil. - Jika kedatangan/kepulangan aktif, opsi PAUD suhu tampil.

PAUD-SM-02 - Menu Attendance sesuai mode

Role: Admin

Langkah: 1. Aktifkan Kedatangan & Kepulangan. 2. Simpan Settings. 3. Buka menu Attendance/Kehadiran.

Expected: - Menu Kedatangan & Kepulangan tampil. - Menu Lembar Kehadiran Jam Pelajaran tetap tampil jika per-lesson aktif. - Jika per-lesson dimatikan, menu per-lesson tidak menjadi primary flow.

PAUD-SM-03 - Roster harian terbuka

Role: Admin atau Wali Kelas

Langkah: 1. Buka halaman Kedatangan & Kepulangan Siswa. 2. Pilih tanggal hari ini. 3. Pilih kelas PAUD. 4. Klik muat/cari roster.

Expected: - Daftar siswa tampil. - Kolom status datang/pulang/source tampil. - Jika suhu PAUD aktif, input suhu tersedia saat check-in. - Tidak ada error API.


8. Skenario Utama Manual

PAUD-01 - Settings menolak semua mode nonaktif

Role: Admin

Langkah: 1. Buka Settings Pengaturan Absensi. 2. Matikan Kedatangan & Kepulangan. 3. Matikan Setiap Jam Pelajaran. 4. Simpan.

Expected: - Sistem menolak konfigurasi. - Pesan validasi menyatakan minimal salah satu mode absensi siswa harus aktif. - Nilai sebelumnya tidak rusak.

PAUD-02 - Aktifkan mode manual PAUD dengan suhu wajib

Role: Admin

Langkah: 1. Aktifkan Kedatangan & Kepulangan. 2. Pilih metode Manual oleh petugas. 3. Aktifkan Pencatatan suhu PAUD. 4. Aktifkan Suhu wajib. 5. Set ambang demam, contoh 37.5. 6. Pastikan Setiap Jam Pelajaran tetap aktif. 7. Simpan. 8. Reload halaman Settings.

Expected: - Semua nilai tersimpan dan tetap tampil setelah reload. - Method tersimpan sebagai manual petugas. - Ambang demam tampil dengan nilai yang benar.

PAUD-03 - Check-in manual suhu normal

Role: Admin

Data: - Siswa A - Suhu: 36.5

Langkah: 1. Buka Kedatangan & Kepulangan Siswa. 2. Pilih tanggal hari ini dan kelas PAUD. 3. Cari Siswa A. 4. Isi suhu 36.5. 5. Klik check-in/datang.

Expected: - Status datang berubah menjadi hadir/datang. - Waktu datang terisi. - Suhu tampil 36.5. - Status suhu normal. - Source tampil manual_operator. - Siswa belum otomatis dianggap pulang. - Roster tidak membuat baris duplikat untuk siswa yang sama.

PAUD-04 - Check-in manual suhu demam

Role: Admin

Data: - Siswa B - Suhu: 38.0

Langkah: 1. Cari Siswa B di roster yang sama. 2. Isi suhu 38.0. 3. Klik check-in/datang.

Expected: - Status datang tercatat. - Suhu tampil 38.0. - Status suhu menunjukkan demam/fever. - Jika UI punya indikator warna/peringatan, indikator muncul jelas. - Data tetap tersimpan walaupun suhu melewati ambang, kecuali kebijakan sekolah meminta blokir.

PAUD-05 - Suhu wajib tidak boleh kosong

Role: Admin

Data: - Siswa C

Langkah: 1. Pastikan suhu PAUD aktif dan wajib. 2. Cari Siswa C. 3. Kosongkan input suhu. 4. Klik check-in/datang.

Expected: - Sistem menolak check-in. - Pesan validasi menyebut suhu wajib diisi. - Siswa C tetap belum datang. - Tidak ada attendance line baru yang tersimpan.

PAUD-06 - Check-in ulang idempotent

Role: Admin

Data: - Siswa A yang sudah check-in - Suhu baru: 36.8

Langkah: 1. Pada Siswa A, ubah suhu menjadi 36.8 jika UI mengizinkan edit/check-in ulang. 2. Klik check-in lagi. 3. Reload roster.

Expected: - Tetap hanya ada satu baris attendance untuk Siswa A pada tanggal dan scope kedatangan/kepulangan. - Waktu datang tidak menghasilkan duplikasi. - Suhu mengikuti aturan UI/API: tetap nilai awal atau ter-update dengan jelas. - Tidak ada double-count di ringkasan.

PAUD-07 - Check-out manual

Role: Admin

Data: - Siswa A yang sudah check-in.

Langkah: 1. Cari Siswa A. 2. Klik check-out/pulang. 3. Reload roster.

Expected: - Waktu pulang terisi. - Status pulang berubah menjadi sudah pulang. - Waktu datang dan suhu tetap ada. - Source check-in tetap manual_operator. - Check-out tidak mengubah nilai absensi setiap jam pelajaran.

PAUD-08 - Check-out sebelum check-in

Role: Admin

Data: - Siswa C belum check-in.

Langkah: 1. Cari Siswa C. 2. Klik check-out/pulang tanpa check-in.

Expected: - Sistem memberi perilaku yang jelas sesuai aturan bisnis: - menolak karena belum datang, atau - membuat catatan pulang dengan indikasi belum ada waktu datang. - Tidak ada crash atau data duplikat. - Jika ditolak, Siswa C tetap belum datang/belum pulang.

PAUD-09 - Per jam pelajaran tetap terpisah

Role: Guru atau Wali Kelas

Precondition: - Kedatangan/kepulangan aktif. - Per jam pelajaran aktif. - Siswa A sudah check-in harian.

Langkah: 1. Login sebagai guru. 2. Buka halaman absensi setiap jam pelajaran. 3. Pilih sesi pelajaran hari ini untuk kelas PAUD. 4. Isi absensi Siswa A dan B. 5. Simpan. 6. Kembali ke halaman kedatangan/kepulangan.

Expected: - Absensi sesi tersimpan sebagai data per jam pelajaran. - Kedatangan/kepulangan harian tidak berubah. - Rekap admin bisa membedakan arrival_departure dan per_lesson. - Tidak ada double-count saat melihat summary harian.

PAUD-10 - Per jam pelajaran nonaktif menolak input sesi

Role: Admin, lalu Guru

Langkah: 1. Admin buka Settings. 2. Aktifkan Kedatangan & Kepulangan. 3. Matikan Setiap Jam Pelajaran. 4. Simpan. 5. Guru buka flow absensi setiap jam pelajaran.

Expected: - UI menyembunyikan atau menonaktifkan flow per-session. - Jika endpoint per-session tetap dipanggil, backend menolak write dengan error terstruktur. - Kedatangan/kepulangan tetap bisa dipakai.

PAUD-11 - Mode kedatangan/kepulangan nonaktif menolak daily write

Role: Admin

Langkah: 1. Admin matikan Kedatangan & Kepulangan. 2. Pastikan Setiap Jam Pelajaran aktif. 3. Admin buka halaman daily attendance atau panggil aksi check-in jika masih terlihat.

Expected: - Menu daily attendance tidak ditampilkan sebagai opsi aktif. - Jika API check-in/check-out dipanggil langsung, backend menolak dengan error terstruktur. - Flow absensi setiap jam pelajaran tetap berjalan.


9. Skenario RFID

Jalankan bagian ini hanya jika sekolah/tenant memakai RFID dan device uji tersedia.

PAUD-RFID-01 - Settings method RFID

Role: Admin

Langkah: 1. Aktifkan Kedatangan & Kepulangan. 2. Pilih metode RFID. 3. Aktifkan suhu PAUD sesuai kebutuhan sekolah. 4. Simpan. 5. Reload Settings.

Expected: - Method RFID tersimpan. - Detail konfigurasi RFID tetap ada di modul RFID, bukan di Settings umum. - Menu daily attendance tetap dapat dipakai untuk monitoring/fallback sesuai hak akses.

PAUD-RFID-02 - RFID gate-in membuat kedatangan

Role: Admin atau operator RFID

Data: - Kartu RFID Siswa A sudah aktif. - Device RFID aktif.

Langkah: 1. Tap kartu Siswa A di device/gate-in. 2. Buka RFID events. 3. Buka halaman Kedatangan & Kepulangan Siswa. 4. Cari Siswa A.

Expected: - Event RFID tercatat. - Attendance daily Siswa A tercatat sebagai datang. - Source tampil rfid. - Register/sheet harian valid dan tidak error required field. - Jika suhu PAUD wajib, cek kebijakan tenant: - RFID boleh mencatat datang tanpa suhu lalu flagged perlu suhu, atau - RFID ditolak dari attendance line dan hanya menjadi event log.

Catat perilaku aktual karena kebijakan suhu dengan RFID harus diputuskan sekolah.

PAUD-RFID-03 - RFID gate-out membuat kepulangan

Role: Admin atau operator RFID

Langkah: 1. Setelah Siswa A sudah datang, tap kartu di gate-out. 2. Buka halaman daily attendance. 3. Cari Siswa A.

Expected: - Waktu pulang terisi. - Source RFID tetap jelas. - Check-out tidak mengubah absensi per jam pelajaran. - Tidak membuat line kedua untuk tanggal yang sama.

PAUD-RFID-04 - RFID method nonaktif hanya mencatat event log

Role: Admin

Langkah: 1. Ubah metode kedatangan/kepulangan ke Manual oleh petugas. 2. Tap kartu RFID Siswa A. 3. Buka RFID events. 4. Buka daily attendance.

Expected: - Event RFID tetap tercatat sebagai log. - Daily attendance tidak dibuat/diubah oleh event RFID. - Tidak ada data hadir otomatis dari RFID saat method bukan RFID.


10. Tampilan Lintas Role

PAUD-VIEW-01 - Parent melihat ringkasan anak

Role: Orang Tua

Langkah: 1. Login sebagai orang tua Siswa A. 2. Buka halaman kehadiran anak. 3. Pilih tanggal UAT.

Expected: - Ringkasan kedatangan/pulang harian tampil jika mode aktif. - Suhu tampil hanya jika memang boleh ditampilkan sesuai kebijakan aplikasi. - Detail per jam pelajaran tampil terpisah jika mode per-lesson aktif. - Tidak ada duplikasi satu hari yang sama.

PAUD-VIEW-02 - Student melihat riwayat pribadi

Role: Siswa

Langkah: 1. Login sebagai Siswa A. 2. Buka halaman kehadiran. 3. Pilih tanggal UAT.

Expected: - Data datang/pulang pribadi tampil. - Detail per jam pelajaran tidak tercampur dengan ringkasan harian. - Tidak ada data siswa lain.

PAUD-VIEW-03 - Admin/principal rekap tidak double-count

Role: Admin, Principal, atau Wakasek

Langkah: 1. Buka laporan/rekap kehadiran. 2. Filter kelas PAUD dan tanggal UAT. 3. Bandingkan jumlah siswa datang harian dengan jumlah absensi sesi.

Expected: - Laporan membedakan scope kedatangan/kepulangan dan per jam pelajaran. - Jika ada 1 daily line dan 3 lesson lines untuk siswa yang sama, sistem tidak menghitung sebagai 4 kehadiran harian. - Filter/label laporan cukup jelas untuk auditor sekolah.


11. Verifikasi API Opsional

Gunakan hanya jika tester punya akses teknis.

Login via API atau gunakan session browser yang valid, lalu cek endpoint:

curl -sf https://dev.gcgscola.id/api/v1/attendance/student/settings

Endpoint yang perlu diverifikasi melalui browser/devtools atau API client:

Endpoint Expected
POST /api/v1/attendance/student/settings Mengembalikan mode absensi siswa yang sudah dinormalisasi
POST /api/v1/attendance/daily/roster Mengembalikan roster kelas dan status daily
POST /api/v1/attendance/daily/check-in Membuat/update line daily arrival
POST /api/v1/attendance/daily/check-out Mengisi waktu pulang
POST /api/v1/attendance/daily/summary Summary tidak menghitung ganda per-lesson

Expected payload penting: - attendance_scope = arrival_departure untuk daily line. - attendance_scope = per_lesson untuk absensi sesi. - attendance_source = manual_operator atau rfid sesuai metode. - body_temperature_celsius terisi saat suhu PAUD diinput. - temperature_status sesuai ambang demam.


12. Negative and Edge Cases

ID Skenario Expected
PAUD-NEG-01 Input suhu teks, contoh abc Ditolak dengan validasi angka
PAUD-NEG-02 Input suhu terlalu rendah, contoh 20 Ditolak atau flagged sesuai rule validasi
PAUD-NEG-03 Input suhu terlalu tinggi, contoh 45 Ditolak atau flagged sesuai rule validasi
PAUD-NEG-04 Check-in siswa dari kelas lain Tidak muncul di roster, atau ditolak API
PAUD-NEG-05 User tanpa hak akses membuka daily attendance Redirect/403, tidak bisa melihat data siswa
PAUD-NEG-06 Dua operator atau admin check-in siswa yang sama Tetap satu line, tidak duplikat
PAUD-NEG-07 Tanggal libur/nonaktif Roster kosong atau pesan jelas sesuai kalender akademik
PAUD-NEG-08 RFID kartu tidak dikenal Event log tercatat error, attendance tidak berubah

13. Sign-Off Checklist

Area PASS? Catatan
Settings Admin menyimpan mode dengan benar
Validasi minimal satu mode aktif berjalan
Daily roster kelas PAUD tampil
Check-in manual suhu normal berjalan
Check-in manual suhu demam berjalan
Suhu wajib tidak bisa kosong
Check-out berjalan
Check-in ulang tidak membuat duplikat
Per jam pelajaran tetap terpisah
Backend menolak write saat mode nonaktif
Parent/student view konsisten
Admin/principal report tidak double-count
RFID gate-in/gate-out berjalan jika method RFID aktif
RFID hanya event log jika method bukan RFID

UAT bisa ditandatangani jika semua area wajib PASS, atau area yang tidak relevan diberi SKIP dengan alasan yang jelas.


14. Evidence yang Harus Dikumpulkan

Minimum evidence: - Screenshot Settings Mode Absensi Siswa. - Screenshot roster sebelum check-in. - Screenshot Siswa A setelah check-in suhu normal. - Screenshot Siswa B setelah check-in suhu demam. - Screenshot Siswa A setelah check-out. - Screenshot absensi per jam pelajaran untuk tanggal yang sama. - Screenshot parent/student attendance view. - Screenshot laporan admin/principal dengan filter tanggal UAT. - Screenshot RFID event jika skenario RFID diuji.

Untuk bug: - Sertakan request/response dari browser Network tab jika masalah API. - Sertakan timestamp dan nama siswa. - Sertakan konfigurasi mode aktif saat bug terjadi.


15. Rollback UAT Data

Jika UAT dilakukan di tenant dev bersama: 1. Catat semua siswa dan tanggal yang dipakai. 2. Jangan hapus data produksi/manual sekolah tanpa persetujuan admin tenant. 3. Jika perlu reset data UAT, minta developer menghapus hanya attendance line tanggal UAT dan siswa UAT. 4. Kembalikan Settings ke konfigurasi awal tenant.

Konfigurasi default aman setelah UAT: - Kedatangan/kepulangan sesuai keputusan sekolah. - Per jam pelajaran aktif jika sekolah masih memakai flow lama. - Suhu PAUD aktif hanya untuk unit PAUD yang memang membutuhkan pencatatan suhu.