Referensi Form: Validasi, Error, Limit, dan Perilaku Sistem

Referensi Cepat untuk Aturan Validasi, Pesan Error, Batasan Sistem, dan Perilaku Lifecycle Data


Artikel ini adalah referensi cepat untuk aturan, batasan, dan perilaku yang mengatur Form. Disusun untuk di-scan, bukan dibaca dari awal sampai akhir — gunakan judul bagian untuk langsung ke topik yang Anda butuhkan. Untuk orientasi konseptual, baca terlebih dahulu Panduan Lengkap Form di Task Management.


1. Aturan Validasi per Input Type

Aturan Umum (berlaku di seluruh input type yang relevan)

  • Field mandatory harus diisi sebelum karyawan dapat berpindah ke halaman berikutnya atau melakukan submit. Pesan error muncul di field saat field tersebut kehilangan fokus dalam kondisi kosong.
  • Batas karakter berlaku untuk field berbasis teks (lihat Bagian 3 untuk maksimum spesifik). Input akan diblokir setelah batas tercapai.
  • Batas nilai berlaku untuk field numerik yang dikonfigurasi dengan aturan min/max value. Input di luar rentang akan memicu validasi inline.
  • Validasi format berlaku untuk input khusus (format email, phone number dengan prefix negara, format date).
  • Unique answer dapat dikonfigurasi di Client Portal tetapi saat ini ditangguhkan / belum diberlakukan — toggle bisa tersembunyi atau nonaktif tergantung status rilis.

Aturan Spesifik per Input Type

Input Type Validasi
Text Min char, max char (jika dikonfigurasi)
Number / Number Stepper Min value, max value (jika dikonfigurasi); hanya numerik
Email Harus dalam format email yang valid
Phone Number (Prefix) Nilai numerik dengan prefix negara (default +62)
Date Tanggal valid dalam format YYYY-MM-DD
Dropdown Single / Radio Wajib memilih satu jika mandatory
Dropdown Multiple / Checkbox Wajib memilih minimal satu jika mandatory; maks 10 opsi untuk Checkbox/Radio (tidak termasuk "Lainnya")
Currency / Length / Stock / Shelf Length Nilai numerik dengan prefix atau suffix; non-negatif
Photo / Open Camera / File Minimal satu file diperlukan jika mandatory
Photo Before-After Kedua set gambar Before dan After diperlukan jika pertanyaan mandatory
Stock OPEN-ENDING Nilai OPEN dan ENDING keduanya wajib (sub-field tidak dapat dipisah)
Shelf Share Numerik, mendukung hingga 2 angka desimal, tidak boleh negatif, suffix cm atau m; mandatory terkunci ke Yes

2. Pesan Error yang Umum

Client Portal (Admin)

Pemicu Pesan
User non-whitelisted mengakses modul Form No Access — diarahkan kembali ke modul pertama yang diperbolehkan
Halaman target logic jump telah dihapus "target page is no longer exists" — muncul di bawah field Jump To yang terdampak; memblokir progress step
Menambahkan pertanyaan logic jump kedua di halaman yang sama "Multiple questions with logic jumps are not allowed"
Reordering menyebabkan dua pertanyaan logic jump di halaman yang sama "Failed to reorder data. Only one question with a logic jump is allowed per page"
Menambahkan compound kedua di dalam compound "Failed to add Question: there can only be 1 Compound Input Type here."
Menyimpan form ketika channel yang dipilih sudah tidak ada di sistem "The selected channel(s) no longer exist in the system. The configuration has been refreshed, and invalid selections were removed."
Menyimpan form ketika working group / level / node yang dipilih telah dihapus "Working Group(s) no longer exist and automatically removed from the list. It is safe to proceed."
Data sistem yang digunakan compound hilang saat validasi "Some selected filter items no longer exist in the system. The configuration has been refreshed and invalid selections were removed."
Upload CSV bulk melebihi batas baris "The uploaded data exceeds the maximum of 1000 rows."
Upload bulk melebihi maksimum opsi per pertanyaan "Maximum number of options per question exceeded"
Rate limit ekspor terlampaui "Failed to begin export: Maximum attempts exceeded. Please try again in N minutes."

Mobile (Karyawan Lapangan)

Pemicu Pesan
Field mandatory atau invalid saat Selanjutnya/Simpan Drawer merangkum error; pesan field-level tetap terlihat sampai diperbaiki
Kunjungan sudah di-checkout dari perangkat lain "Kunjungan ini telah diselesaikan melalui perangkat lain. Silakan kembali ke daftar kunjungan untuk melanjutkan." (CTA: kembali ke daftar channel)
Target Per Visit belum tercapai saat menekan Kirim Drawer menampilkan daftar form yang belum lengkap dengan pencapaian X/Q dan sisa Q-X
Target harian tercapai "Target harian sudah tercapai"
Target form tercapai "Target sudah tercapai"
Copy from Previous ketika tidak ada submission sebelumnya "No previous data available" — karyawan lanjut mengisi manual
Copy from Previous ketika versi form tidak cocok "Form has been updated" — copy diblokir secara keras

3. Batasan Konfigurasi

Form Template

Batas Nilai
Form Template Name (maks karakter) 250
Form Template Description (maks karakter) 250
Training Title (maks karakter) 140
Training Material — jumlah file Maksimum 5
Training Material — tipe file JPEG, PNG, HEIC, PDF
Training Material — ukuran file masing-masing 5 MB
Active Period (Form Temporer) — rentang maks Start = minimum hari ini; end = maksimum 360 hari setelah start

Halaman dan Pertanyaan

Batas Nilai
Format halaman yang tersedia Hanya List (keterbatasan format tunggal di rilis saat ini)
Pertanyaan logic jump per halaman Maksimum 1
Question Title (maks karakter) 48 (di Compound)

Input Berbasis Opsi

Input Type Maks Opsi Catatan
Checkbox 10 (tidak termasuk Lainnya) Tombol Add Option nonaktif saat batas tercapai
Radio 10 (tidak termasuk Lainnya) Tombol Add Option nonaktif saat batas tercapai
Dropdown Single Tanpa batas Mobile menampilkan 100 pertama secara alfabetis + search
Dropdown Multiple Tanpa batas Mobile menampilkan 100 pertama secara alfabetis + search

Upload CSV Bulk

Batas Nilai
Maks baris per upload 1.000
Perilaku saat melampaui Semua baris gagal dengan toast The uploaded data exceeds the maximum of xxx rows.
Lapisan validasi Layer 1 (format/struktur file), Layer 2 (data per baris)
Perilaku partial success Baris yang valid diimpor; baris invalid ditampilkan di file hasil

Compound Input Type

Batas Nilai
Compound Input Type Name (maks karakter) 25
Button Label (maks karakter) 25
Description (maks karakter) 250
Question Title (maks karakter) 48
Pertanyaan per Compound Maksimum 10
Nested Compound per parent Maksimum 1
Kedalaman nesting Hanya 1 level (tidak ada nested di dalam nested)
Self-reference Tidak diperbolehkan
Circular nesting Tidak diperbolehkan

4. Batasan Ekspor dan Masa Simpan

Batas Nilai
Jumlah ekspor per jendela 15 menit 50
Baris per file 50.000 (dipisah menjadi beberapa file saat melampaui, diberi nama 1 of N, 2 of N, dst.)
Masa simpan file 90 hari sejak tanggal pembuatan
Status setelah masa simpan habis "Expired" — tombol Download dinonaktifkan
Format file .zip dengan proteksi password
Format password [Client ID][Client Name] (digabung tanpa spasi)
File yang disertakan dalam zip Export Log + Task Report Raw Data + (per Compound) Compound Sheet + (per Nested Compound) Nested Compound Sheet
Filter rentang tanggal 1–31 hari; start date maks 365 hari ke belakang; tidak boleh tanggal di masa depan

Audit Aktivitas Ekspor

Setiap aktivitas ekspor otomatis dicatat dengan:

  • User ID yang melakukan inisiasi
  • Timestamp
  • Semua parameter filter yang diterapkan

Log ini dapat diakses melalui halaman Export Result → View Detail.


5. Aturan Lifecycle Kunjungan dan Draft

Aturan Perilaku
Gating visibilitas form Form hanya muncul di Daftar Tugas setelah check-in berhasil
Snapshot saat check-in Struktur form, target, availability, assignment, dan konfigurasi compound semuanya terkunci ke kunjungan
Batas waktu 24:00 kunjungan Jika kunjungan tidak diselesaikan sampai tengah malam, kunjungan dan draft yang belum di-submit akan dihapus; tidak tercatat di laporan apa pun
Persistensi draft Draft bertahan saat navigasi, aplikasi diminimize, atau gangguan jaringan sementara, selama kunjungan masih "Dalam Proses"
Beberapa draft per form Diperbolehkan (sampai batas target); masing-masing memiliki Submission ID unik
Data draft saat meninggalkan tanpa menyimpan Dibuang; dialog konfirmasi memperingatkan karyawan
Submission final Atomic — semua draft dalam kunjungan berhasil di-submit, atau tidak ada yang berubah status (tidak ada partial submission)
Check-out gagal setelah submission berhasil Draft tetap di status Submitted; kunjungan tetap "Dalam Proses"; karyawan dapat retry check-out tanpa perlu mengirim ulang draft

6. Snapshot Binding (Apa yang Terkunci vs Apa yang Diperbarui)

Terkunci ke snapshot kunjungan (perubahan CP-side TIDAK memengaruhi kunjungan saat ini)

  • Struktur form (halaman, pertanyaan, input type, opsi)
  • Konfigurasi logic jump
  • Nilai dan mode target
  • Periode availability (jendela tanggal Temporary)
  • Training material
  • Cakupan assignment
  • Konfigurasi compound input type (termasuk nested compound)

Pembaruan hanya berlaku untuk kunjungan BARU

  • Setiap modifikasi yang dilakukan di Client Portal selama kunjungan berlangsung hanya akan berlaku saat karyawan check-in berikutnya.

Selalu mencerminkan state sistem terbaru (dinamis)

  • Nama karyawan di ekspor — mengikuti record karyawan saat ini (Employee ID tetap sama).
  • Nama Form Template di list dan history — diperbarui jika diganti.
  • Tampilan nama channel — diperbarui jika diganti.

Selalu mencerminkan snapshot pada saat submission (historis)

  • Struktur dan version form saat melihat atau mengekspor laporan yang sudah di-submit.
  • Nilai opsi yang dipilih dalam jawaban (meskipun opsi asli telah diganti namanya atau dihapus di database sumber).
  • Item compound yang dipilih dalam jawaban (meskipun item kemudian dihapus).

7. Aturan Integritas Data Historis

Laporan yang sudah di-submit tetap dapat diakses dan diekspor dalam semua skenario berikut:

Skenario Efek pada laporan yang sudah di-submit
Form template diganti namanya Laporan tetap terlihat; nama terbaru ditampilkan di list; struktur asli dipertahankan
Form template di-unassign dari channel Laporan tetap ada di Riwayat dan ekspor
Form template dihapus Laporan tetap terlihat dan dapat diekspor; struktur dipertahankan melalui snapshot
Channel menjadi inactive atau dihapus Laporan tetap ada; ekspor menyertakan data dari channel inactive/deleted
Karyawan menjadi inactive atau dihapus Laporan tetap ada; ekspor menyertakan data dari karyawan inactive/removed
Working Group / Level / Node dihapus Laporan tetap ada; hierarki assignment di snapshot dipertahankan
Form template di-upgrade ke version baru Submission asli tetap di-render menggunakan snapshot version aslinya

Ketika membuka submission historis, sistem selalu memuat struktur berdasarkan versi yang digunakan pada saat submission, bukan versi saat ini.


8. Aturan Versioning Form

Aturan Detail
Form ID Dibuat sekali saat pembuatan, format ClientID-MMYYYY-10character, tidak pernah berubah
Pemicu kenaikan version Aksi save yang meng-commit perubahan Step 2 (Form Builder) atau Step 3 (Logic Jump)
Tidak ada kenaikan version untuk Perubahan Step 1, Step 4, atau Step 5 (basic info, interaksi preview, assignment)
Reverting sebelum save Jika perubahan struktural dibatalkan ke nilai aslinya sebelum disimpan, tidak ada version baru yang dibuat
Satu save = satu version Beberapa perubahan struktural yang di-commit dalam satu save dihitung sebagai satu kenaikan version
Question ID — dipertahankan Saat memodifikasi title, opsi, mandatory flag, atau input type dari pertanyaan yang sudah ada
Question ID — dibuat baru Saat menambahkan pertanyaan secara manual, via duplicate question, atau via duplicate page
Version compound Compound di-version secara independen; mengedit compound otomatis menyebarkan version form baru ke semua form yang menggunakannya

9. Aturan Cakupan Save saat Mengedit

Lokasi Save Yang di-commit Yang dibuang
Step 1 Hanya perubahan Step 1 Perubahan Step 2, 3, 4, 5
Step 4 (Preview) Perubahan Step 1, 2, 3 Perubahan Step 5
Step 5 Semua perubahan Step 1–5 Tidak ada
Meninggalkan halaman tanpa save Tidak ada yang di-commit Semua perubahan di seluruh step

Catatan:

  • Step 2 dan Step 3 tidak memiliki tombol Save. Selalu lanjut via Next; commit terjadi di Step 4 atau Step 5.
  • Modal konfirmasi muncul saat meninggalkan halaman edit dengan perubahan yang belum disimpan (prompt in-app untuk navigasi breadcrumb; dialog native browser untuk refresh/tutup tab).

10. Aturan Khusus Compound Input Type

Aturan Detail
Format halaman di form Selalu List (format tunggal di rilis saat ini)
Mandatory dan unique pada pertanyaan form Diwariskan dari compound; terkunci di tingkat form
Logic jump Hanya page-level yang diperbolehkan di Compound Page; question-level dinonaktifkan
Reorder pertanyaan di dalam compound Tidak didukung di rilis saat ini; pertanyaan ditampilkan dalam urutan penambahan
Perubahan sumber item Memicu warning; menghapus konfigurasi filter dan Info Detail yang ada
Perubahan Input Type pertanyaan Memicu warning; berdampak pada semua form yang menggunakan compound
Nested compound Maksimum 1 per parent, tidak ada self-reference, tidak ada multi-level, tidak ada circular
Eksklusivitas Shelf Share Compound Shelf Share tidak dapat berisi input type lain
Mandatory Shelf Share Terkunci ke Yes; tidak dapat diubah
Presisi desimal Shelf Share Maksimum 2 angka desimal pada input shelf length
Identitas item di mobile Tap nama item untuk melihat Info Detail read-only (attribute asset/channel yang dikonfigurasi)

11. Cascade Dependency Working Group

Saat data hierarki working group dimodifikasi atau dihapus, dependensi otomatis ter-cascade:

Aksi pada hierarki Efek pada konfigurasi assignment
Working Group dihapus WG dihapus dari list; semua Level dan Node di bawahnya juga ikut terhapus dari konfigurasi
Level dihapus Level dihapus; semua Node di bawahnya ikut terhapus; parent WG tetap dipertahankan
Node dihapus Hanya Node tersebut yang dihapus; WG dan Level tetap dipertahankan
Semua entri yang terhapus saat save Otomatis dihapus dengan pesan konfirmasi: "Working Group(s) no longer exist and automatically removed from the list. It is safe to proceed."
Field wajib menjadi kosong setelah reset Save diblokir sampai pilihan valid dibuat

Cascade ini berlaku saat save edit dan saat re-validasi pada navigasi step. Di halaman edit read-only (tanpa memicu modifikasi), item hierarki yang sudah dihapus tetap terlihat sampai user secara eksplisit memodifikasi assignment.


12. Aturan Salin Jawaban Sebelumnya (Mobile)

Fitur Salin Jawaban Sebelumnya di mobile memungkinkan karyawan mengisi otomatis form menggunakan submission sebelumnya. Fitur ini mengikuti aturan ketat untuk mencegah data yang salah:

Aturan Detail
Kelayakan Hanya laporan terakhir yang sudah di-submit untuk form yang sama di channel yang sama yang memenuhi syarat
Beberapa submission sebelumnya Sistem otomatis memilih yang terbaru; tidak ada pemilihan manual
Versi harus cocok Jika version form telah berubah sejak submission sebelumnya, copy diblokir secara keras dengan pesan "form has been updated"
Tidak ada submission sebelumnya Pesan "No previous data available"; karyawan lanjut mengisi manual
Data hasil copy dapat diedit Semua field yang ter-prefill dapat dimodifikasi sebelum disimpan
Item yang dihapus dalam data hasil copy Tetap terlihat di state form; gagal validasi saat Selanjutnya/Simpan
Perilaku validasi pada data copy yang invalid Sistem otomatis scroll ke field invalid pertama, expand section-nya, dan highlight error-nya
Data tidak ter-prefill saat copy partial Jika copy gagal secara teknis, tidak ada data yang ter-prefill; form tetap kosong untuk diisi manual

Selanjutnya Baca Apa?

Jika Anda datang ke sini mencari sesuatu yang spesifik tetapi belum menemukannya, artikel pendamping terdekat adalah:

  • Untuk workflow itu sendiri → mulai dengan Cara Membuat Form Template atau Cara Mengedit Form Template
  • Untuk perilaku spesifik mobile → Cara Mengakses dan Mengisi Form di Mobile serta artikel mobile terkait
  • Untuk detail ekspor → Memahami File Task Report Export
  • Untuk penyegaran konsep → Panduan Lengkap Form di Task Management