think
16px
820px

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.