Case Study · Hardware Automation
Setiap kali admin merilis sebuah SPK (Surat Perintah Kerja) dari sistem ERP, dokumen itu harus sampai ke tangan operator di lantai produksi dalam hitungan detik. Produksi tidak bisa menunggu.
Kenyataannya, operator harus melakukan ini sendiri: buka browser → login ke ERP → cari nomor SPK → unduh PDF → buka PDF Reader → tekan Ctrl+P → pilih printer yang benar → konfirmasi cetak. 2 sampai 3 menit untuk setiap SPK. Di pabrik yang merilis puluhan SPK per hari, itu bottleneck yang nyata.
Yang lebih parah: operator pabrik bukan pengguna komputer yang terlatih. Mis-print karena salah pilih ukuran kertas, orientasi terpotong, atau salah printer bukan kejadian langka — itu kejadian harian yang menghambat lini produksi.
Masalah ini bukan masalah UX — bukan soal membuat tampilannya lebih mudah. Masalahnya adalah operator tidak seharusnya terlibat dalam proses cetak sama sekali. Begitu SPK dirilis, printer harusnya langsung mencetak. Otomatis. Tanpa satu pun klik dari operator.
Solusinya adalah sebuah agen kecil yang berjalan diam-diam di background server lokal pabrik — memonitor antrean cetak dari cloud setiap 3 detik, dan mengeksekusi print job secara silent langsung ke printer fisik yang dituju.
TPrintQueue dengan status pending.
GET /api/print-queue/pending setiap 3 detik. Berjalan di background.
POST /api/print-queue/complete/{id} dikirim ke server. Status diupdate, job selesai.
Dua masalah OS-level yang tidak terlihat di permukaan tapi menjadi blocker kritis:
1. Windows Session 0 Isolation
Task Scheduler menjalankan script di Session 0 — sebuah sesi terisolasi yang diblokir Windows dari akses ke GDI dan printer spooler. Print job menggantung tanpa pesan error. Solusinya: mendaftarkan script lewat wrapper yang secara eksplisit mengaktifkan interaksi desktop, atau mengalihkan ke sesi terotentikasi via Windows Auto-Logon terenkripsi.
2. Double-Hop Authentication
Ketika script dipicu dari remote connection, kredensial hilang di hop pertama. Script kehilangan akses ke network printer dan menghasilkan "Access Denied" diam-diam. Diselesaikan dengan PSCredential eksplisit atau konfigurasi CredSSP.
# Mengatasi Double-Hop: PSCredential eksplisit untuk Windows Spooler
$PasswordSec = ConvertTo-SecureString "P@ssword" -AsPlainText -Force
$Creds = New-Object System.Management.Automation.PSCredential("Administrator", $PasswordSec)
# Silent print — operator tidak terlibat sama sekali
Start-Process -FilePath "$SumatraPath" -ArgumentList "-print-to `"$PrinterName`" -silent `"$safePdf`"" -Credential $Creds -NoNewWindow -Wait
"Solusi terbaik untuk masalah UX kadang bukan memperbaiki UI-nya. Tapi menghilangkan kebutuhan user untuk berinteraksi dengan UI sama sekali."