Proposal Solusi Teknis

Integrated Web-Based Statistical Process Control Platform

Pengganti sistem SPC legacy dengan platform web terpusat, integrasi timbangan digital, dan jejak audit yang dapat dipertanggungjawabkan.

Merujuk padaURS-IT-SPC-001 v0.1
Tanggal27 Oktober 2026
Versi proposal0.1 — Draft
StatusUntuk review

23 requirement, 17 di antaranya Must

URS-IT-SPC-001 memuat 15 Functional, 2 Data Integrity, 2 Security, dan 4 Non-Functional. Seluruhnya dipetakan ke 10 modul dengan metode verifikasi sesuai kolom URS.

Jadwal URS perlu rebaseline

URS menargetkan launch Nov 2026. Per 27 Okt 2026 fase desain belum tercatat selesai. Usulan realistis: 13–15 minggu, atau pilot terbatas 6–7 minggu.

Arsitektur hybrid

Aplikasi & basis data di cloud, ditambah edge agent di pabrik untuk driver timbangan, buffer offline, dan registry perangkat.

Acuan anggaran

Capex 4,9 kEUR (±Rp 99 juta pada kurs ±Rp 20.200). Cukup untuk pengembangan software; hardware & server on-premise di luar angka ini.

1. Ringkasan Eksekutif

Klien membutuhkan pengganti sistem SPC lokal (legacy) yang sudah tidak didukung Windows 11, terkunci pada kiosk tetap, dan belum memiliki integrasi kamera. Solusi yang diusulkan adalah aplikasi web SPC terpusat dengan arsitektur hybrid: aplikasi dan basis data di cloud, ditambah edge agent di jaringan pabrik yang menangani pembacaan timbangan digital, antrean data saat internet terganggu, dan registrasi perangkat kiosk/tablet.

Pendekatan hybrid dipilih karena tiga alasan operasional:

  1. Timbangan digital umumnya hanya punya keluaran serial (RS-232/USB-serial), bukan API jaringan. Browser tidak bisa membacanya secara andal di mode kiosk, sehingga dibutuhkan komponen lokal yang berbicara ke perangkat keras.
  2. Konektivitas lantai produksi tidak selalu stabil. Tanpa buffer lokal, satu kali WiFi putus berarti operator kehilangan data entry — tidak dapat diterima untuk data kualitas.
  3. Fleksibilitas kepatuhan. Jika IT korporat klien mewajibkan seluruh data produksi tetap di dalam jaringan pabrik, komponen cloud dapat dipindahkan ke on-premise tanpa membangun ulang aplikasi.

Estimasi cakupan: 13–15 minggu untuk build penuh setelah discovery, dengan prototype fungsional 5–7 hari kerja yang dapat dipakai lebih dulu untuk mengunci pemahaman bersama sebelum kontrak pengembangan.

Catatan atas jadwal URS

Dokumen menyebutkan requirements/design Jul–Agu 2026, build/test Agu–Okt 2026, dan launch/training Nov 2026. Per tanggal proposal ini (27 Okt 2026) fase build seharusnya sudah berakhir dan go-live tinggal empat minggu lagi. Fase desain belum tercatat selesai, sehingga jadwal pada URS perlu di-rebaseline. Usulan jadwal realistis ada di bagian 12.

2. Pemahaman Kebutuhan Berdasarkan URS

Seluruh acuan kebutuhan dalam proposal ini bersumber dari URS-IT-SPC-001 v0.1. Tidak ada requirement dari sumber lain yang diperlakukan sebagai bagian dari kesepakatan.

2.1 Cakupan yang didefinisikan URS

URS-IT-SPC-001 memuat 23 requirement — 17 berprioritas Must dan 6 Should — tersebar pada empat kategori:

KategoriJumlahID
Functional15URS-FUN-001 s/d URS-FUN-015
Data Integrity2URS-DAT-001, URS-DAT-002
Security2URS-SEC-001, URS-SEC-002
Non-Functional4URS-NFR-001 s/d URS-NFR-004

Struktur dokumen URS dan implikasinya terhadap desain:

Bagian URSIsi menurut URSKonsekuensi desain
§1 Business needSistem SPC legacy lokal tidak didukung Windows 11, akses kiosk tetap, dan tidak memiliki integrated image captureAplikasi web terpusat, akses fleksibel kiosk/tablet, modul kamera (M3)
§1 In scopeSPC data entry; quality parameter monitoring; kiosk/tablet access; weighing-scale capture; dashboards; alerts; traceability; administrationDelapan area fungsional dipetakan menjadi modul M1–M10 (§3.1)
§1 Out of scopeAdvanced predictive analytics; ERP/MES integration; electronic approval workflowsTidak dibangun kecuali melalui change control (§2.2)
§2 UsersOperator, QA User, System Administrator, masing-masing dengan minimum accessRBAC tiga role ditegakkan di level database (M1)
§3 Requirements23 requirement dengan prioritas Must/Should dan metode verifikasiMatriks pemenuhan per URS ID (§3.2)
§4 Assumptions & open itemsSatu asumsi (kontrol IT standar ditambahkan agar URS implementable) dan tiga open itemDiteruskan sebagai daftar konfirmasi (§14.1)
Header dokumenStatus Draft for review, target launch Nov-26Jadwal perlu di-rebaseline (§12.1)
§5 ApprovalBusiness Owner/QA dan IT System Owner — masih PendingBaseline belum terkunci sampai kedua pihak menandatangani

Basis kontraktual: setiap kriteria penerimaan mengacu pada kolom Verification URS. Requirement di luar dokumen tersebut tidak dianggap bagian dari lingkup sampai disetujui melalui change control.

2.2 Di luar lingkup

Sesuai URS: advanced predictive analytics, integrasi ERP/MES, dan electronic approval workflow — kecuali ditambahkan melalui change control. Proposal ini tidak mengklaim kemampuan prediktif atau AI pada modul SPC; seluruh perhitungan bersifat statistik deterministik yang dapat diaudit.

3. Ruang Lingkup dan Pemetaan URS

3.1 Modul solusi

KodeModulIsi
M1Identity & AccessLogin, role (Operator / QA / Admin), PIN cepat untuk kiosk bersama, session timeout
M2Master DataLine, produk, batch/lot, parameter, satuan, target & spec limit (versioned), device, shift
M3Data Entry (Kiosk & Tablet)Form SPC, validasi wajib, ambil berat dari timbangan, capture kamera
M4SPC EngineKlasifikasi hasil (OK / Warning / OOS), Cp/Cpk, control chart rules
M5Dashboard LiveStatus terkini, filter multi-dimensi, tren per parameter
M6Deviation ManagementAlert, status investigasi, catatan QA (append-only)
M7Reporting & ExportLaporan terfilter, ekspor CSV/XLSX, cetak PDF
M8Audit & ComplianceAudit log immutable, soft-delete master data, retensi
M9Edge AgentDriver timbangan, buffer offline, registry device, health monitoring
M10AdministrationUser & role, konfigurasi sistem, monitoring sistem

3.2 Matriks pemenuhan requirement

URS IDPrioModulCara pemenuhanVerifikasi
FUN-001MustM3, M5Aplikasi web (React), target Windows 11 + Chrome/Edge versi enterprise-supported; tanpa instalasi clientTest
FUN-002MustM1Supabase Auth + RBAC 3 role; menu & API dibatasi per roleTest
FUN-003MustM2CRUD + deaktivasi (soft-delete) untuk line, produk, batch, parameter, satuan, target/limitTest
FUN-004MustM3, M9Satu codebase responsif; kiosk (landscape, layar besar) & tablet (portrait) berbagi form yang samaTest
FUN-005MustM3Field wajib: user, timestamp server, line, produk, batch, parameter, nilai; validasi sebelum submitTest
FUN-006MustM9Edge agent baca serial → WebSocket lokal → auto-isi field berat; hanya nilai stabil yang diterimaIntegration Test
FUN-007MustM3getUserMedia → preview → retake → simpanTest
FUN-008MustM3, M2Gambar disimpan ke Storage dengan path terikat record_id/batch; dapat dibuka dari recordTest
FUN-009MustM4Perbandingan otomatis terhadap spec aktif (LSL/USL/Warn) saat simpanTest
FUN-010MustM6Insert OOS memicu alert (in-app + email/WhatsApp opsional) memuat parameter, hasil, limit, line, produk, batch, waktuTest
FUN-011MustM5Dashboard live via Realtime; hasil baru tampil < 5 detik tanpa refresh manualTest
FUN-012ShouldM5Filter tanggal, line, produk, batch, parameter, status; reset tanpa menghapus dataTest
FUN-013ShouldM5Tren kronologis per parameter dengan garis target, LSL, USL, dan control limitsTest
FUN-014ShouldM6Catatan investigasi + status disimpan dengan author & timestamp; nilai asli tidak dapat diubahTest
FUN-015ShouldM7Ekspor mengikuti filter aktif, memuat ID record, hasil, limit, status, timestampTest
DAT-001MustM3UUID v4 + recorded_at dari now() server; timestamp klien disimpan terpisah sebagai client_ts untuk diagnosisTest
DAT-002MustM8Trigger Postgres menulis before/after JSONB ke audit_log; hak UPDATE/DELETE dicabut dari role aplikasiTest
SEC-001MustM1Akun unik, least privilege, penolakan kredensial invalid, opsi SSO Entra IDTest / Review
SEC-002ShouldM1Auto-lock setelah idle (default 15 menit operator, 30 menit QA — dapat dikonfigurasi)Test
NFR-001MustM3, M5Layout responsif diuji pada 360px dan 1024px+; tombol utama ≥ 56px, input numerik besarUAT
NFR-002ShouldSemuaTarget muat < 5 detik, freshness dashboard < 60 detik (desain aktual: < 5 detik via Realtime)Performance Test
NFR-003MustInfraSLA 99,5% jam operasional + maintenance window disepakati; monitoring uptime & alertReview
NFR-004MustInfraBackup harian + PITR, replikasi gambar, uji restore terdokumentasi per kuartalRecovery Test

4. Arsitektur Solusi

4.1 Gambaran komponen

Arsitektur hybrid platform SPC Kiosk Windows 11, tablet, dan timbangan digital di lantai produksi terhubung ke SPC Edge Agent. Edge agent mengirim data melalui koneksi HTTPS keluar ke Supabase dan aplikasi React di cloud, yang meneruskan alert deviasi ke email atau WhatsApp. LANTAI PRODUKSI — JARINGAN PABRIK Kiosk Windows 11 Chrome kiosk mode Tablet layout portrait Timbangan digital RS-232 / USB-serial SPC Edge Agent — mini-PC di pabrik driver timbangan · buffer offline SQLite · WebSocket lokal HTTPS — hanya koneksi keluar CLOUD Supabase Postgres · Auth · Storage · Realtime React SPA — kiosk & tablet satu codebase, dua breakpoint Alert deviasi → email / WhatsApp
Arsitektur hybrid: komponen on-premise menangani perangkat keras dan ketahanan koneksi; komponen cloud menangani data terpusat, otorisasi, dan pelaporan.

4.2 Prinsip desain

  • Edge agent bersifat opsional-gagal. Jika edge mati, kiosk tetap bisa dipakai dengan input manual berat. Tidak ada single point of failure pada entry data.
  • Outbound-only. Edge agent hanya membuka koneksi keluar ke cloud. Tidak ada port masuk ke jaringan pabrik — memudahkan persetujuan tim keamanan jaringan.
  • Satu codebase, dua persona. Kiosk dan tablet memakai aplikasi yang sama; perbedaan hanya pada layout adaptif dan mode kunci (kiosk mode).
  • Immutable by construction. Tidak ada operasi UPDATE/DELETE untuk hasil pengukuran. Koreksi dilakukan dengan record pembetulan (supersede) yang tertaut, sehingga histori tetap utuh.
  • Spec limit versioned. Perubahan LSL/USL oleh QA tidak mengubah klasifikasi record lama; setiap record menyimpan spec_version_id yang berlaku saat itu.

4.3 Opsi deployment

OpsiDeskripsiKelebihanKonsekuensi
A. Cloud penuhSemua di Supabase cloud + CDN; edge hanya untuk timbanganTercepat, biaya infrastruktur rendah, update instanData produksi keluar dari jaringan korporat — kemungkinan besar ditolak IT klien
B. Hybrid
(rekomendasi)
Aplikasi + DB cloud; edge agent di pabrikSeimbang, andal, biaya wajarPerlu persetujuan data residency
C. On-premise penuhSupabase self-host (Docker) di server pabrikData tidak keluarPerlu server + IT ops klien, biaya & waktu naik ~20–25%

Rekomendasi: Opsi B, dengan aplikasi dibangun agar migrasi ke Opsi C hanya mengganti konfigurasi endpoint — bukan menulis ulang kode. Keputusan final menunggu jawaban atas pertanyaan data residency di bagian 14.

5. Tech Stack dan Justifikasi

LapisanTeknologiAlasan
FrontendReact 18 + Vite + TypeScriptEkosistem matang, build cepat, tim mudah merekrut; SPA ringan untuk perangkat kiosk berspesifikasi rendah
UITailwind CSS + komponen aksesibelKontrol penuh atas ukuran target sentuh untuk operator bersarung tangan
ChartingRecharts / uPlotuPlot sangat cepat untuk deret waktu besar (ribuan titik per parameter); Recharts untuk chart interaktif dashboard
Tabel & eksporTanStack Table + SheetJSFilter, sort, virtualisasi, ekspor XLSX/CSV sisi klien
Backend & DBSupabase (Postgres 15+)Auth, RLS, Storage, Realtime, Edge Functions dalam satu platform; dapat di-self-host untuk Opsi C
Keamanan dataRow Level Security per role + lineLeast privilege ditegakkan di database, bukan hanya di UI
Edge agentNode.js 20 + serialport + better-sqlite3 + wsDriver serial paling matang di ekosistem JS; SQLite untuk buffer offline; berjalan sebagai Windows Service
NotifikasiResend/SMTP + WhatsApp Business API (opsional)Email wajib; WhatsApp realistis untuk supervisor QA di lapangan
Deployment webCloudflare Pages / VercelCDN global, deploy atomik, biaya rendah
ObservabilitySupabase Logs + Uptime monitor + SentryDeteksi error frontend dan kegagalan edge agent

Catatan: seluruh komponen bersifat open-source atau berbiaya operasional rendah. Tidak ada lisensi tersembunyi per-seat — penting untuk kiosk yang jumlahnya bisa bertambah.

6. Desain Data

6.1 Tabel inti

TabelKolom kunciCatatan
profilesid, full_name, role (operator/qa/admin), employee_id, pin_hash, active1:1 dengan auth.users
linesid, code, name, area, activeSoft-delete
productsid, sku, name, pack_size, unit, active—
parametersid, code, name, unit_id, decimals, method, product_idproduct_id null = parameter generik lintas produk
specsid, parameter_id, product_id, target, lsl, usl, warn_lsl, warn_usl, effective_from, effective_to, approved_byVersioned — perubahan menutup versi lama, tidak menimpa
batchesid, product_id, line_id, lot_no, prod_date, shift, activeUnik per (lot_no, product_id)
recordsid (uuid), recorded_at (server now()), recorded_by, line_id, product_id, batch_id, parameter_id, value, unit, spec_id, status, source (manual/scale), device_id, client_ts, superseded_byAppend-only
record_mediaid, record_id, storage_path, kind, captured_by, captured_at, checksumChecksum untuk deteksi manipulasi file
deviationsid, record_id, status (open/investigating/closed), assigned_to, closed_at1:1 dengan record OOS
deviation_notesid, deviation_id, author_id, note, created_atAppend-only, tanpa UPDATE/DELETE
audit_logid, table_name, row_id, action, actor_id, before (jsonb), after (jsonb), atDitulis trigger; role aplikasi tanpa hak ubah
devicesid, name, type (kiosk/tablet), line_id, scale_config (jsonb), last_seen, app_versionRegistry perangkat
alert_rulesid, parameter_id, trigger, recipients, channel, activeKonfigurasi oleh admin
system_configkey, value (jsonb)Timeout sesi, retensi, dsb.

6.2 Prinsip integritas

  • Append-only untuk hasil ukur. records tidak memiliki policy UPDATE/DELETE. Salah input ditangani lewat record pembetulan bertaut (superseded_by) yang tetap menyisakan record asli.
  • Trigger audit universal. Satu fungsi trigger dipasang pada seluruh tabel yang dapat diubah, menulis before/after sebagai JSONB. audit_log hanya memiliki policy SELECT untuk admin dan INSERT untuk trigger — tidak ada UPDATE/DELETE untuk siapa pun, termasuk admin.
  • Soft-delete master data. Deaktivasi mengisi active=false. Record historis tetap merujuk baris lama sehingga laporan tahun lalu tetap terbaca utuh.
  • Immutability gambar. File disimpan dengan nama berbasis record_id + checksum; verifikasi checksum dijalankan pada job harian.
  • Zona waktu. Semua timestamp disimpan timestamptz UTC, ditampilkan dalam Asia/Jakarta. recorded_at selalu dari server, bukan jam perangkat — perangkat kiosk sering salah jam.

6.3 Indeks untuk performa

Indeks komposit pada records (line_id, recorded_at desc), records (parameter_id, recorded_at desc), records (batch_id), dan records (status) where status <> 'ok'. Untuk volume realistis (mis. 20 line × 200 record/hari ≈ 1,4 juta record/tahun), Postgres dengan indeks ini tetap responsif tanpa partisi; partisi bulanan disiapkan sebagai opsi bila volume melebihi 10 juta record.

7. Integrasi Timbangan Digital

7.1 Realita protokol

Timbangan industri hampir selalu berkomunikasi lewat RS-232 (DB9) atau USB-serial, dengan keluaran ASCII. Protokol yang paling umum:

  • Mettler Toledo — MT-SICS, atau mode BDI (Bidirectional Data Interface) dengan perintah ASCII
  • Sartorius — SBI
  • Adam Equipment / Ohaus / AND / CAS — ASCII continuous atau on-demand (karakter perintah seperti S / SI)

Tidak ada standar tunggal. Karena itu desain driver dibuat profile-based: setiap profil berisi konfigurasi port (baud, data bits, parity, stop bits), mode (continuous vs on-demand), perintah permintaan, dan regex parsing.

7.2 Alur pembacaan

  1. Timbangan mengirim data ASCII ke port serial.
  2. Edge agent mem-parsing sesuai profil perangkat yang aktif.
  3. Edge agent mendeteksi kestabilan: flag ST dari timbangan, atau N sampel identik dalam ≥ 500 ms.
  4. Nilai divalidasi terhadap rentang dan satuan yang diharapkan.
  5. Nilai dikirim ke kiosk lewat WebSocket localhost:8787 dan tampil di field berat.

Kiosk berlangganan WebSocket lokal dan menampilkan berat live. Operator menekan "Ambil" untuk mengunci nilai — bukan otomatis tersimpan. Ini mencegah nilai transien (barang masih bergerak di atas timbangan) ikut tersimpan, dan memberi operator kendali yang jelas.

7.3 Penanganan kasus tepi

KasusPenanganan
Timbangan mati / kabel lepasBanner peringatan di kiosk; input manual tetap tersedia (tercatat source=manual)
Nilai tidak stabilTombol "Ambil" nonaktif sampai stabil terdeteksi
Satuan berbeda (g vs kg)Normalisasi ke satuan parameter di edge agent, bukan di UI
Beberapa timbangan per linePemetaan device_id → COM port di scale_config; operator memilih timbangan bila lebih dari satu
Kalibrasi kadaluarsaOpsional: calibration_due_at per device; kiosk menampilkan peringatan dan (dapat dikonfigurasi) memblokir entry

7.4 Kriteria penerimaan FUN-006

Uji integrasi: tempatkan anak timbangan standar (mis. 100 g), pastikan nilai terbaca pada field yang benar tanpa pengetikan ulang, dan selisih terhadap display timbangan ≤ resolusi alat (mis. ±0,1 g untuk timbangan 0,1 g). Uji diulang untuk setiap merek/model timbangan yang terpasang.

8. Capture Kamera

  • Akuisisi: getUserMedia pada browser kiosk/tablet — tanpa komponen tambahan, tanpa izin instalasi.
  • Alur UX: tombol kamera → preview live → jepret → pratinjau hasil → Ulangi atau Pakai. Operator tidak bisa menyimpan record tanpa menekan salah satu.
  • Kompresi: canvas resize ke maksimal 1600px sisi terpanjang, JPEG kualitas 0,8. Rata-rata 150–300 KB per foto — cukup untuk verifikasi visual, hemat storage.
  • Penyimpanan: bucket privat, path {line_code}/{YYYY}/{MM}/{record_id}/{ts}.jpg. Akses hanya via signed URL berumur pendek.
  • Keterkaitan (FUN-008): path memuat record_id, dan baris record_media menyimpan product_id + batch_id hasil join, sehingga gambar dapat ditelusuri dari record maupun dari batch.
  • Fallback: tablet tanpa kamera dapat mengunggah file dari galeri; kind dibedakan (camera vs upload).
  • Offline: foto diantrekan di edge agent (SQLite + folder lokal) lalu diunggah ulang saat koneksi pulih, dengan deduplikasi berbasis checksum.

9. Mesin SPC

9.1 Klasifikasi hasil (FUN-009)

Setiap nilai dibandingkan dengan versi spec yang berlaku saat penyimpanan:

KondisiStatus
LSL ≤ nilai ≤ USL dan di luar zona warningok
Masuk zona warning (warn_lsl/warn_usl bila dikonfigurasi)warn
nilai < LSL atau nilai > USLoos (out of specification)

Klasifikasi dijalankan di Edge Function saat insert — bukan di klien — agar tidak dapat dimanipulasi dari browser, dan agar hasil konsisten bila ada entry dari sumber lain (API, impor).

9.2 Statistik kemampuan proses

  • Cp / Cpk dihitung per parameter per jendela waktu (default 30 hari terakhir atau 25 subgroup terakhir): Cpk = min((USL − x̄), (x̄ − LSL)) / 3σ.
  • Pp / Ppk untuk variasi keseluruhan (long-term).
  • Control chart: I-MR untuk pengukuran tunggal per pengecekan (paling umum di lini es krim — satu sampel per interval), X̄-R bila data dikelompokkan per shift/batch.
  • Aturan alert (opsional, dapat diaktifkan QA): 1 titik di luar 3σ; 7 titik berurutan pada satu sisi mean; 6 titik naik/turun berurutan. Ini aturan SPC klasik yang dapat dihitung deterministik — bukan analitik prediktif, jadi tetap dalam lingkup URS.

9.3 Alert deviasi (FUN-010)

Saat status oos:

  1. Baris deviations dibuat otomatis (status=open).
  2. Edge Function mengirim notifikasi berisi: parameter, nilai, LSL/USL, line, produk, batch/lot, timestamp, dan tautan langsung ke record.
  3. Kanal: in-app (wajib) + email ke daftar penerima (wajib) + WhatsApp Business API (opsional, biaya terpisah).
  4. Eskalasi opsional: bila belum ditangani dalam X menit, naik ke supervisor QA.

Untuk mencegah banjir notifikasi saat satu batch bermasalah berulang, alert dikelompokkan per (batch, parameter) dengan jendela 15 menit — satu notifikasi dengan hitungan, bukan 20 notifikasi terpisah.

10. Dashboard dan Pelaporan

10.1 Dashboard live (FUN-011, FUN-012, FUN-013)

WidgetIsi
KPI stripTotal record hari ini, % OK, jumlah OOS terbuka, Cpk terendah
Live feed10 record terakhir dengan status berwarna; update via Realtime
Status per lineKartu per line: jumlah OOS, parameter paling bermasalah
Tren parameterLine chart dengan garis target, LSL, USL, dan control limits; zoom rentang waktu
Pareto deviasiParameter/line yang paling sering OOS dalam periode terpilih
Peta panasLine × jam, intensitas OOS — membantu melihat pola shift

Filter global: rentang tanggal/jam, line, produk, batch/lot, parameter, status. Semua filter tersimpan di URL sehingga sebuah tampilan dashboard dapat dibagikan sebagai tautan.

10.2 Laporan (FUN-015)

LaporanIsiFormat
Rekap SPC harianSemua record per line/shift dengan statusXLSX, PDF
Register deviasiDaftar OOS, status investigasi, catatan QA, waktu tutupXLSX, PDF
Capability reportCp/Cpk/Pp/Ppk per parameter per periodeXLSX, PDF
Traceability batchSeluruh record + foto untuk satu batch/lotPDF (lampiran gambar)
Audit extractPerubahan master data & record dalam rentang waktuCSV

Semua ekspor memuat ID record, nilai, limit, status, timestamp, dan identitas pencatat — memenuhi kriteria FUN-015. Ekspor dijalankan sebagai job untuk data besar, dengan tautan unduhan berumur terbatas.

10.3 UX untuk lingkungan produksi

Ini bagian yang sering diabaikan dan menjadi penyebab adopsi gagal:

  • Tombol aksi minimal 56×56 px, angka input 24pt+, kontras tinggi.
  • Alur entry maksimal 3 layar: pilih batch → ukur → simpan.
  • Kerja dengan sarung tangan: tanpa gesture geser, tanpa menu tersembunyi.
  • Tablet di area freezer memerlukan perangkat rated suhu rendah — spesifikasi perangkat dibahas di bagian 14.
  • Umpan balik instan: warna hijau/kuning/merah setelah simpan, plus bunyi pendek untuk OOS.

11. Keamanan, Kepatuhan, dan Non-Functional

11.1 Autentikasi dan otorisasi

  • Akun unik per operator (SEC-001), tanpa akun bersama.
  • Kiosk bersama memakai login PIN 6 digit yang dipetakan ke akun individual — memenuhi "unique accounts" tanpa memaksa operator mengetik password panjang di lantai produksi. PIN disimpan sebagai hash, dicabut otomatis bila tidak dipakai 90 hari.
  • Sesi auto-lock: 15 menit untuk operator, 30 menit untuk QA (dapat dikonfigurasi, SEC-002). Setelah lock, PIN diminta lagi.
  • Opsi SSO Entra ID / Microsoft 365 bila IT klien mensyaratkannya — disiapkan sebagai modul, bukan dibangun di fase 1 kecuali diminta.
  • RLS membatasi operator pada line yang ditugaskan; QA dan admin lintas line.

11.2 Backup dan pemulihan (NFR-004)

KomponenMetodeFrekuensiRetensi
PostgresBackup otomatis + PITRHarian + PITR 7 hari30 hari
Storage (foto)Replikasi bucket + snapshotHarian12 bulan
KonfigurasiVersioned via repositori GitSetiap perubahanTak terbatas
Audit logTermasuk backup DB, ekspor bulanan ke cold storageBulananSesuai kebijakan retensi

Uji restore dilakukan per kuartal dan didokumentasikan (siapa, kapan, berapa lama, hasil verifikasi) — inilah bukti yang diminta kriteria NFR-004, bukan sekadar konfigurasi backup.

11.3 Performa (NFR-002)

  • Target muat halaman < 5 detik pada koneksi 10 Mbps: bundle awal < 300 KB gzip, code-splitting per modul, gambar lazy-load.
  • Freshness dashboard: Realtime Supabase memberi update < 2 detik — jauh di bawah batas 60 detik.
  • Uji performa dilakukan dengan profil beban yang disepakati (jumlah record/hari, jumlah pengguna bersamaan).

11.4 Ketersediaan (NFR-003)

  • SLA usulan: 99,5% pada jam operasional yang disepakati, dengan maintenance window di luar jam produksi.
  • Monitoring: uptime check per 60 detik dari dua lokasi, alert ke tim support.
  • Ketahanan offline: edge agent menyimpan entry di SQLite ketika cloud tidak terjangkau dan menyinkronkan otomatis saat pulih. Operator melihat indikator "tersimpan lokal — menunggu sinkronisasi", sehingga data tidak hilang meski internet mati berjam-jam.
  • Health check edge agent: bila heartbeat > 5 menit hilang, admin menerima notifikasi.

11.5 Retensi data

Belum ditetapkan di URS (open item). Usulan default: data hasil ukur dan audit disimpan minimal 5 tahun; foto 24 bulan (volume terbesar); setelah itu diarsipkan ke cold storage, bukan dihapus. Angka final menunggu kebijakan QA/Regulatory klien.

12. Rencana Kerja dan Timeline

12.1 Kondisi jadwal saat ini

URS menargetkan launch Nov 2026. Per 27 Oktober 2026, itu berarti tinggal ±4 minggu — tidak realistis untuk lingkup penuh (integrasi timbangan, kamera, audit trail, backup teruji, UAT dua tipe perangkat). Menawarkan tanggal tersebut akan berujung pada go-live yang tidak lolos kriteria penerimaan URS sendiri.

12.2 Baseline yang diusulkan

FaseDurasiOutputPrasyarat dari klien
P0 — Prototype5–7 hari kerjaDemo fungsional: entry, DB, dashboard grafik, laporanContoh data & 1 set spec limit
P1 — Discovery & Design2 mingguDokumen desain disetujui, inventaris timbangan/kamera, protokol ujiAkses pabrik, daftar perangkat, persetujuan spec limit
P2 — Core Build6 mingguM1, M2, M3, M8 (auth, master data, entry, audit)Server/akun cloud disiapkan
P3 — Analytics & Report3 minggu (overlap P2)M4, M5, M6, M7Definisi laporan final
P4 — Edge & Integrasi2 mingguM9, driver timbangan terpasang di line pilot, kameraTimbangan & kabel siap, konverter USB-serial
P5 — UAT, Training, Go-Live2 mingguUAT sign-off, pelatihan operator & QA, SOP, go-livePeserta pelatihan, jadwal produksi

Total: 13–15 minggu kalender dengan asumsi feedback klien ≤ 3 hari kerja per siklus review.

Rollout yang disarankan bertahap: pilot 1–2 line (4 minggu), evaluasi, lalu perluasan ke seluruh line (2–3 minggu). Rollout bertahap menurunkan risiko dan memberi QA kesempatan menyesuaikan spec limit berdasarkan data nyata.

12.3 Jika klien tetap mengejar tanggal lebih awal

Satu-satunya jalur realistis adalah pilot terbatas: 1 line, parameter timbangan + volume saja, tanpa kamera, tanpa ekspor PDF lanjutan, tanpa WhatsApp alert. Ini bisa live dalam 6–7 minggu. Sisa modul menyusul. Perlu persetujuan tertulis bahwa kriteria penerimaan URS dipenuhi bertahap — bukan sekaligus.

13. Estimasi Biaya

13.1 Acuan anggaran klien

URS mencantumkan capex reference 4,9 kEUR. Dengan kurs EUR/IDR ±Rp 20.200 (per 27 Okt 2026), acuan tersebut setara ±Rp 99 juta.

13.2 Usulan alokasi

KomponenBobotEstimasi (Rp)
Discovery, desain, workshop12%11.900.000
Core build (auth, master data, entry, audit)35%34.650.000
SPC engine, dashboard, pelaporan22%21.780.000
Edge agent, integrasi timbangan & kamera13%12.870.000
UAT, pelatihan, deployment, dokumentasi10%9.900.000
Project management, QA, pendampingan security review8%7.920.000
Total100%≈ 99.000.000

Setara ±78 man-days dengan blended rate ±Rp 1,27 juta/man-day. Angka ini adalah estimasi perencanaan, bukan penawaran final; penawaran mengikat disusun setelah P1 Discovery ketika jumlah line, jumlah timbangan, dan kompleksitas laporan sudah pasti.

13.3 Belum termasuk

  • Perangkat keras: mini-PC edge agent, tablet industri (rated suhu rendah untuk area freezer), kabel RS-232/USB-serial, mounting kiosk. Perlu quotation terpisah dari vendor hardware.
  • Server on-premise bila klien memilih Opsi C.
  • WhatsApp Business API (biaya per percakapan).
  • Lisensi Windows 11 / kalibrasi timbangan.
  • Migrasi data historis dari sistem legacy — belum disebut di URS, perlu dikonfirmasi. Bila ada, estimasi tambahan 1–2 minggu.

13.4 Biaya operasional (indikatif)

Kategori: hosting aplikasi, Supabase (paket berbayar untuk PITR & kapasitas), storage foto, domain, monitoring. Rentang indikatif Rp 700 ribu – 1,5 juta/bulan untuk skala satu pabrik. Harga paket penyedia perlu diverifikasi ulang saat PO — jangan dijadikan angka kontraktual tanpa konfirmasi.

14. Asumsi dan Open Items

14.1 Dari URS (belum terjawab)

#Open itemDampak bila tidak dijawabUsulan default
1Versi browser yang didukungUji kompatibilitas tidak bisa ditutupChrome/Edge 2 versi terakhir
2Model kiosk & tabletLayout & UAT tidak terukurUji di 1024×768 dan 1280×800
3Tipe kameraFUN-007 berisiko gagalKamera terintegrasi / USB webcam
4Protokol timbanganDriver tidak dapat dibangunSampel 1 unit per merek untuk uji
5Jumlah pengguna bersamaanUji performa tidak validAsumsi 30 bersamaan
6Spec limit finalKlasifikasi & alert tidak dapat diujiNilai sementara dari data pilot
7Penerima & metode alertFUN-010 tidak lengkapEmail ke supervisor QA
8Target ketersediaanSLA tidak dapat disepakati99,5% jam operasional
9Inactivity timeoutSEC-002 tidak terukur15 menit operator, 30 menit QA
10Periode retensiBiaya storage tidak pasti5 tahun data, 24 bulan foto
11Frekuensi backup & RPO/RTONFR-004 tidak dapat diverifikasiHarian, RPO 24 jam, RTO 4 jam
12E-approval / ERP / prediktifRisiko scope creepDitunda ke change control

14.2 Tambahan dari kami (belum ada di URS)

#PertanyaanMengapa penting
AApakah data produksi boleh berada di cloud di luar jaringan korporat?Menentukan Opsi A/B/C; jika tidak boleh, jadwal & biaya naik 20–25%
BApakah perlu melalui security assessment / vendor onboarding IT korporat?Proses ini bisa 4–8 minggu dan berjalan paralel dengan build — mulai sekarang
CBerapa jumlah line dan produk aktif saat go-live?Menentukan effort master data & pelatihan
DStruktur shift dan jam operasional produksi?Menentukan SLA & jendela maintenance
EApakah operator memakai akun individu di kiosk bersama?Menentukan desain login PIN (SEC-001 vs realitas lantai)
FApakah ada data historis legacy yang harus dimigrasikan?Bisa menambah 1–2 minggu
GApakah batch/lot dipindai dari barcode atau diketik?Barcode scanner menambah akurasi & mengurangi salah input
HBahasa antarmuka: Indonesia, Inggris, atau keduanya?Menambah pekerjaan i18n
IApakah dibutuhkan tanda tangan elektronik pada laporan?Di luar scope URS, tapi sering diminta QA
JSiapa yang berwenang menyetujui perubahan spec limit?Menentukan alur & audit trail master data

15. Manajemen Risiko

#RisikoPeluangDampakMitigasi
1Jadwal URS sudah terlewat; ekspektasi tanggal tidak realistisTinggiTinggiRebaseline di kickoff; tawarkan pilot bertahap dengan kriteria penerimaan bertahap
2Security/data-residency review IT korporat memakan waktuTinggiTinggiMulai proses di minggu 1; siapkan dokumen arsitektur & data flow untuk reviewer; bangun agar Opsi C mulus
3Protokol timbangan tidak terdokumentasi / multi-merekSedangSedangProfil driver konfigurabel; minta 1 sampel unit per merek saat discovery
4WiFi lantai produksi tidak stabilTinggiSedangBuffer offline di edge agent + indikator status sinkronisasi di UI
5Spec limit belum disetujui QA saat buildSedangSedangSpec versioned + nilai sementara; uji klasifikasi dengan data dummy yang disetujui
6Anggaran 4,9 kEUR lebih kecil dari lingkup penuhSedangTinggiTransparansi alokasi (13.2); prioritaskan Must; Should ditawar bertahap
7Adopsi rendah karena UI tidak cocok untuk lantai produksiSedangTinggiUAT dengan operator asli di line pilot, bukan hanya QA; desain glove-friendly
8Scope creep ke ERP/MES/e-approvalSedangSedangChange control tertulis; daftar out-of-scope di bagian 2.2
9Perangkat kiosk/tablet tidak rated untuk area freezerSedangSedangKonfirmasi spesifikasi perangkat di discovery; alternatif enclosure
10Data entry ganda (double submit) akibat operator menekan simpan dua kaliSedangRendahIdempotency key per sesi entry; tombol disable setelah submit

16. Rencana Prototype (P0)

Prototype dibangun sebelum kontrak pengembangan penuh, untuk mengunci pemahaman bersama dan memberi klien sesuatu yang konkret untuk dinilai.

Lingkup prototype (5–7 hari kerja)

  1. Login dengan 3 role + RLS dasar
  2. Master data minimal: line, produk, batch, parameter, spec limit
  3. Form entry SPC yang responsif (desktop/kiosk + mobile/tablet): berat, volume, catatan
  4. Simulasi input timbangan (WebSocket) — menunjukkan alur FUN-006 tanpa hardware
  5. Klasifikasi otomatis OK/Warning/OOS terhadap LSL/USL
  6. Dashboard: live feed + tren per parameter dengan garis target & limit
  7. Laporan: tabel terfilter + ekspor CSV
Batas prototype

Yang sengaja belum ada: audit trail lengkap, kamera, multi-line penuh, PDF, notifikasi email, backup — semuanya bagian dari build penuh. Prototype menggunakan data contoh yang jelas ditandai sebagai dummy, bukan data produksi klien.

17. Langkah Selanjutnya

  1. Review proposal ini bersama tim — tandai bagian yang perlu disesuaikan dengan realitas internal.
  2. Jawab open items di bagian 14, khususnya A (data residency), B (security review), C (jumlah line), F (migrasi data).
  3. Jadwalkan kunjungan pabrik — inventaris timbangan, kamera, kiosk, dan kondisi jaringan adalah variabel terbesar yang belum terukur.
  4. Setujui prototype sebagai langkah pertama; demo ke stakeholder QA & IT.
  5. Susun penawaran mengikat setelah P1 Discovery, dengan jumlah line dan perangkat yang sudah pasti.

Dokumen ini disusun berdasarkan URS-IT-SPC-001 v0.1 dan bersifat proposal teknis untuk diskusi. Seluruh angka biaya adalah estimasi perencanaan. Kriteria penerimaan mengacu pada kolom Verification URS dan akan diformalkan dalam dokumen UAT.

Proposal Solusi Teknis — Integrated Web-Based SPC Platform · Versi 0.1 · 27 Oktober 2026