Blackbox Testing — Document Classification (Apostille & Legalisasi)
- Domain: Apostille & Legalisasi
- Fitur: Document Classification (Papan Klasifikasi)
- Role/aktor: umum (pemohon)
- Tanggal uji: 2026-08-19
- Penguji (sesi): Supervisor Apostille
- Build/commit: 63c40a17 (dev/4)
1. Ringkasan fitur
Setelah unggah, sistem menjalankan klasifikasi fase 1: tiap berkas di-OCR dan diberi kategori, identitas (KTP) dan surat kuasa dipilah keluar dari papan, dan submission diparkir di AWAITING_CLASSIFICATION. Papan klasifikasi menampilkan tiap dokumen pada lane kategori beserta tingkat keyakinan (confidence). Pemohon dapat menyeret kartu ke lane lain untuk mengoreksi kategori, mengubah tipe tanda tangan (Konvensional/Elektronik), menambah/menghapus dokumen, lalu menekan "Lanjut ke Ekstraksi" untuk memulai fase 2.
2. Full workflow
2.1 Diagram state
stateDiagram-v2
[*] --> AWAITING_CLASSIFICATION: fase 1 selesai
AWAITING_CLASSIFICATION --> AWAITING_CLASSIFICATION: reclassify / tipe / add / delete
AWAITING_CLASSIFICATION --> EXTRACTING: Lanjut ke Ekstraksi (/start)
EXTRACTING --> READY: fase 2 selesai
READY --> [*]
2.2 Sequence (aktor - sistem)
sequenceDiagram
actor U as umum
participant FE as ApostilleClassificationPage
participant BE as Backend
U->>FE: Buka papan klasifikasi
FE->>BE: GET /api/submissions/:id/review
BE-->>FE: papan (dokumen + kategori + confidence)
U->>FE: Seret kartu ke lane lain
FE->>BE: POST /:id/documents/:docId/reclassify { category }
U->>FE: Klik badge tipe (Konvensional/Elektronik)
FE->>BE: POST /:id/documents/:docId/tipe { tipeDokumen }
U->>FE: Lanjut ke Ekstraksi
FE->>BE: POST /:id/start
BE-->>FE: EXTRACTING
2.3 Peta route & UI
| Langkah |
Route |
Komponen |
Elemen interaktif utama |
Selector |
| Papan |
/apostille/permohonan/:id/klasifikasi |
ApostilleClassificationPage |
kartu dokumen (draggable), lane kategori (droppable) |
[title="Seret untuk memindahkan kategori"] |
| Override kategori |
idem |
DndContext (@dnd-kit) |
drag card ke lane |
droppable id = kategori |
| Tipe TTD |
idem |
DocCardInner |
badge Konvensional/Elektronik |
teks badge |
| Confidence |
idem |
DocCardInner |
bar + persen |
- |
| Tambah dokumen |
idem |
tombol Tambah Dokumen |
hidden input[type=file] |
- |
| Hapus dokumen |
idem |
ikon Trash pada kartu |
tombol hover |
- |
| Gate |
idem |
tombol Lanjut ke Ekstraksi |
disabled bergantung syarat |
teks "Lanjut ke Ekstraksi" |
3. Prasyarat & data uji
| ID data |
Tipe |
Berkas |
Deskripsi |
Ekspektasi sistem |
| D-POS-30 |
Positive |
apostille_elektronik_nosk |
Papan berisi dokumen non-KTP |
Kartu tampil di lane |
| D-POS-33 |
Positive |
override ke PENDIDIKAN |
Reclassify |
Kategori berubah + tersimpan |
| D-NEG-33 |
Negative |
kategori "TIDAK_ADA" |
Reclassify kategori invalid |
400 BAD_CATEGORY |
| D-NEG-34 |
Negative |
submission COMPLETED |
Reclassify terkunci |
ditolak (SUBMISSION_LOCKED) |
4. Matriks skenario uji
| ID |
Tipe |
Lapisan |
Langkah ringkas |
Ekspektasi |
Hasil aktual |
Status |
Bukti |
| TC-CLS-01 |
Positive |
API |
reclassify dokumen ke PENDIDIKAN |
200, kategori tersimpan di papan |
Sesuai |
PASS |
classification.spec |
| TC-CLS-02 |
Negative |
API |
reclassify kategori invalid |
400 BAD_CATEGORY |
Sesuai |
PASS |
classification.spec |
| TC-CLS-03 |
Positive |
API |
toggle tipe ELEKTRONIK lalu KONVENSIONAL |
200, tipe berubah |
Sesuai |
PASS |
classification.spec |
| TC-CLS-04 |
Negative |
API |
reclassify pada submission COMPLETED |
ditolak (locked) |
Sesuai |
PASS |
classification.spec |
| TC-CLS-05 |
Positive |
UI |
Papan render lane + kartu + gate |
Elemen tampil |
Sesuai |
PASS |
classification-board.png |
| TC-CLS-06 |
Positive |
UI |
Seret kartu ke lane "Dokumen Pendidikan" |
POST /reclassify terpicu, 200 |
Sesuai |
PASS |
classification-drag.png |
5. Cakupan UI (semua yang diakses user)
| Route/Elemen |
Diuji? |
Perilaku benar? |
Catatan |
| Papan klasifikasi (render) |
Ya |
Ya |
Lane hanya muncul untuk kategori berisi; semua lane muncul saat menyeret |
| Drag-drop kartu ke lane (@dnd-kit) |
Ya |
Ya |
Drag nyata memicu /reclassify 200 |
| Badge tipe Konvensional/Elektronik |
Ya (API) |
Ya |
Toggle via endpoint /tipe |
| Bar confidence |
Ya (render) |
Ya |
Persen tampil per kartu |
| Tambah Dokumen |
Tidak |
- |
Endpoint teruji tidak langsung; UI tombol tersedia |
| Hapus dokumen (ikon Trash) |
Tidak |
- |
Muncul saat hover |
| Tombol Lanjut ke Ekstraksi |
Ya |
Ya |
Gate disabled bila syarat belum lengkap |
| Kartu identitas (KTP/pemohon/penerima) |
Ya (render) |
Ya |
Prompt merah bila KTP belum terbaca (kasus ORANG_LAIN) |
6. Temuan bug & perbaikan
| ID bug |
Severity |
Ringkas |
Reproduksi |
Ekspektasi |
Aktual |
Screenshot |
Rekomendasi perbaikan |
| BUG-CLS-01 |
Med |
KTP format PDF sering salah klasifikasi jadi KEPENDUDUKAN |
Unggah KTP sebagai PDF (mis. id_AP_84a5…pdf) |
KTP terbaca sebagai identitas dan dipilah keluar papan |
Terbaca KEPENDUDUKAN, tetap di papan; sisi KTP penerima/pemohon tidak cocok |
(papan konvensional) |
Tingkatkan deteksi layout KTP untuk PDF, atau tawarkan aksi "jadikan KTP" pada papan agar dokumen kependudukan bisa dipromosikan ke slot identitas |
| BUG-CLS-02 |
Low |
Komentar kode categoriesForService menyebut "Legalisasi hanya Perdagangan", padahal fungsi mengabaikan argumen dan mengembalikan semua kategori |
Baca frontend/src/lib/apostille-categories.ts vs komentar di ApostilleClassificationPage.tsx |
Komentar sesuai perilaku |
Komentar usang; perilaku permisif (semua kategori untuk kedua layanan) |
- |
Perbarui komentar; hapus blok outOfType bila memang tidak ada pembatasan kategori per layanan |
Catatan: klasifikasi pada scan asli tidak selalu tepat (mis. dokumen SKCK nyata terbaca SKCK dengan benar; dokumen lain kadang jadi SPESIMEN_PEJABAT/LAIN_LAIN). Ini WAJAR untuk klasifikasi otomatis dan justru alasan papan override ada. JPEG KTP terbaca benar; PDF KTP yang bermasalah (BUG-CLS-01).
7. Ringkasan & rekomendasi
- Total skenario: 6 (PASS 6 / FAIL 0)
- Cakupan UI: 6/8 elemen teruji langsung (Tambah/Hapus dokumen belum diklik di UI)
- Bug: High 0, Med 1 (deteksi KTP PDF), Low 1 (komentar usang)
- Rekomendasi prioritas: perbaiki/mitigasi deteksi KTP format PDF (BUG-CLS-01) karena berdampak pada gate ORANG_LAIN (kedua KTP wajib).
- Gap/keterbatasan: tombol Tambah/Hapus dokumen di UI belum ditekan (endpoint terkait teruji terpisah). Simulasi drag @dnd-kit berhasil dan stabil.