Plate Enrollment
Daftarkan plat nomor kendaraan ke sistem untuk dipakai dalam License Plate Recognition matching, lengkap dengan data kendaraan, foto, dan pengelolaan CRUD.
Pengenalan
Plate Enrollment adalah proses mendaftarkan plat nomor kendaraan ke dalam sistem sebagai data referensi yang digunakan oleh mesin License Plate Recognition (LPR). Konsepnya serupa dengan Face Enrollment, namun objek yang diidentifikasi adalah kendaraan, bukan wajah orang.
| Aspek | Face Enrollment | Plate Enrollment |
|---|---|---|
| Objek | Wajah manusia | Plat nomor kendaraan |
| Data referensi | Foto wajah + data identitas | Foto kendaraan + data kendaraan |
| Dipakai oleh | Mesin Face Recognition | Mesin License Plate Recognition |
| Pengenal unik | face_id | unique_id + plate_number |
| Keyspace | Ya (isolasi populasi) | Tidak (global) |
Setiap enrollment plat menyimpan satu atau lebih foto kendaraan beserta atribut kendaraan: nama pemilik, nomor plat, merek, warna, jenis, dan status. Ketika kamera LPR membaca plat nomor dari kendaraan yang melintas, sistem mencocokkan hasilnya dengan database enrollment ini dan menghasilkan event yang merujuk pada data kendaraan yang terdaftar.
Berbeda dengan Face Enrollment, Plate Enrollment tidak menggunakan embedding vector. Pencocokan dilakukan berdasarkan kesamaan string plat nomor yang dibaca oleh kamera LPR, sehingga akurasi sangat bergantung pada kualitas pembacaan kamera.
Akses halaman ini memerlukan izin ENROLLMENT_PLATE. Jika halaman tidak muncul di sidebar Anda, hubungi administrator untuk mengatur hak akses yang sesuai.
Cara Menggunakan
Menambah Plat Nomor Baru
Buka menu Plate Enrollment
Akses halaman /plate-enrollment dari sidebar Lenz Dashboard. Anda akan melihat tabel daftar plat nomor yang sudah terdaftar beserta toolbar pencarian di bagian atas.
Klik tombol "Daftarkan Kendaraan Baru"
Di toolbar, klik tombol Daftarkan Kendaraan Baru untuk membuka form pendaftaran. Form akan muncul sebagai modal dialog.
Isi data kendaraan
Lengkapi informasi berikut pada form:
- Nama Pemilik — nama pemilik atau penanggung jawab kendaraan, wajib diisi
- Nomor Plat — nomor plat kendaraan sesuai format resmi Indonesia, wajib diisi
- Merek — merek kendaraan (contoh: Toyota, Honda, Mitsubishi), wajib diisi
- Warna — warna bodi kendaraan, opsional
- Jenis Kendaraan — pilih salah satu:
Mobil,Motor,Truk, atauBus, opsional - Status — status kendaraan (contoh: whitelist, blacklist), opsional
Nomor plat disimpan persis seperti yang Anda masukkan. Gunakan format standar agar pencocokan dengan hasil pembacaan kamera LPR konsisten — misalnya B 1234 ABC dengan spasi sebagai pemisah.
Upload foto kendaraan
Gunakan area Gambar Kendaraan untuk mengunggah satu atau lebih foto. Foto harus berformat JPEG/JPG. Seret file ke area dropzone, atau klik untuk memilih dari file manager.
Anda dapat mengunggah lebih dari satu foto per kendaraan. Setiap foto akan tersimpan sebagai variasi gambar yang dapat dilihat di halaman detail. Minimal satu foto diperlukan saat pendaftaran.
Klik "Daftarkan Kendaraan"
Klik tombol Daftarkan Kendaraan untuk menyimpan. Sistem akan mengirimkan data ke POST /api/enrolled-plates menggunakan multipart/form-data. Setelah berhasil tersimpan, data akan muncul di tabel enrollment.
Mengedit Enrollment Plat
Buka enrollment yang ingin diedit
Klik baris manapun pada tabel, atau klik ikon Edit di kolom Aksi pada baris yang sesuai. Form edit akan terbuka sebagai modal dialog dengan data yang sudah terisi.
Ubah field yang diinginkan
Semua field yang tersedia pada form tambah dapat diubah di sini: nama pemilik, nomor plat, merek, warna, jenis kendaraan, dan status.
Kelola foto kendaraan (opsional)
- Lihat foto saat ini — foto yang sudah tersimpan ditampilkan di bagian Gambar Saat Ini
- Tambah foto baru — gunakan area Tambah Gambar Baru untuk mengunggah foto tambahan
- Hapus foto lama — klik ikon hapus pada foto yang ingin dihapus dari daftar gambar saat ini
Pastikan minimal satu foto tetap tersimpan setelah pengeditan. Sistem akan menolak penyimpanan jika tidak ada foto yang tersisa.
Simpan perubahan
Klik Perbarui Kendaraan untuk menyimpan. Sistem akan memanggil PUT /api/enrolled-plates/:id.
Menghapus Enrollment Plat
Penghapusan bersifat permanen. Data tidak dapat dipulihkan setelah dihapus.
Untuk menghapus satu enrollment: klik ikon Hapus di kolom Aksi pada baris yang sesuai, kemudian konfirmasi dialog yang muncul. Dialog akan menampilkan nama pemilik dan nomor plat untuk memastikan data yang akan dihapus sudah benar.
Untuk menghapus beberapa enrollment sekaligus: centang baris yang ingin dihapus menggunakan checkbox di kolom paling kiri, lalu klik tombol Hapus Terpilih (N) di toolbar, dan konfirmasi dialog konfirmasi massal.
Pencarian dan Filter
Tabel Plate Enrollment menyediakan beberapa cara untuk menemukan data:
- Cari berdasarkan nama pemilik atau nomor plat — ketik di kotak pencarian di toolbar; pencarian berjalan setelah jeda singkat (debounce 500ms)
- Filter Status — pilih status dari dropdown untuk menampilkan hanya enrollment dengan status tertentu
- Reset Filter — klik tombol Reset Filter untuk menghapus semua filter aktif sekaligus
- Pagination — navigasi antar halaman dan atur jumlah data per halaman (default: 10 data per halaman)
Konsep Plat Nomor Indonesia
Format plat nomor kendaraan di Indonesia terdiri dari tiga bagian:
[Kode Wilayah] [Nomor] [Seri Huruf]
Contoh: B 1234 ABC| Bagian | Deskripsi | Contoh |
|---|---|---|
| Kode Wilayah | Satu atau dua huruf yang menunjukkan daerah registrasi | B (Jakarta), D (Bandung), L (Surabaya) |
| Nomor | Satu hingga empat digit angka | 1234 |
| Seri Huruf | Satu hingga tiga huruf sebagai pengenal tambahan | ABC |
Saat memasukkan nomor plat di form Plate Enrollment, gunakan format yang konsisten dengan output mesin LPR di sistem Anda. Jika kamera LPR mengembalikan plat tanpa spasi (contoh: B1234ABC), maka daftarkan juga tanpa spasi agar pencocokan berhasil.
Beberapa kode wilayah yang umum digunakan:
| Kode | Wilayah |
|---|---|
B | DKI Jakarta dan sekitarnya |
D | Kota Bandung dan sekitarnya |
L | Kota Surabaya |
AB | DI Yogyakarta |
H | Kota Semarang |
F | Bogor, Cianjur, Sukabumi |
T | Purwakarta, Karawang, Subang |
Fitur Utama
Multi-foto per Kendaraan
Simpan beberapa foto kendaraan sebagai variasi gambar untuk referensi visual yang lebih lengkap.
CRUD Lengkap
Tambah, lihat detail, edit, dan hapus enrollment melalui antarmuka yang intuitif tanpa perlu mengakses API secara langsung.
Bulk Delete
Hapus banyak enrollment sekaligus dengan memilih baris menggunakan checkbox, menghemat waktu pengelolaan data.
Filter dan Pencarian
Temukan enrollment dengan cepat melalui pencarian nama/plat dan filter berdasarkan status kendaraan.
Status Kendaraan
Tandai kendaraan dengan status khusus (whitelist, blacklist, dan lainnya) untuk keperluan identifikasi dan tindak lanjut.
Integrasi LPR
Data enrollment langsung dipakai oleh mesin License Plate Recognition untuk pencocokan plat nomor secara real-time.
API Reference
Semua endpoint memerlukan header Authorization: Bearer <token>. Basis URL mengikuti variabel lingkungan VITE_API_URL yang dikonfigurasi pada instalasi Lenz.
Seluruh request yang mengirim data kendaraan (POST dan PUT) menggunakan Content-Type: multipart/form-data karena menyertakan file gambar.
GET /api/enrolled-plates — Daftar Plat Terdaftar
Mengambil daftar enrollment plat dengan dukungan pagination, pencarian, dan filter status.
Prop
Type
curl "${VITE_API_URL}/api/enrolled-plates?page=1&limit=10&search=B+1234" \
-H "Authorization: Bearer ${TOKEN}"{
"ok": true,
"message": "successfully get enrolled plates",
"result": {
"limit": 10,
"current_page": 1,
"total_data": 2,
"total_page": 1,
"offset": 0,
"vehicles": [
{
"id": 1,
"unique_id": "VH-001",
"name": "Budi Santoso",
"plate_number": "B 1234 ABC",
"type": "car",
"brand": "Toyota",
"color": "Putih",
"status": "whitelist",
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2024-01-01T00:00:00Z",
"deleted_at": null,
"vehicles": [
{ "id": 1, "enrolled_plate_id": 1, "variation": 1, "created_at": "2024-01-01T00:00:00Z" }
]
}
]
}
}POST /api/enrolled-plates — Tambah Plat Baru
Mendaftarkan satu kendaraan baru ke sistem. Content-Type harus multipart/form-data.
Prop
Type
curl -X POST "${VITE_API_URL}/api/enrolled-plates" \
-H "Authorization: Bearer ${TOKEN}" \
-F "name=Budi Santoso" \
-F "plate_number=B 1234 ABC" \
-F "brand=Toyota" \
-F "color=Putih" \
-F "type=car" \
-F "status=whitelist" \
-F "images=@/path/to/foto-kendaraan.jpg"{
"ok": true,
"message": "successfully enrolled plate",
"result": {
"id": 42,
"unique_id": "VH-042",
"name": "Budi Santoso",
"plate_number": "B 1234 ABC",
"type": "car",
"brand": "Toyota",
"color": "Putih",
"status": "whitelist",
"created_at": "2024-06-01T08:00:00Z",
"updated_at": "2024-06-01T08:00:00Z",
"deleted_at": null
}
}GET /api/enrolled-plates/:id — Detail Plat
Mengambil detail lengkap satu enrollment plat berdasarkan ID numeriknya, termasuk daftar variasi gambar.
curl "${VITE_API_URL}/api/enrolled-plates/42" \
-H "Authorization: Bearer ${TOKEN}"{
"ok": true,
"message": "successfully get detail enrolled plate",
"vehicle": {
"id": 42,
"unique_id": "VH-042",
"name": "Budi Santoso",
"plate_number": "B 1234 ABC",
"type": "car",
"brand": "Toyota",
"color": "Putih",
"status": "whitelist",
"created_at": "2024-06-01T08:00:00Z",
"updated_at": "2024-06-01T08:00:00Z",
"deleted_at": null,
"vehicles": [
{ "id": 10, "enrolled_plate_id": 42, "variation": 1, "created_at": "2024-06-01T08:00:00Z" }
]
}
}PUT /api/enrolled-plates/:id — Update Plat
Memperbarui data enrollment plat yang sudah ada. Content-Type harus multipart/form-data. Field name, plate_number, dan brand tetap wajib diisi meskipun nilainya tidak berubah.
Prop
Type
curl -X PUT "${VITE_API_URL}/api/enrolled-plates/42" \
-H "Authorization: Bearer ${TOKEN}" \
-F "name=Budi Santoso" \
-F "plate_number=B 1234 ABC" \
-F "brand=Toyota" \
-F "status=blacklist" \
-F "images=@/path/to/foto-baru.jpg"DELETE /api/enrolled-plates/:id — Hapus Plat
Menghapus enrollment plat secara permanen beserta seluruh data foto yang terkait.
curl -X DELETE "${VITE_API_URL}/api/enrolled-plates/42" \
-H "Authorization: Bearer ${TOKEN}"{
"ok": true,
"message": "successfully deleted enrolled plate"
}GET /api/vehicles — Daftar Kendaraan
Mengambil daftar kendaraan yang tersedia di sistem. Endpoint ini digunakan secara internal untuk keperluan referensi data kendaraan.
curl "${VITE_API_URL}/api/vehicles" \
-H "Authorization: Bearer ${TOKEN}"GET /api/enrolled-plates/statuses — Status Enrollment
Mengambil ringkasan jumlah enrollment yang dikelompokkan berdasarkan status. Digunakan untuk menampilkan pilihan filter status di toolbar.
curl "${VITE_API_URL}/api/enrolled-plates/statuses" \
-H "Authorization: Bearer ${TOKEN}"{
"ok": true,
"message": "success",
"result": {
"total": 150,
"statuses": [
{ "status": "whitelist", "total": 100 },
{ "status": "blacklist", "total": 30 },
{ "status": "normal", "total": 20 }
]
}
}Format Foto Kendaraan
- Format file — JPEG atau JPG saja; file PNG atau format lain tidak diterima
- Jumlah foto — minimal satu foto per enrollment; tidak ada batas maksimum yang didokumentasikan, namun rekomendasi 2–3 foto (tampak depan, tampak belakang, dan tampak samping) untuk referensi visual yang lebih baik
- Resolusi — rekomendasi minimum 640×480 piksel; foto beresolusi rendah dapat menyulitkan identifikasi visual
- Komposisi — plat nomor harus terlihat jelas dan tidak tertutup; pencahayaan merata; hindari foto malam hari tanpa lampu yang memadai
- Kualitas — tidak buram, tidak terpotong di area plat, tidak terhalang benda atau orang lain
- Ukuran file — tidak ada batasan ukuran yang ditetapkan secara eksplisit, namun disarankan di bawah 5 MB per file untuk performa upload yang optimal
Foto kendaraan di Plate Enrollment berfungsi sebagai referensi visual bagi operator, bukan sebagai input untuk algoritma pencocokan. Pencocokan LPR tetap dilakukan berdasarkan string nomor plat, bukan kesamaan gambar kendaraan.