gdc_cmod/UAT_GDC_CMOD_Checklist.html
mahdahar 08337b300d feat: Add specimen collection page and improve error handling
- Add new phlebo/collect.php view (341 lines) for specimen collection workflow
- Add route for phlebotomist collection page in Routes.php
- Add collect() method to PhlebotomistController
- Update error pages (notfound.php, unauthorized.php) for better user experience
- Enhance login page with improved UI elements
- Update shared dialogs (dialog_results_generate.php, dialog_sample.php) with improvements
- Update config.php with new configurations
- Update UAT checklist documentation
- Fix AuthController login handling
2026-02-09 13:39:51 +07:00

206 lines
26 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>UAT Checklist - GDC CMOD 📋</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: 'Segoe UI', 'Arial', sans-serif;
line-height: 1.1;
color: #000;
background: white;
padding: 3mm;
font-size: 10pt;
}
.container {
max-width: 100%;
margin: 0 auto;
background: white;
padding: 0;
}
@media print {
body { padding: 1mm; font-size: 10pt; }
h1 {
font-size: 12pt;
padding: 1px 0;
margin: 0 0 2px 0;
page-break-after: avoid !important;
}
.data-table { margin: 0; }
table { page-break-inside: avoid !important; }
.container { padding-top: 0; }
tr { page-break-inside: avoid !important; }
input[type="text"] {
border: 1px solid #ccc !important;
background: #fff !important;
}
input[type="checkbox"] {
-webkit-appearance: square !important;
appearance: square !important;
width: 10px !important;
height: 10px !important;
}
}
h1 {
color: #000;
text-align: center;
font-size: 11pt;
border-bottom: 1px solid #000;
padding: 1px 0;
margin: 0;
page-break-after: avoid;
}
h2 {
color: #000;
text-align: center;
font-size: 10pt;
border-bottom: 1px solid #000;
padding: 1px 0;
margin: 10px 0 0 0;
page-break-after: avoid;
}
.data-table {
width: 100%;
border-collapse: collapse;
margin: 2px 0 0 0;
font-size: 8pt;
}
.data-table th {
background: #e9ecef;
color: #000;
padding: 1px 2px;
text-align: left;
font-size: 8pt;
font-weight: bold;
text-transform: uppercase;
border: 1px solid #000;
line-height: 1.1;
}
.data-table td {
border: 1px solid #000;
padding: 1px 2px;
vertical-align: top;
word-wrap: break-word;
line-height: 1.1;
}
.data-table tr:nth-child(even) { background: #f8f8f8; }
input[type="text"] {
width: 100%;
padding: 2px;
border: 1px solid #ddd;
border-radius: 2px;
font-size: 8pt;
}
input[type="checkbox"] {
margin: 0 2px;
width: 10px;
height: 10px;
}
code {
background: #ddd;
padding: 1px 2px;
border: 1px solid #999;
font-size: 8pt;
}
.spacer { height: 0; display: none; }
br { line-height: 1.5; }
</style>
</head>
<body>
<div class="container">
<div style="page-break-inside: avoid; display: inline-block; width: 100%;">
<h1>📋 UAT (User Acceptance Testing) 🧪 - GDC CMOD Laboratory Management System 🏥</h1>
<table class="data-table">
<tr><th>ID</th><th>Judul Test Case</th><th>Langkah Utama</th><th>Expected Result</th><th>Role</th><th>Hasil</th><th>Issue/Jawaban</th></tr>
<tr><td>🎯</td><td>📌 Ready to Test!</td><td>🚀 Let's Go!</td><td>✨ Good Luck!</td><td>👥 All Roles</td><td>🎉 Fun!</td><td>📝 Notes...</td></tr>
<tr><td>TC-001</td><td>Login Berhasil 🔐</td><td>Login dengan username &amp; password valid</td><td>Redirect ke dashboard sesuai role 🎯</td><td>AUTENTIKASI &amp; SESI 🔑</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-002</td><td>Login Gagal - Username / Password Salah 🚫</td><td>Salah username / salah password</td><td>Error "Invalid credentials" ⚠️</td><td>AUTENTIKASI &amp; SESI 🔐</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-003</td><td>Logout Berhasil 👋</td><td>Klik menu Logout</td><td>Session terhapus, redirect ke login ✨</td><td>AUTENTIKASI &amp; SESI 🔑</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-004</td><td>Redirect ke Login Belum Login 🔄</td><td>Akses protected page tanpa login</td><td>Redirect otomatis ke halaman login 🚪</td><td>AUTENTIKASI &amp; SESI 🛡️</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-005</td><td>Ganti Password Berhasil 🔑</td><td>Change password baru</td><td>Password berhasil diubah dan di-hash ✅</td><td>AUTENTIKASI &amp; SESI 🆕</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-006</td><td>Ganti Password Gagal - Password Lama Salah ❌</td><td>Masukkan password lama salah</td><td>Error "Invalid old password" 🚫</td><td>AUTENTIKASI &amp; SESI 🔐</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-007</td><td>Role-Based Redirect Login 👥</td><td>Login dengan berbagai role</td><td>Redirect ke dashboard sesuai role 🎯</td><td>AUTENTIKASI &amp; SESI 🎭</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-008</td><td>Tampilkan Semua Request 📊</td><td>Login Superuser → <code>/superuser</code></td><td>Tabel requests semua status ditampilkan 📋</td><td>SU, ADM, PHLEB, CS</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-009</td><td>Filter by Status 🎛️</td><td>Pilih status di dashboard filter</td><td>Filter berfungsi sesuai status 🔍</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-010</td><td>Filter by Date Range 📅</td><td>Set date1 &amp; date2 → filter</td><td>Filter tanggal berfungsi 🗓️</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-011</td><td>Search by Patient Name 👤</td><td>Masukkan nama pasien</td><td>Tampilkan request dengan nama tsb 🔍</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-012</td><td>Search by Lab Number 🔢</td><td>Masukkan Lab Number</td><td>Tampilkan request tsb 🎯</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-013</td><td>Search by Register Number #️⃣</td><td>Masukkan Register Number</td><td>Tampilkan request tsb 📌</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-014</td><td>Table Sorting ↕️</td><td>Klik header kolom</td><td>Kolom di-sort ASC/DESC 📈📉</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-015</td><td>Pagination 📖</td><td>Klik halaman berbeda</td><td>Berpindah halaman dengan benar 📄</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-016</td><td>Tampilkan List User 👥</td><td>Access <code>/superuser/users</code></td><td>Tabel users ditampilkan lengkap 📋</td><td>SU, ADM</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-017</td><td>Buat User Baru </td><td>Add User → isi form</td><td>User berhasil dibuat dan password di-hash 🆔</td><td>SU, ADM</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-018</td><td>Validasi Password Min 3 Karakter 🔢</td><td>Buat user dengan password &lt; 3 char</td><td>Error "Password min 3 karakter" ⚠️</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-019</td><td>Update User Role ✏️</td><td>Edit user → ubah role</td><td>Role berhasil diubah 🔄</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-020</td><td>Update Password User 🔐</td><td>Edit user → ganti password</td><td>Password di-hash dengan benar 🔄</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-021</td><td>Delete User 🗑️</td><td>Delete user</td><td>User terhapus dari database 🗑️</td><td>SU, ADM</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-022</td><td>Tampilkan Request Final ✨</td><td>Access <code>/superuser/validate</code></td><td>Hanya request "Fin" yang tampil ✅</td><td>SU, ADM, LAB</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-023</td><td>Filter by Date Range Validasi 📅</td><td>Set date1 &amp; date2 → filter</td><td>Filter berfungsi di halaman validasi 🔍</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-024</td><td>First Validation (VAL1) ✅</td><td>Validasi request "Fin"</td><td>ISVAL1=1, VAL1USER &amp; VAL1DATE diset 📝</td><td>SU, ADM, LAB</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-025</td><td>Second Validation (VAL2) ✅✅</td><td>Validasi dengan user berbeda</td><td>ISVAL2=1, request duavalidated 🎉</td><td>SU, ADM, LAB</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-026</td><td>Gagal Validasi Sendiri 🚫</td><td>Coba validasi ulang sama user</td><td>Error "Cannot validate own request" 🙅</td><td>SU, ADM, LAB</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-027</td><td>Un-Validate Request ↩️</td><td>Un-validate dengan reason</td><td>ISVAL reset, PENDING diset 🔄</td><td>SU, ADM</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-028</td><td>Shortcut Keyboard ⌨️</td><td>Enter=Validate, N=Skip, Esc=Close</td><td>Shortcut berfungsi dengan benar ⚡</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-029</td><td>Un-Receive Sample 🔙</td><td>Un-receive sample yang received</td><td>Status berubah, audit log tercatat 📋</td><td>SU, ADM, LAB</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-030</td><td>Print Label Individu 🏷️</td><td>Print label per tube</td><td>Label tercetak dengan ZPL format 🖨️</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-031</td><td>Print Collection Label 📋</td><td>Print collection label</td><td>Label collection tercetak 🏷️</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-032</td><td>Print All Labels 📄</td><td>Print semua tubes</td><td>Semua labels tercetak 🖨️</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-033</td><td>View Request Audit 🔍</td><td>Buka audit dialog request</td><td>Audit trail timeline ditampilkan 📜</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-034</td><td>Filter by Category 🎯</td><td>Filter: All, Validation, Receive, Sample</td><td>Filter berfungsi sesuai kategori 🔍</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-035</td><td>View Report Validated 📊</td><td>View report request duavalidated</td><td>Report ditampilkan lengkap 📋</td><td>SU, ADM, LAB, CS</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-036</td><td>Cannot View Not Validated 🚫</td><td>View report belum duavalidated</td><td>Error: "Validated request required" ⚠️</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-037</td><td>Print Report 🖨️</td><td>Print report request validated</td><td>Print dialog buka, audit log tercatat 📝</td><td>SU, ADM, LAB, CS</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-038</td><td>Generate PDF 📑</td><td>Generate PDF request validated</td><td>PDF berhasil di-generate ✅</td><td>SU, ADM, LAB, CS</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-039</td><td>Preview Report (No Audit) 👀</td><td>Preview report tanpa log audit</td><td>Report tampil, tidak ada audit log 📄</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-040</td><td>English Version Report 🇬🇧</td><td>Access <code>/report/{id}/eng</code></td><td>Report dalam Bahasa Inggris 🗣️</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-041</td><td>Error Handling 404 🚫</td><td>Akses URL tidak valid</td><td>Custom notfound page tampil 📄</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-042</td><td>Error Handling Unauthorized 🔒</td><td>Coba akses role lain</td><td>Redirect ke <code>/unauthorized</code> 🚫</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-043</td><td>Filter &amp; Search 🔍</td><td>Uji berbagai filter dan search</td><td>Semua berfungsi seperti Superuser ⚡</td><td>ADMIN, PHLEB, CS</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-044</td><td>Edit Comment Enabled ✏️</td><td>Edit comment dashboard</td><td>Comment dapat diubah 💬</td><td>ADMIN</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-045</td><td>View Audit Trail 📜</td><td>Buka audit dialog</td><td>Timeline audit ditampilkan 🔍</td><td>ADM, LAB, PHLEB, CS</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-046</td><td>Update User 🔄</td><td>Edit user → ubah data</td><td>User berhasil di-update ✅</td><td>ADMIN</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-047</td><td>Cannot Access Role Lain 🚫</td><td>Coba <code>/superuser</code>, <code>/lab</code>, <code>/phlebo</code>, <code>/cs</code></td><td>Redirect ke unauthorized/error ⛔</td><td>ADM, LAB, PHLEB, CS</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-048</td><td>Filter Test Code Alphabetical 🔤</td><td>Login Lab → <code>/lab</code></td><td>Hanya request TESTS A-Z yang tampil 📋</td><td>LAB</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-049</td><td>View Request Details 👁️</td><td>Buka request</td><td>Detail request ditampilkan 📄</td><td>LAB</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-050</td><td>Filter &amp; Search dalam Batas Filter 🔍</td><td>Uji filter &amp; search</td><td>Sesuai batas test code A-Z ✅</td><td>LAB</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-051</td><td>Sample Buttons Enabled ✅</td><td>Buka dialog sample</td><td>Tombol Collect/Un-Coll/Un-Recv enabled 🔘</td><td>LAB</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-052</td><td>Edit Comment Disabled 🔒</td><td>Cek comment field</td><td>Comment field non-editable 🚫</td><td>LAB, PHLEB, CS</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-053</td><td>Un-Validate Disabled 🔒</td><td>Coba un-validate</td><td>Error/Unauthorized - cannot un-validate 🚫</td><td>LAB</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-054</td><td>Sample Collection Disabled 🔒</td><td>Buka dialog sample</td><td>Tombol Collect/Un-Coll/Un-Recv DISABLED 🚫</td><td>PHLEB, CS</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-055</td><td>Validation Page Denied 🔒</td><td>Coba <code>/phlebo/validate</code></td><td>Halaman tidak tersedia/unauthorized ⛔</td><td>PHLEB, CS</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-056</td><td>View Sample Details (Read-Only) 👀</td><td>Buka dialog sample</td><td>Sample details view-only 📄</td><td>PHLEB, CS</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-057</td><td>Cannot View Report 🔒</td><td>Coba view report</td><td>Report tidak tersedia/error 🚫</td><td>PHLEB</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-058</td><td>Cannot Print Report 🖨️❌</td><td>Coba print report</td><td>Print tidak tersedia 🚫</td><td>PHLEB</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-059</td><td>Cannot Generate PDF 📑❌</td><td>Coba generate PDF</td><td>PDF tidak tersedia 🚫</td><td>PHLEB</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-060</td><td>Print Labels (Limited) 🏷️</td><td>Print labels</td><td>Labels tercetak sesuai kapasitas 🖨️</td><td>CS</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-061</td><td>User Mgmt Role Restrictions 🔐</td><td>Lab/Phlebo/CS coba user management API</td><td>Error unauthorized 🚫</td><td>FITUR CROSS-ROLE 🔗</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-062</td><td>Cross-Role Validation 🤝</td><td>Lab A validasi VAL1, Superuser B validasi VAL2</td><td>Cross-role validation berhasil ✅</td><td>FITUR CROSS-ROLE 🔄</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-063</td><td>Un-Validate Role Restrictions 🔒</td><td>Lab/Phlebo/CS coba un-validate</td><td>Error unauthorized - only SU/Admin 🚫</td><td>FITUR CROSS-ROLE 🛡️</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-064</td><td>Un-Receive Role Restrictions 🔒</td><td>Lab/Phlebo/CS coba un-receive</td><td>Error unauthorized - only SU/Admin 🚫</td><td>FITUR CROSS-ROLE 🛡️</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-065</td><td>Report Access Restrictions 👁️</td><td>Coba view report semua role</td><td>SU/Admin/Lab/CS OK, Phlebo NOT ✅❌</td><td>FITUR CROSS-ROLE 🔍</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-066</td><td>Report Validated Requirement ✅✅</td><td>View report hanya VAR1 vs duavalidated</td><td>Hanya duavalidated dapat dilihat 🎯</td><td>FITUR CROSS-ROLE ✅</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-067</td><td>Comment Edit Restrictions 💬🔒</td><td>Lab/Phlebo/CS coba edit comment</td><td>Error - only SU/Admin editable 🚫</td><td>FITUR CROSS-ROLE ✏️</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-068</td><td>Validasi tidak Pengaruhi Data Lain 🛡️</td><td>Record data sebelum &amp; sesudah validasi</td><td>Hanya status validasi berubah 📝</td><td>FITUR CROSS-ROLE 🔍</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-069</td><td>Un-Validate Mempertahankan Data 🔄</td><td>Record data sebelum &amp; sesudah un-validate</td><td>Hanya status validasi berubah 📝</td><td>FITUR CROSS-ROLE 🔍</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-070</td><td>Audit Trail Logging 📜</td><td>Lakukan berbagai aktivitas</td><td>Semua tercatat di audit log ✅</td><td>FITUR CROSS-ROLE 🔍</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-071</td><td>Concurrent Validation ⚡</td><td>2 user buka validation dialog bersamaan</td><td>Validasi berhasil, tidak conflict ✅</td><td>FITUR CROSS-ROLE 🤝</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-072</td><td>Concurrent Sample Collection ⚡</td><td>2 user collect tube berbeda bersamaan</td><td>Semua berhasil tercatat ✅</td><td>FITUR CROSS-ROLE 🧪</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-073</td><td>Session Timeout ⏱️</td><td>Tunggu session timeout</td><td>Redirect ke login 🔄</td><td>FITUR CROSS-ROLE 🔐</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-074</td><td>Password Hashing Security 🔒</td><td>Buat user → cek database</td><td>Password dalam HASH bukan plain 🛡️</td><td>FITUR CROSS-ROLE 🔐</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-075</td><td>Legacy Read-Only 👀</td><td>Cek koneksi &amp; fungsi Firebird</td><td>Hanya READ dari Firebird, TIDAK WRITE 🚫✍️</td><td>FITUR CROSS-ROLE 🗄️</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-076</td><td>Print Labels 🏷️</td><td>Print individual/collection/all</td><td>Semua labels tercetak 🖨️</td><td>ADM, LAB, PHLEB</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>TC-077</td><td>Edit Comment ✏️</td><td>Edit comment di dashboard</td><td>Comment berubah tersimpan 💾</td><td>SU</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
</table>
<h2>📋 Next Plan 📋</h2>
<table class="data-table">
<tr><th>ID</th><th>Judul Test Case</th><th>Langkah Utama</th><th>Expected Result</th><th>Role</th><th>Hasil</th><th>Issue/Jawaban</th></tr>
<tr><td>NP-001</td><td>Collect Sample 🧪</td><td>Buka dialog sample → Collect</td><td>STATUS=1, COLLECTIONDATE &amp; USERID diset ✅</td><td>SU, ADM, LAB</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>NP-002</td><td>Un-Collect Sample ↩️</td><td>Buka dialog sample → Un-Collect</td><td>STATUS di-reset, audit log tercatat 📝</td><td>SU, ADM, LAB</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
<tr><td>NP-004</td><td>Sample Collection Buttons Enabled ✅</td><td>Buka dialog sample</td><td>Tombol Collect/Un-Coll/Un-Recv enabled 🔘</td><td>ADMIN</td><td><input type="checkbox"><br> <input type="checkbox"></td><td><input type="text" value="___________"></td></tr>
</table>
</div>
</body>
</html>