Lapisan Bronze
Lapisan Bronze berisi dua skema data yang berbeda, masing-masing melayani aspek berbeda dari platform telematika dan intelijen bisnis:
raw_business_data - berisi tabel, atribut, dan nilai yang terkait dengan informasi bisnis, seperti kendaraan, karyawan, geofence yang ditambahkan oleh pengguna, dll.
raw_telematics_data - berisi tabel, atribut, dan nilai yang terkait dengan data telematika yang dikirim dari perangkat yang dimonitor, seperti lokasi, input, output, dan peristiwa.
Setiap skema dioptimalkan untuk domain data dan pola akses spesifiknya, memberikan cakupan menyeluruh untuk kebutuhan operasional, telematik, dan manajemen aset.
raw_business_data struktur
raw_business_data strukturSkema ini berisi lebih dari 40 tabel yang dipilih dengan cermat untuk mencakup berbagai aspek bisnis dan kasus penggunaan. Tabel-tabel ini merepresentasikan entitas inti bisnis Anda, struktur organisasi, dan data operasional.
Diagram interaktif skema raw_business_data tersedia di dbdiagram.io: https://dbdiagram.io/d/V3-bronze-layer-68ecfd1c2e68d21b4131089a
Temukan rincian skema raw business data di bawah ini.
Frekuensi pembaruan
Data dalam skema ini disinkronkan dengan DB inti. Pembaruan terjadi secara inkremental saat perubahan terjadi di database MySQL sumber, biasanya kurang dari 5 menit setelah perubahan sumber.
description_parameters
description_parametersSistem mencakup data referensi untuk menstandarkan nilai di seluruh basis data:
Definisi tipe
Tipe entitas standar
vehicle_type: car, truck, bus
Kode status
Nilai status tugas dan sistem
tasks_status: unassigned, assigned, done
Definisi satuan
Satuan pengukuran untuk sensor
units_type: liter, gallon, celsius
Klasifikasi entitas
Kategori entitas bisnis
entities_type: place, task, customer
Tabel kunci menurut kategori
Tabel-tabel dalam raw_business_data skema diorganisasikan ke dalam kategori fungsional untuk navigasi yang lebih mudah. Tabel di bawah merangkum tabel kunci menurut tujuan bisnisnya:
Entitas bisnis inti
users
Deskripsi: Akun pengguna yang berisi informasi profil, afiliasi perusahaan, pengaturan lokalisasi (zona waktu, lokal), dan hubungan hierarkis melalui master_id untuk struktur akun bertingkat
Bidang kunci
- user_id - Pengidentifikasi unik pengguna
- company_label - Nama perusahaan yang terkait dengan pengguna
- first_name - Nama pengguna
- last_name - Nama belakang pengguna
- middle_name - Patronim pengguna
- locale - Pengaturan bahasa pengguna
- timezone_label - Zona waktu dalam format IANA
- master_id - ID pengguna utama (jika yang sekarang adalah bawahan)
- registration_datetime - Tanggal pendaftaran dalam sistem
- birth_date - Tanggal lahir pengguna
Hubungan
Pengguna induk melalui master_id, terkait ke employees, departments, places, tasks melalui user_id
Catatan khusus
Entitas pusat yang menghubungkan data organisasi; master_id memungkinkan hierarki pengguna untuk struktur akun bertingkat
employees
Deskripsi: Catatan karyawan dan pengemudi yang digunakan untuk merepresentasikan orang yang bekerja untuk organisasi, termasuk informasi pribadi, detail lisensi, penugasan departemen, kunci perangkat keras untuk identifikasi iButton/RFID, dan data lokasi dengan dukungan geofencing
Bidang kunci
- employee_id - Pengidentifikasi entitas karyawan
- user_id - Pengidentifikasi entitas pengguna
- object_id - Pengidentifikasi entitas objek
- department_id - ID departemen tempat karyawan ditugaskan
- first_name - Atribut first_name dari tabel employees
- last_name - Atribut last_name dari tabel employees
- middle_name - Atribut middle_name dari tabel employees
- driver_license_number - Nomor SIM pengemudi
- driver_license_categories - Kategori lisensi pengemudi
- driver_license_issue_date - Tanggal penerbitan SIM
- driver_license_valid_till - Tanggal sampai SIM berlaku
- hardware_key - Kunci perangkat keras
- email - Email karyawan
- phone_number - Telepon karyawan tanpa tanda "+"
- address - Alamat lokasi
- personnel_number - Nomor personalia karyawan/pengemudi
- citizen_id_number - Nomor identitas kependudukan
- latitude - Lokasi yang terkait dengan karyawan ini
- longitude - Lokasi yang terkait dengan karyawan ini
- radius - Lokasi yang terkait dengan karyawan ini dalam meter
- fuel_consumption - Atribut fuel_consumption dari tabel employees
- fuel_cost - Atribut fuel_cost dari tabel employees
- is_deleted - Atribut is_deleted dari tabel employees
Hubungan
Tautan ke users, departments, objects (pelacak yang ditugaskan), dilacak di driver_history dan checkins
Catatan khusus
Kunci perangkat keras memungkinkan identifikasi pengemudi melalui iButton atau RFID; mendukung geofencing dengan latitude, longitude, radius fields
departments
Deskripsi: Unit organisasi dengan data lokasi geografis (latitude, longitude, radius) yang memungkinkan analitik berbasis geofence untuk pelaporan tingkat departemen dan asosiasi lokasi karyawan
Bidang kunci
- department_id - Pengidentifikasi entitas departemen
- user_id - Pengidentifikasi entitas pengguna
- department_label - Atribut department_label dari tabel departments
- latitude - Lokasi yang terkait dengan departemen ini
- longitude - Lokasi yang terkait dengan departemen ini
- radius - Ukuran geolokasi dalam meter
- address - Atribut address dari tabel departments
Hubungan
Menghubungkan karyawan ke struktur organisasi melalui department_id
Catatan khusus
Field lokasi mendukung analitik berbasis geofence untuk pelaporan tingkat departemen
Pelacakan dan pemantauan
devices
Deskripsi: Daftar perangkat pelacakan fisik dengan identifier perangkat keras (IMEI), informasi kartu SIM, status konektivitas jaringan (kekuatan sinyal, roaming, operator), dan daftar status untuk manajemen siklus hidup perangkat
Bidang kunci
- device_id - ID perangkat
- owner_id - ID pemilik perangkat di akun yang menambahkan beacon
- device_imei - IMEI perangkat
- phone - Nomor kartu SIM perangkat
- status_listing_id - ID Status Perangkat
- network_label - Nama jaringan tempat kartu SIM terhubung
- signal_level - Kekuatan sinyal perangkat
- has_roaming - Flag ketersediaan roaming
- is_sim_blocked - Flag penguncian SIM
- created_at - Tanggal dan waktu entri dibuat
Hubungan
Entitas inti yang menghubungkan ke objects, models, sensor_description, counters; owner_id references users.user_id
Catatan khusus
Semua data telematik dalam raw_telematics_data skema merujuk tabel ini melalui device_id
objects
Deskripsi: Registri pusat entitas yang dipantau (kendaraan, aset, personel) yang menghubungkan perangkat fisik ke struktur organisasi melalui client_id dan group_id, mewakili "unit yang dapat dilacak" dengan satu objek aktif per perangkat
Bidang kunci
- object_id - Pengidentifikasi entitas objek
- client_id - Pengidentifikasi entitas klien
- device_id - Pengidentifikasi entitas perangkat
- object_label - Nama objek
- model - Model perangkat
- group_id - ID grup entitas
- create_datetime - Tanggal dan waktu pembuatan baris baru di server
- is_deleted - Atribut is_deleted dari tabel objects
- is_clone - Tanda klon
Hubungan
Pusat penghubung yang menghubungkan perangkat ke pengguna (client_id), detail kendaraan, riwayat pelacakan, tugas, dan aturan
Catatan khusus
Mewakili "unit yang dapat dilacak" dalam sistem; satu objek per perangkat yang sedang digunakan aktif
models
Deskripsi: Registri pusat entitas yang dipantau (kendaraan, aset, personel) yang menghubungkan perangkat fisik ke struktur organisasi melalui client_id dan group_id, mewakili "unit yang dapat dilacak" dengan satu objek aktif per perangkat
Bidang kunci
- model_id - Pengidentifikasi model entitas
- model - Atribut model dari tabel models
- vendor - Nama perusahaan yang merilis pelacak
- alternative_label - Atribut alternative_label dari tabel models
- analog_amount - Jumlah input analog pada pelacak
- digital_amount - Jumlah input diskrit pada pelacak
- outputs_amount - Jumlah output diskrit pelacak
- has_battery_level - Menentukan apakah pelacak mengirimkan pembacaan daya baterai
- has_altitude - Menentukan apakah pelacak mengirimkan ketinggian
- has_phone - Apakah ada kartu SIM?
- has_gsm_level - Dapatkah pelacak mengirimkan kekuatan sinyal GSM?
- has_gsm_name - Dapatkah pelacak mengirimkan nama jaringan GSM atau kode operator (MCC + MNC)?
- has_gsm_roaming - Dapatkah pelacak mengirimkan status roaming?
- has_detach_button - Apakah pelacak memiliki sensor detase?
- type_output_control - Profil Kontrol Output Pelacak
- type_special_control - Berisi pengaturan khusus dan modul fungsional untuk model perangkat tertentu, seperti mode mengemudi berbahaya (hbm_telfm) untuk perangkat Teltonika
- is_clone - Apakah model merupakan klon dari model lain?
Konten
Flag kapabilitas boolean menunjukkan bidang data mana yang tersedia dari tipe perangkat ini
Catatan khusus
Gunakan flag kapabilitas untuk menentukan sensor dan input yang valid saat meminta data telematik
sensor_description
Deskripsi: Konfigurasi sensor komprehensif yang menghubungkan input perangkat ke logika bisnis, termasuk pemetaan input, satuan pengukuran, faktor konversi (pengali/pembagi), tabel kalibrasi untuk sensor bahan bakar, ambang ketelitian, dan logika pengelompokan untuk pembacaan sensor teragregasi
Bidang kunci
- sensor_id - Pengidentifikasi entitas sensor
- device_id - Pengidentifikasi entitas perangkat
- sensor_label - Nama sensor untuk UI
- input_label - Nama field pesan (atribut) dari mana data sensor diambil. Jika sama dengan "input_status," itu adalah sensor diskrit
- sensor_type - Tipe sensor
- units_type - Satuan pengukuran
- multiplier - Pengali - angka yang digunakan untuk mengalikan nilai field. Hanya untuk sensor pengukuran
- divider - Pembagi - angka yang digunakan untuk membagi nilai field. Hanya untuk sensor pengukuran
- accuracy - Persentase yang ditentukan untuk menghitung kesalahan absolut volume tangki. Kesalahan ini digunakan untuk menentukan kapan pengisian ulang atau pembuangan terjadi. Ini hanya digunakan untuk sensor bahan bakar
- calibration_data - Atribut calibration_data dari tabel sensor_description
- input_id - Nomor input untuk sensor diskrit
- group_id - Sensor dengan tipe yang sama dan memiliki group_id dan source_id yang sama dianggap berada dalam grup yang sama. Data mereka dijumlahkan atau dirata-rata, tergantung pada nilai group_type. Ini diperlukan untuk sensor teragregasi. Digunakan pada sensor pengukuran
- group_type - 0 - jumlahkan nilai sensor dalam grup, 1 - rata-rata
- sensor_units - Nama satuan yang dimasukkan pengguna jika units_type=0 (kustom)
- parameters - Objek opsional dengan parameter tambahan parent_ids - array opsional parent_ids untuk sensor komposit. volume - double. Opsional. Volume untuk sensor komposit. parent_ids - opsional. array int. Array parent_ids untuk sensor komposit. volume - opsional. Double. Volume untuk sensor komposit. min - opsional. Double. Nilai mentah minimum yang dapat diterima untuk sensor. max - opsional. Double. Nilai mentah maksimum yang dapat diterima untuk sensor. max_lowering_by_time - opsional. Double. Penurunan nilai maksimum yang diizinkan per jam. max_lowering_by_mileage - opsional. Double. Penurunan nilai maksimum yang diizinkan per 100 km. ignore_drains_in_move - opsional. Boolean. Default adalah false. Jika true, pengurasan bahan bakar tidak akan terdeteksi selama pergerakan. ignore_refuels_in_move - opsional. Boolean. Default adalah false. Jika true, pengisian ulang tidak akan terdeteksi selama pergerakan. refuel_gap_minutes - opsional. Integer. Default adalah 5. Waktu dalam menit setelah mulai pergerakan, pengisian ulang akan terdeteksi selama pergerakan. custom_field_name - opsional. Boolean. Default false. Parameter menentukan apakah field input_name adalah nilai kustom yang dimasukkan pengguna. Ini hanya relevan jika model pelacak memiliki fitur has_custom_fields
Hubungan
Menghubungkan input perangkat (dari raw_telematics_data.inputs) ke logika bisnis melalui device_id dan input_label matching
Catatan khusus
calibration_data (JSONB) menyimpan tabel kalibrasi spesifik sensor untuk sensor level bahan bakar; multiplier dan divider mengonversi nilai mentah ke satuan
Manajemen aset
vehicles
Deskripsi: Daftar kendaraan komprehensif yang berisi spesifikasi (dimensi, berat, kapasitas), dokumentasi (VIN, registrasi, asuransi), parameter operasional (konsumsi bahan bakar, volume tangki), dan penugasan pelacak saat ini melalui object_id untuk manajemen armada dan pelacakan kepatuhan
Bidang kunci
- vehicle_id - Pengidentifikasi entitas kendaraan
- user_id - Pengidentifikasi entitas pengguna
- object_id - Pengidentifikasi entitas objek
- garage_id - Pengidentifikasi entitas garasi
- vehicle_label - Atribut vehicle_label dari tabel vehicles
- registration_number - Nomor registrasi/plat kendaraan
- vin - Atribut vin dari tabel vehicles
- manufacture_year - Atribut manufacture_year dari tabel vehicles
- fuel_type - Atribut fuel_type dari tabel vehicles
- fuel_cost - Atribut fuel_cost dari tabel vehicles
- fuel_tank_volume - Atribut fuel_tank_volume dari tabel vehicles
- max_speed - Atribut max_speed dari tabel vehicles
- model - Atribut model dari tabel vehicles
- color - Atribut color dari tabel vehicles
- trailer - Atribut trailer dari tabel vehicles
- additional_info - Atribut additional_info dari tabel vehicles
- vehicle_type - Atribut vehicle_type dari tabel vehicles
- vehicle_subtype - Atribut vehicle_subtype dari tabel vehicles
- vehicle_status_id - Pengidentifikasi entitas status kendaraan
- chassis_number - Atribut chassis_number dari tabel vehicles
- frame_number - Atribut frame_number dari tabel vehicles
- trailer_reg_number - Atribut trailer_reg_number dari tabel vehicles
- payload_weight - Atribut payload_weight dari tabel vehicles
- payload_height - Atribut payload_height dari tabel vehicles
- payload_length - Atribut payload_length dari tabel vehicles
- payload_width - Atribut payload_width dari tabel vehicles
- passenger_capacity - Jumlah maksimum penumpang
- gross_weight - Atribut gross_weight dari tabel vehicles
- standard_fuel_consumption - Rata-rata konsumsi bahan bakar normal dalam liter per 100 km
- fuel_grade - Atribut fuel_grade dari tabel vehicles
- wheel_arrangement - Atribut wheel_arrangement dari tabel vehicles
- tyre_size - Ukuran kendaraan: dimensi dan ukuran roda
- tyres_number - Jumlah roda
- liability_insurance_policy_number - Atribut liability_insurance_policy_number dari tabel vehicles
- liability_insurance_valid_till - Tanggal sampai asuransi tanggung jawab berlaku
- free_insurance_policy_number - Atribut free_insurance_policy_number dari tabel vehicles
- free_insurance_valid_till_date - Tanggal sampai asuransi gratis berlaku
Hubungan
Tautan ke objects (pelacak saat ini), garages (lokasi layanan), vehicle_service_tasks; dilacak di vehicle_trackers_history
Catatan khusus
Field dimensi fisik (payload_length, payload_width, payload_height, gross_weight) mendukung analitik perencanaan muatan; tanggal asuransi memungkinkan pelacakan kepatuhan
garages
Deskripsi: Lokasi fasilitas layanan dan pemeliharaan dengan koordinat geografis (latitude, longitude, radius), informasi kontak untuk mekanik dan dispatcher, memungkinkan deteksi kunjungan layanan berbasis geofence dan analisis kedekatan
Bidang kunci
- garage_id - Pengidentifikasi entitas garasi
- user_id - Pengidentifikasi entitas pengguna
- latitude - Objek lokasi
- longitude - Objek lokasi
- radius - Ukuran geolokasi dalam meter
- address - Objek lokasi
- organization_label - ID depot
- mechanic_name - Nama mekanik
- dispatcher_name - Nama dispatcher
Hubungan
Dirujuk oleh vehicles.garage_id untuk penugasan lokasi layanan
Catatan khusus
Field lokasi memungkinkan deteksi kunjungan layanan berbasis geofence dan analisis kedekatan
vehicle_service_tasks
Deskripsi: Penjadwalan pemeliharaan dan pelacakan riwayat layanan dengan beberapa jenis pemicu (berdasarkan tanggal, berdasarkan jarak tempuh, berdasarkan jam mesin), interval tugas berulang, notifikasi multi-saluran (email, SMS, push), dan perbedaan antara kejadian pemeliharaan terencana (is_repeat) dan tidak terencana
Bidang kunci
- service_task_id - Pengidentifikasi entitas tugas layanan
- vehicle_id - Pengidentifikasi entitas kendaraan
- description - Atribut description dari tabel vehicle_service_tasks
- status - Nilai status dari atribut status
- cost - Atribut cost dari tabel vehicle_service_tasks
- start_date - Tanggal dan waktu yang terkait dengan atribut start_date
- end_date - Tanggal dan waktu yang terkait dengan atribut end_date
- completion_date - Tanggal dan waktu yang terkait dengan atribut completion_date
- predicted_datetime - Tanggal dan waktu yang terkait dengan atribut predicted_datetime
- mileage_limit - Atribut mileage_limit dari tabel vehicle_service_tasks
- engine_hours_limit - Atribut engine_hours_limit dari tabel vehicle_service_tasks
- start_mileage - Atribut start_mileage dari tabel vehicle_service_tasks
- start_engine_hours - Atribut start_engine_hours dari tabel vehicle_service_tasks
- mileage_notification_interval - Atribut mileage_notification_interval dari tabel vehicle_service_tasks
- engine_hours_notification_interval - Atribut engine_hours_notification_interval dari tabel vehicle_service_tasks
- date_notification_interval - Mengonversi integer N menjadi N hari
- mileage_repeat_interval - Atribut mileage_repeat_interval dari tabel vehicle_service_tasks
- engine_hours_repeat_interval - Atribut engine_hours_repeat_interval dari tabel vehicle_service_tasks
- date_repeat_interval - Mengonversi integer N menjadi N hari
- notification_emails - Atribut notification_emails dari tabel vehicle_service_tasks
- notification_sms_phone_numbers - Atribut notification_sms_phone_numbers dari tabel vehicle_service_tasks
- is_notification_push_enabled - Atribut is_notification_push_enabled dari tabel vehicle_service_tasks
- completion_mileage - Atribut completion_mileage dari tabel vehicle_service_tasks
- completion_engine_hours - Atribut completion_engine_hours dari tabel vehicle_service_tasks
- is_repeat - Atribut is_repeat dari tabel vehicle_service_tasks
- is_unplanned - Atribut is_unplanned dari tabel vehicle_service_tasks
- comment - Atribut comment dari tabel vehicle_service_tasks
Konten
Mendukung tiga jenis pemicu: berbasis tanggal, berbasis jarak tempuh, berbasis jam mesin; pengaturan notifikasi untuk email, SMS, push
Catatan khusus
is_repeat dan field interval memungkinkan jadwal pemeliharaan berulang; is_unplanned membedakan pemeliharaan terjadwal vs. reaktif
Lokasi dan perutean
zones
Deskripsi: Area geofence yang mendefinisikan perimeter virtual menggunakan lingkaran atau poligon untuk memantau kejadian masuk dan keluar kendaraan/aset, mendukung otomatisasi berbasis aturan dan analitik lokasi dengan pewarnaan untuk pembedaan visual
Bidang kunci
- zone_id - Pengidentifikasi entitas zona
- client_id - Pengidentifikasi entitas klien
- zone_label - Atribut zone_label dari tabel zones
- zone_type - Atribut zone_type dari tabel zones
- latitude - Objek opsional, bounding box yang dapat sepenuhnya memuat hasil yang dikembalikan
- longitude - Objek opsional, bounding box yang dapat sepenuhnya memuat hasil yang dikembalikan
- circle_center_latitude - Atribut circle_center_latitude dari tabel zones
- circle_center_longitude - Atribut circle_center_longitude dari tabel zones
- radius - Ukuran geolokasi dalam meter
- address - Atribut address dari tabel zones
- color - Atribut color dari tabel zones
Konten
Tipe zona termasuk circle, polygon (didefinisikan melalui geofence_points), dan klasifikasi area khusus
Hubungan
Dirujuk oleh rules2zones, users2zones; simpul polygon disimpan di geofence_points
Catatan khusus
Fungsi PostGIS dapat digunakan untuk memeriksa point-in-polygon untuk analisis geofence yang kompleks
places
Deskripsi: Titik minat dengan koordinat geografis, definisi radius, dan dukungan field kustom yang dapat diperluas untuk menyimpan informasi kontak pelanggan dan data bisnis-spesifik, memungkinkan integrasi CRM/ERP melalui external_id dan pelaporan berbasis lokasi
Bidang kunci
- place_id - Pengidentifikasi entitas place
- user_id - Pengidentifikasi entitas pengguna
- place_label - Atribut place_label dari tabel places
- latitude - Objek lokasi
- longitude - Objek lokasi
- radius - Ukuran geolokasi dalam meter
- address - Atribut address dari tabel places
- description - Atribut description dari tabel places
- external_id - ID untuk integrasi dengan sistem eksternal (CRM)
- custom_fields - Field tambahan
- assigned_datetime - Tanggal dan waktu penugasan titik minat ke pengguna
Hubungan
Diperluas dengan nilai field kustom melalui places_text_fields, places_decimal_fields, places_bigint_fields, places_longtext_fields, places_linked_entity_fields
Catatan khusus
custom_fields JSONB menyediakan akses cepat; tabel terkait memungkinkan penyaringan dan pengurutan berdasarkan atribut kustom
geofence_points
Deskripsi: Koordinat vertex terurut (field number menentukan urutan) yang mendefinisikan batas polygon untuk bentuk geofence yang kompleks, memungkinkan perimeter geografis yang presisi di luar zona lingkaran sederhana, digunakan bersama PostGIS ST_MakePolygon untuk operasi geometris
Bidang kunci
- zone_id - ID zona yang terlampir pada form ini
- number - Nomor urut
- latitude - Lokasi
- longitude - Lokasi
Hubungan
Beberapa rekaman per zone_id mendefinisikan batas polygon; number field menentukan urutan vertex
Catatan khusus
Query dengan ORDER BY number untuk merekonstruksi jalur polygon; gunakan bersama PostGIS ST_MakePolygon untuk operasi geometris
Manajemen tugas dan alur kerja
tasks
Deskripsi: Penugasan work order dengan validasi lokasi (latitude, longitude, radius), jendela waktu (time_from, time_to), persyaratan durasi kunjungan (stay_duration_minutes, arrival_duration_minutes), struktur hirarkis melalui parent_task_id, dan pelacakan status untuk manajemen layanan lapangan dan operasi pengiriman
Bidang kunci
- task_id - Pengidentifikasi entitas task
- user_id - Pengidentifikasi entitas pengguna
- object_id - Pengidentifikasi entitas objek
- parent_task_id - Pengidentifikasi entitas task induk
- task_label - Atribut task_label dari tabel tasks
- status - Nilai status dari atribut status
- task_type - Tipe tugas, task, route atau checkpoint
- latitude - Atribut latitude dari tabel tasks
- longitude - Atribut longitude dari tabel tasks
- radius - Ukuran geolokasi dalam meter
- arrival_datetime - Ketika tracker tiba di area tugas. DIABAIKAN saat pembuatan/pembaruan
- created_at - Atribut created_at dari tabel tasks
- status_change_datetime - Tanggal dan waktu pembaruan tugas
- time_from - Tanggal dan waktu yang terkait dengan atribut time_from
- time_to - Tanggal dan waktu yang terkait dengan atribut time_to
- stay_duration - Atribut stay_duration dari tabel tasks
- stay_duration_minutes - Durasi kunjungan. Waktu yang harus dihabiskan pekerja lapangan di lokasi penugasan untuk berhasil menyelesaikan tugas. Kunjungan berkali-kali bersifat kumulatif
- arrival_duration_minutes - Abaikan kunjungan acak yang lebih pendek dari durasi yang ditentukan. Saat menghitung durasi minimum, kunjungan yang lebih pendek dari durasi yang ditentukan akan diabaikan
- max_delay_minuts - Keterlambatan yang dapat diterima. Jumlah waktu maksimum seorang karyawan dapat terlambat. Setiap tugas yang diselesaikan selama waktu ini akan ditandai sebagai "telat"
- is_stay_control_enabled - Atribut is_stay_control_enabled dari tabel tasks
- address - Atribut address dari tabel tasks
- description - Atribut Description dari tabel tasks
- custom_fields - Atribut custom_fields dari tabel tasks
- external_id - Pengidentifikasi entitas eksternal
- order_sort - Atribut order_sort dari tabel tasks
- created_by - Sumber pembuatan tugas
Konten
Mendukung tugas hirarkis melalui parent_task_id; jendela waktu didefinisikan oleh time_from/time_to; validasi geofence dengan lokasi dan radius
Hubungan
Tautan ke forms (pengumpulan data), task_history (perubahan status), objects (penugasan tracker)
Catatan khusus
stay_duration dan arrival_duration_minutes mengaktifkan pemantauan kepatuhan untuk tugas pengiriman dan layanan
forms
Deskripsi: Formulir pengumpulan data yang dapat dikonfigurasi untuk menangkap informasi terstruktur selama penyelesaian tugas atau check-in aplikasi seluler, dengan field dan nilai disimpan sebagai JSON, validasi lokasi opsional (is_submission_in_zone), dan persyaratan pengiriman wajib ketika dilampirkan pada tugas
Bidang kunci
- form_id - Pengidentifikasi entitas form
- task_id - ID tugas yang form ini lampirkan
- object_id - Pengidentifikasi entitas objek
- form_label - Label form yang ditentukan pengguna
- fields - Jika true, form hanya dapat dikirimkan di zona tugas
- values - Peta dengan ID field sebagai kunci dan objek field_value sebagai nilai. Kunci digunakan untuk menghubungkan field dan nilai yang sesuai
- submitted_at - Tanggal ketika nilai form terakhir dikirim
- submission_latitude - Lokasi tempat nilai form terakhir dikirim
- submission_longitude - Lokasi tempat nilai form terakhir dikirim
- submission_address - Lokasi tempat nilai form terakhir dikirim
- is_submission_in_zone - Jika true, form hanya dapat dikirimkan di zona tugas
- description - Tanggal ketika form ini dibuat (atau dilampirkan ke tugas)
- created_at - Tanggal ketika form ini dibuat (atau dilampirkan ke tugas)
Konten
fields mendefinisikan struktur form (JSON); values berisi data yang dikirimkan (JSON)
Hubungan
Tautan ke tasks (work order terkait), objects (pengirim), direferensikan di checkins
Catatan khusus
Flag validasi lokasi is_submission_in_zone mengaktifkan aturan pengiriman form berbasis geofence
checkins
Deskripsi: Catatan kehadiran dan aktivitas berbasis lokasi yang dikirim melalui aplikasi seluler, melacak waktu kedatangan yang direncanakan versus aktual (planned_datetime vs actual_datetime) dengan koordinat geografis dan pengukuran akurasi lokasi (radius) untuk pelaporan ketepatan waktu
Bidang kunci
- checkin_id - Pengidentifikasi entitas checkin
- employee_id - Pengidentifikasi entitas karyawan juga merupakan pengidentifikasi untuk pengemudi
- object_id - Perangkat karyawan
- form_id - Pengidentifikasi entitas form
- user_id - Pengguna karyawan
- planned_datetime - Waktu perangkat saat check-in dilakukan
- actual_datetime - Waktu server ketika permintaan/pesan diproses
- latitude - Lokasi tempat checkin dikirim
- longitude - Lokasi tempat checkin dikirim
- radius - Kesalahan posisi pada suatu titik dalam meter
- address - Alamat check-in
- comment - Atribut comment dari tabel checkins
Hubungan
Menghubungkan karyawan ke form dan lokasi; melacak deviasi dari jadwal yang direncanakan
Catatan khusus
Variansi waktu antara planned_datetime dan actual_datetime mengaktifkan pelaporan ketepatan waktu; radius menentukan toleransi lokasi yang dapat diterima
task_history
Deskripsi: Jejak audit lengkap dari peristiwa siklus hidup tugas yang menangkap semua perubahan status, penugasan, pembaruan, dan modifikasi lapangan dengan cap waktu (event_datetime), atribusi pengguna, dan tipe aktivitas (create, update, assign, status_change) yang disimpan dalam field payload untuk kepatuhan dan analisis alur kerja
Bidang kunci
- task_history_id - Pengidentifikasi entitas riwayat tugas
- task_id - Pengidentifikasi entitas task
- user_id - Pengidentifikasi entitas pengguna
- activity - Operasi yang terjadi. Dapat berupa "create", "update", "assign" atau "status_change"
- event_datetime - Tanggal dan waktu peristiwa
- payload - Bergantung pada operasi. Biasanya berisi field yang diubah selama operasi
Konten
Tipe aktivitas didefinisikan dalam description_parameters; payload menyimpan detail spesifik peristiwa (teks)
Catatan khusus
Esensial untuk analisis penyelesaian tugas, pelaporan transisi status, dan pelacakan aktivitas pengguna
Aturan dan otomasi
rules
Deskripsi: Aturan deteksi peristiwa dengan kondisi pemicu yang dapat dikonfigurasi (kecepatan berlebih, pelanggaran geofence, ambang sensor, waktu menganggur) disimpan dalam parameters (JSONB), dan pengaturan notifikasi multi-saluran (alert_email, alert_sms, alert_phone, is_push_enabled) untuk pemantauan dan peringatan otomatis berdasarkan data perangkat dan server
Bidang kunci
- rule_id - Pengidentifikasi entitas aturan
- object_id - Pengidentifikasi entitas objek
- client_id - Pengidentifikasi entitas klien
- event_type - Atribut event_type dari tabel rules
- event_label - Atribut event_label dari tabel rules
- event_group - Atribut event_group dari tabel rules
- description - Atribut Description dari tabel rules
- parameters - Parameter peristiwa. Untuk detail lebih lanjut tentang parameter yang tersedia, lihat Navixy API docs.
- alert_email - Email untuk notifikasi
- alert_sms - Nomor telepon untuk notifikasi SMS
- alert_phone - Telepon untuk panggilan suara
- is_push_enabled - Jika true, notifikasi push tersedia
- created_at - Atribut created_at dari tabel rules
- is_deleted - Atribut is_deleted dari tabel rules
- maximum - Batas yang diterapkan pada berbagai aturan. Misalnya, untuk aturan waktu menganggur dengan mesin hidup dalam menit
- event_comment1 - Atribut event_comment1 dari tabel rules
- event_comment2 - Atribut event_comment2 dari tabel rules
Konten
Parameter aturan (JSONB) mendefinisikan kondisi pemicu; mendukung email, SMS, telepon, dan notifikasi push
Hubungan
Tautan ke objek melalui rules2objects, zona melalui rules2zones
Catatan khusus
event_type mendefinisikan skenario pemantauan spesifik (kecepatan berlebih, pelanggaran geofence, ambang sensor); maximum field memungkinkan agregasi peristiwa untuk peringatan berbasis ambang
rules2objects
Deskripsi: Relasi many-to-many yang menghubungkan aturan ke objek yang dipantau dengan kustomisasi parameter per-objek melalui object_params (JSONB), memungkinkan nilai ambang yang berbeda (mis. batas kecepatan) untuk setiap kendaraan atau aset dalam aturan yang sama
Bidang kunci
- rule_id - Pengidentifikasi entitas aturan
- object_id - Pengidentifikasi entitas objek
- param_group_number - Atribut param_group_number dari tabel rules2objects
- object_params - Atribut object_params dari tabel rules2objects
Konten
object_params (JSONB) memungkinkan kustomisasi aturan per-objek (mis. batas kecepatan berbeda per kendaraan)
Catatan khusus
Relasi many-to-many memungkinkan satu aturan memantau beberapa objek dengan parameter berbeda
rules2zones
Deskripsi: Relasi many-to-many yang mengasosiasikan aturan dengan zona geofence, memungkinkan satu aturan memantau peristiwa masuk/keluar di banyak area geografis untuk skenario pemantauan spasial yang kompleks
Bidang kunci
- rule_id - Pengidentifikasi entitas aturan
- zone_id - Pengidentifikasi entitas zona
Catatan khusus
Relasi many-to-many memungkinkan pemantauan multi-zona untuk satu aturan (mis. peringatan saat memasuki salah satu dari beberapa area terbatas)
Status dan kategorisasi
statuses
Deskripsi: Definisi status kustom dalam listing status, termasuk properti tampilan (color untuk tampilan web, order_sort untuk posisi) yang digunakan untuk merepresentasikan status perangkat atau pekerjaan karyawan dengan dukungan soft delete melalui flag is_deleted
Bidang kunci
- status_id - Pengidentifikasi entitas status
- listing_id - Pengidentifikasi entitas listing
- status_label - Nilai status dari atribut status_label
- color - Warna yang digunakan untuk tampilan di situs web
- order_sort - Posisi urut dalam listing status
- is_deleted - Atribut is_deleted dari tabel statuses
Hubungan
Grup status yang diorganisir oleh listing_id (merujuk ke status_listings); digunakan dalam status_history
Catatan khusus
order_sort mendefinisikan urutan tampilan; warna memungkinkan pembedaan visual dalam pelaporan
status_listings
Deskripsi: Definisi set status yang mengontrol nilai status mana yang tersedia untuk perangkat atau karyawan, dengan flag izin (is_supervisor_controlled, is_employee_controlled) yang menentukan apakah supervisor, karyawan, atau keduanya dapat mengubah nilai status
Bidang kunci
- status_listing_id - Pengidentifikasi entitas listing status
- user_id - Pengidentifikasi entitas pengguna
- status_listing_label - Nilai status dari atribut status_listing_label
- is_supervisor_controlled - Jika true supervisor dapat mengubah status kerja, mis. menggunakan aplikasi pemantauan seluler
- is_employee_controlled - Jika true karyawan dapat mengubah status kerja mereka sendiri, mis. menggunakan aplikasi pelacakan seluler
- is_deleted - Atribut is_deleted dari tabel status_listings
Hubungan
Dirujuk oleh devices.status_listing_id dan statuses.listing_id
Catatan khusus
Flag kontrol menentukan siapa yang dapat mengubah status: hanya supervisor, layanan mandiri karyawan, atau keduanya
status_history
Deskripsi: Jejak audit semua transisi status perangkat dengan cap waktu (changed_datetime pada perangkat, server_datetime pada server), atribusi pengguna (updated_by), dan penangkapan lokasi (latitude, longitude, address) memungkinkan analisis geografis perubahan status dan pelaporan lokasi mulai/akhir hari kerja
Bidang kunci
- status_history_id - Pengidentifikasi entitas riwayat status
- device_id - Pengidentifikasi entitas perangkat
- old_status_id - Pengidentifikasi entitas status lama
- new_status_id - Pengidentifikasi entitas status baru
- updated_by - Tanggal dan waktu yang terkait dengan atribut updated_by
- changed_datetime - Tanggal dan waktu penetapan status baru pada perangkat
- server_datetime - Tanggal dan waktu penetapan status server yang baru
- latitude - Melokasikan perangkat selama perubahan status
- longitude - Melokasikan perangkat selama perubahan status
- address - Melokasikan perangkat selama perubahan status
Hubungan
Tautan ke devices, statuses (lama dan baru), description_parameters (untuk updated_by role)
Catatan khusus
Penangkapan lokasi memungkinkan analisis geografis transisi status; berguna untuk pelaporan lokasi mulai/akhir hari kerja
tags
Deskripsi: Label kategorisasi yang ditentukan pengguna dengan pengkodean warna yang memungkinkan penyaringan dan pencarian cepat di berbagai tipe entitas (places, geofences, employees, tasks, trackers, vehicles) untuk organisasi yang fleksibel
Bidang kunci
- tag_id - ID entitas tag
- user_id - Pengidentifikasi entitas pengguna
- tag_label - Atribut tag_label dari tabel tags
- color - Atribut color dari tabel tags
Hubungan
Diterapkan ke entitas melalui tag_links; cakupan didefinisikan oleh pengguna
Catatan khusus
Sistem kategorisasi fleksibel yang mendukung banyak tag per entitas
tag_links
Deskripsi: Tabel relasi polimorfik yang mengasosiasikan tag dengan jenis entitas mana pun melalui entity_type dan entity_id, dengan field ordinal untuk pengelolaan urutan tampilan, memungkinkan penandaan multi-entitas yang fleksibel
Bidang kunci
- tag_id - ID entitas tag
- entity_type - Atribut entity_type dari tabel tag_links
- entity_id - Pengidentifikasi entitas
- ordinal - Atribut ordinal dari tabel tag_links
Konten
entity_type mengidentifikasi tabel (vehicle, employee, task, dll.); ordinal mendefinisikan urutan tampilan
Catatan khusus
Relasi polimorfik memungkinkan penandaan di berbagai tipe entitas
Grup dan hirarki
groups
Deskripsi: Struktur pengelompokan organisasi untuk tracker yang memungkinkan organisasi visual di antarmuka pengguna dengan warna yang dapat dikustomisasi (group_color) dan manajemen hirarkis mirip folder, saat ini berfungsi hanya sebagai fungsi visual
Bidang kunci
- group_id - Grup tracker (terkait oleh objects.group_id). Pembagian ke dalam grup dapat dilihat di daftar beacon, misalnya
- client_id - Pengidentifikasi entitas klien
- group_label - Judul grup yang ditentukan pengguna, 1 hingga 60 karakter cetak, mis. "Employees"
- group_color - Warna grup dalam format web (tanpa #), mis. "FF6DDC". Menentukan warna penanda tracker di peta
Hubungan
Dirujuk oleh objects.group_id; kepemilikan klien melalui client_id (merujuk ke users)
Catatan khusus
Memungkinkan organisasi entitas pemantauan seperti folder untuk pelaporan dan izin
groups_objects
Deskripsi: Relasi many-to-many antara groups dan objects menggunakan primary key komposit (groups_client_id, objects_client_id), memungkinkan objek menjadi anggota beberapa grup sekaligus untuk struktur organisasi yang fleksibel
Bidang kunci
- groups_client_id - Pengidentifikasi entitas klien untuk groups
- objects_client_id - Pengidentifikasi entitas klien untuk objects
Catatan khusus
Memungkinkan objek menjadi anggota beberapa grup sekaligus; query dengan kedua client_id nilai untuk keanggotaan grup
Field kustom dan entitas
entities
Deskripsi: Registry tipe entitas yang mendefinisikan entitas bisnis mana yang mendukung field kustom dan struktur tata letak field mereka (sections, field_order) yang disimpan dalam entity_label (JSONB), memungkinkan ekstensi skema dinamis di places, tasks, dan entitas lain tanpa perubahan basis data
Bidang kunci
- entity_id - Pengidentifikasi entitas
- user_id - Pengidentifikasi entitas pengguna
- entity_label - id - int. Pengidentifikasi entitas. type - enum. Saat ini, hanya "place" yang didukung. layout - objek yang menjelaskan tata letak field untuk entitas. sections - array objek. Setiap section dapat berisi satu atau lebih field. Minimal satu section harus ada dalam layout. label - string. Nama section. field_order - array string. Field bawaan dan ID field kustom (sebagai string)
- builtin_type - Atribut builtin_type dari tabel entities
Hubungan
Dirujuk oleh custom_fields untuk menentukan field kustom mana yang berlaku untuk tipe entitas mana
Catatan khusus
builtin_type terkait ke description_parameters untuk klasifikasi entitas yang didefinisikan sistem
custom_fields
Deskripsi: Definisi field kustom yang memungkinkan ekstensi skema dinamis untuk tipe entitas, dengan tipe field yang dapat dikonfigurasi (custom_field_type), aturan validasi dan opsi dalam parameters (JSONB), dan flag keharusan (is_required) untuk penangkapan data yang fleksibel di places, tasks, dan entitas lain
Bidang kunci
- custom_field_id - Pengidentifikasi entitas field kustom
- entity_id - Pengidentifikasi entitas
- custom_field_label - Nama field
- custom_field_type - Tipe data di field
- description - Deskripsi field
- is_required - Apakah ini diwajibkan atau tidak?
- parameters - Parameter field
Konten
parameters (JSONB) menyimpan konfigurasi spesifik tipe field (aturan validasi, opsi dropdown, dll.)
Hubungan
Mendefinisikan atribut kustom yang tersedia untuk entitas; tipe field terkait ke description_parameters
Catatan khusus
Memungkinkan ekstensi skema dinamis tanpa perubahan basis data; digunakan secara luas di places dan tasks
Pelacakan historis
driver_history
Deskripsi: Jejak audit lengkap dari penugasan karyawan ke kendaraan sepanjang waktu yang melacak transisi old_employee_id ke new_employee_id dengan cap waktu (changed_datetime, server_datetime), data lokasi (latitude, longitude, address), informasi kunci perangkat keras, dan atribusi pengguna (updated_by) memungkinkan analitik spesifik pengemudi ketika pengemudi berpindah antar kendaraan
Bidang kunci
- driver_history_id - Pengidentifikasi entitas riwayat pengemudi
- object_id - Pengidentifikasi entitas objek
- old_employee_id - Pengidentifikasi entitas karyawan lama
- new_employee_id - Pengidentifikasi entitas karyawan baru
- hardware_key - Atribut hardware_key dari tabel driver_history
- changed_datetime - Tanggal dan waktu perubahan dibuat pada perangkat
- server_datetime - Tanggal dan waktu perubahan dibuat di server
- updated_by - Tanggal dan waktu yang terkait dengan atribut updated_by
- latitude - Atribut latitude dari tabel driver_history
- longitude - Atribut longitude dari tabel driver_history
- address - Atribut address dari tabel driver_history
Hubungan
Melacak penugasan pengemudi ke kendaraan dari waktu ke waktu; terkait ke employees dan objects
Catatan khusus
Esensial untuk pelaporan spesifik pengemudi ketika pengemudi berpindah kendaraan; penangkapan lokasi memungkinkan analisis lokasi perubahan penugasan
vehicle_trackers_history
Deskripsi: Jejak audit yang melacak perangkat GPS mana (object_id) dipasang di kendaraan mana (vehicle_id) dari waktu ke waktu dengan cap perubahan (changed_datetime), memungkinkan atribusi data historis dan perhitungan jarak tempuh yang akurat saat tracker dipindahkan antar kendaraan
Bidang kunci
- vehicle_tracker_history_id - Pengidentifikasi entitas riwayat tracker kendaraan
- vehicle_id - Pengidentifikasi entitas kendaraan
- object_id - Pengidentifikasi entitas objek
- changed_datetime - Tanggal dan waktu yang terkait dengan atribut changed_datetime
Hubungan
Melacak perangkat GPS mana yang dipasang di kendaraan mana dari waktu ke waktu
Catatan khusus
Kritis untuk analisis data historis ketika tracker dipindahkan antar kendaraan; memungkinkan atribusi jarak tempuh dan penggunaan yang akurat
Data referensi dan lookup
description_parameters
Deskripsi: Data referensi sistem yang menyediakan label yang dapat dibaca manusia (description) untuk nilai integer yang di-enumerasi (key) yang digunakan di seluruh basis data, diorganisir menurut field type (mis. task_status, fuel_type, counter_type, entity_classification) untuk terjemahan nilai yang konsisten dalam pelaporan dan tampilan UI
Bidang kunci
- key - Nilai yang mungkin dalam atribut
- type - Atribut komposit yang terdiri dari nama tabel diikuti garis bawah dan nama atribut dalam tabel
- description - Nilai implisit dari sebuah atribut
Konten
Menyediakan label yang dapat dibaca manusia untuk nilai berkode di seluruh basis data (status tugas, tipe bahan bakar, tipe counter, dll.)
Hubungan
Direferensikan melalui foreign key dari banyak tabel untuk kategorisasi yang distandarkan
Catatan khusus
Esensial untuk menerjemahkan kode integer ke nilai yang dapat dibaca dalam pelaporan; type grup field terkait enumerasi
counters
Deskripsi: Konfigurasi odometer dan counter jam mesin yang menghubungkan pembacaan sensor perangkat (sensor_id) ke pengukuran jarak atau waktu dengan koefisien pengali untuk konversi unit (km, miles, hours) dan counter_type dari description_parameters yang mendefinisikan tipe pengukuran
Bidang kunci
- counter_id - ID internal
- device_id - Pengidentifikasi entitas perangkat
- counter_type - Tipe counter
- sensor_id - Pengidentifikasi entitas sensor
- multiplier - Koefisien untuk mengkonversi nilai menjadi salah satu metrik (km, l, dll.)
Hubungan
Menghubungkan perangkat ke pembacaan sensor yang merepresentasikan counter jarak atau waktu
Catatan khusus
multiplier mengonversi pulsa sensor menjadi unit aktual (km, miles, hours); counter_type from description_parameters mendefinisikan tipe pengukuran
device_output_name
Deskripsi: Label kustom untuk saluran output perangkat yang memetakan pengidentifikasi output numerik (number) ke nama yang ditentukan pengguna (label) seperti "Door Lock" atau "Engine Block" untuk pelaporan yang dapat dibaca dan analisis perintah serta status output perangkat
Bidang kunci
- device_id - Pengidentifikasi entitas perangkat
- number - Atribut number dari tabel device_output_name
- label - Atribut label dari tabel device_output_name
Konten
Memetakan nomor saluran output ke nama yang ditentukan pengguna (mis. "Door Lock", "Engine Block")
Catatan khusus
Memungkinkan pelaporan yang dapat dibaca saat menganalisis perintah dan status output perangkat
raw_telematics_data struktur
raw_telematics_data strukturSkema raw_telematics_data mengandung tiga tipe tabel utama yang bekerja bersama untuk menyediakan data perangkat yang komprehensif.
Diagram interaktif skema raw_telematics_data tersedia di dbdiagram.io: https://dbdiagram.io/d/v1-schema-telematics-bd-67a0acef263d6cf9a0d8e750
Temukan detail skema data telematik mentah di bawah.
Tabel kunci menurut kategori
Setiap tabel memiliki tujuan spesifik dalam menangkap aspek berbeda dari informasi perangkat:
tracking_data_core
Tujuan: Data inti lokasi dan gerak
Bidang kunci
device_id, device_time, platform_time, latitude, longitude, speed, altitude, satellites, hdop, event_id
Pengindeksan
Dioptimalkan dengan indeks pada (device_id, device_time)
Catatan khusus
Data lokasi (latitude dan longitude) menggunakan format integer dengan presisi 10⁷ untuk kinerja TimescaleDB yang optimal Kecepatan juga disimpan sebagai integer, jadi Anda perlu membaginya dengan 100
inputs
Tujuan: Pembacaan sensor dari perangkat
Bidang kunci
input_id, device_id, device_time, sensor_name, nilai
Konten
Pembacaan analog (tingkat bahan bakar, suhu, tegangan), nilai yang dihitung (RPM mesin)
Hubungan
status
Tujuan: Indikator status perangkat dan mode operasional
Bidang Kunci
state_id, device_id, device_time, state_name, nilai
Konten
Indikator mode operasi (bekerja, menganggur, mati), status komponen (kontak, pintu)
Format Nilai
Nilai boolean (1/0) atau kode status spesifik
Data dalam skema ini diambil langsung dari perangkat, dengan latensi minimal (biasanya detik). Skema dioptimalkan untuk data deret waktu menggunakan TimescaleDB untuk penyimpanan dan pengambilan yang efisien.
Informasi tambahan
Validasi data
Basis data menegakkan integritas data melalui beberapa mekanisme:
KONSTRAIN CHECK memvalidasi bahwa nilai berada dalam rentang yang dapat diterima
Kunci asing memastikan hubungan antar tabel tetap konsisten
KONSTRAIN NOT NULL menjamin bahwa bidang wajib selalu memiliki nilai
Nilai DEFAULT memberikan nilai cadangan ketika data tidak diberikan secara eksplisit
Optimisasi kueri
Tabel diorganisir dengan strategi pengindeksan tertentu:
Semua tabel menyertakan indeks berbasis waktu pada
record_added_atKolom kunci asing memiliki indeks khusus untuk kinerja join
Kombinasi kolom yang sering digunakan memiliki indeks komposit
TimescaleDB menyediakan indeks khusus untuk kueri deret waktu
repo struktur data
repo struktur dataSkema ini saat ini sedang dalam pengembangan. Jika Anda tertarik untuk akses awal atau memiliki pertanyaan tentang fungsionalitas ini, silakan hubungi [email protected].
Skema repo skema menyediakan kerangka kerja komprehensif untuk mengelola struktur organisasi, aset, perangkat, dan hubungan mereka dalam lingkungan multi-tenant. Dibangun di atas PostgreSQL 14+ dengan ekstensi ltree, skema ini mendukung organisasi hierarkis, definisi bidang kustom untuk setiap tipe entitas, kontrol akses berbasis peran dengan pembatasan tingkat objek, dan jejak audit lengkap dengan pelacakan perubahan tingkat bidang. Semua entitas dapat diperluas tanpa modifikasi skema, dilokalkan untuk penerapan internasional, dan dihubungkan melalui hubungan polimorfik yang fleksibel.
Skema ini menangani skenario manajemen data yang kompleks termasuk hierarki aset armada di berbagai tingkat organisasi, platform SaaS multi-tenant yang memerlukan isolasi data, operasi yang terdorong kepatuhan dengan persyaratan audit terperinci, dan sistem yang membutuhkan model data dinamis yang dapat disesuaikan melalui bidang kustom daripada migrasi basis data.
Diagram interaktif darirepo skema data tersedia di dbdiagram.io: https://dbdiagram.io/d/Navixy-Repo-data-schema-68ad788c1e7a611967a0930e
Temukan repo rincian skema di bawah.
Frekuensi pembaruan
Data dalam repo skema disinkronkan secara real-time dengan sistem sumber. Pembaruan terjadi segera saat perubahan terjadi, dengan jejak audit yang menangkap semua modifikasi untuk kepatuhan dan analisis historis.
ci_base
ci_baseSkema repo skema menggunakan pola Single Table Inheritance untuk semua data referensi melalui ci_base tabel:
Skema repo skema menggunakan sebuah Single Table Inheritance pola untuk semua data referensi melalui ci_base tabel. Desain ini mengkonsolidasikan kamus sistem, klasifikasi, dan item referensi yang didefinisikan pengguna ke dalam satu struktur terpadu, memberikan konsistensi dan fleksibilitas di seluruh skema.
Arsitektur:
Skema ci_base tabel berfungsi sebagai dasar untuk semua data referensi, menggunakan sebuah discriminator bidang untuk mengidentifikasi tipe referensi spesifik. Setiap tipe referensi memiliki tabel terkait (seperti ci_device_type, ci_asset_type) yang berbagi id sebagai ci_base, menciptakan hubungan pewarisan yang aman tipe.
Bagaimana entitas bisnis terhubung ke ci_base:
Semua entitas bisnis dalam repo skema mereferensikan ci_base subtipe untuk menentukan klasifikasi dan perilaku mereka:
organization→ mereferensikanci_organization_type(yang mewarisi darici_entity_type→ci_base)user→ mereferensikanci_user_type(yang mewarisi darici_entity_type→ci_base)device→ mereferensikanci_device_typedanci_device_status(keduanya mewarisi darici_base)asset→ mereferensikanci_asset_type(yang mewarisi darici_entity_type→ci_base)inventory→ mereferensikanci_inventory_type(yang mewarisi darici_entity_type→ci_base)asset_group→ mereferensikanci_asset_group_type(yang mewarisi darici_entity_type→ci_base)
Kategori tipe referensi:
Konfigurasi sistem
ci_module, ci_country, ci_role
Tentukan modul sistem, referensi geografis, dan peran pengguna
Definisi jenis entitas
ci_entity_type, ci_device_type, ci_asset_type, ci_inventory_type, ci_organization_type, ci_user_type, ci_asset_group_type
Klasifikasikan semua entitas bisnis berdasarkan jenis
Status dan klasifikasi
ci_device_status, ci_asset_type_category
Lacak status entitas dan kelompokkan jenis ke dalam kategori
Kontrol akses
ci_permission_scope
Tentukan izin apa yang dapat diberikan (terkait dengan ci_module dan ci_entity_type)
Hubungan
ci_device_relation_type
Tentukan jenis hubungan antara perangkat (master-slave, cadangan, dll.)
Kategorisasi
ci_tag, ci_catalog_category
Aktifkan penandaan fleksibel dan organisasi katalog
Tabel kunci menurut kategori
Tabel-tabel dalam repo skema diorganisasikan ke dalam kategori fungsional. Deskripsi di bawah merangkum tabel paling penting berdasarkan tujuan bisnisnya.
organization
Tujuan: Manajemen organisasi hirarkis
Bidang kunci
id, parent_id, path, organization_type_id, title_en, is_active, deleted_at
Pengindeksan
Indeks GiST pada path untuk kueri hirarkis, indeks pada parent_id dan organization_type_id
Catatan khusus
Menggunakan ltree untuk hirarki multi-level, mewarisi dari customizable_entity untuk dukungan bidang kustom
user
Tujuan: Akun pengguna dan otentikasi
Bidang kunci
id, organization_id, user_type_id, identity_provider, identity_provider_id, full_name, is_active
Pengindeksan
Indeks unik pada (organization_id, identity_provider, identity_provider_id)
Catatan khusus
Integrasi penyedia identitas eksternal (Keycloak, Auth0, Okta), mewarisi dari customizable_entity
device
Tujuan: Perangkat pelacakan fisik
Bidang kunci
id, organization_id, device_type_id, status_id, hw_id, label
Pengindeksan
Indeks pada organization_id, device_type_id, status_id, hw_id
Catatan khusus
Pengidentifikasi perangkat keras untuk pelacakan perangkat, mewarisi dari customizable_entity untuk bidang kustom
asset
Tujuan: Aset fisik atau virtual
Bidang kunci
id, organization_id, asset_type_id, label, description
Pengindeksan
Indeks pada organization_id dan asset_type_id
Catatan khusus
Mewarisi dari customizable_entity, terkait ke perangkat melalui device_asset_link
inventory
Tujuan: Catatan inventaris dan gudang
Bidang kunci
id, organization_id, inventory_type_id, code
Pengindeksan
Indeks unik pada (organization_id, code)
Catatan khusus
Kode unik dalam organisasi, terkait ke perangkat melalui device_inventory_link
asset_group
Tujuan: Pengelompokan aset dengan pelacakan historis
Bidang kunci
id, organization_id, group_type_id, title_en, description
Hubungan
FROM repo.asset_group AS ag JOIN repo.asset_group_item AS agi ON agi.group_id = ag.id JOIN repo.asset AS a ON a.id = agi.asset_id WHERE agi.detached_at IS NULL
Catatan khusus
Keanggotaan berbasis waktu melalui asset_group_item, kueri anggota saat ini dengan WHERE detached_at IS NULL
custom_field_def
Tujuan: Definisi bidang kustom dan metadata
Bidang kunci
id, organization_id, owner_entity_type_id, code, field_type, is_multi, is_required
Konten
Tipe bidang mencakup text, number, boolean, date, datetime, entity_ref, catalog_item_ref
Catatan khusus
Memungkinkan bidang kustom fleksibel untuk jenis entitas apa pun, nilai disimpan dalam tipe-spesifik custom_field_value_* tabel
acl_role_permission
Tujuan: Manajemen izin berbasis peran
Bidang kunci
id, role_id, permission_scope_id, target_entity_id, actions
Konten
Bitmask aksi (READ=1, UPDATE=2, DELETE=4, CREATE=8), izin spesifik target atau luas untuk jenis entitas
Hubungan
FROM repo.user_role AS ur JOIN repo.acl_role_permission AS rp ON rp.role_id = ur.role_id WHERE ur.user_id = $user_id
Catatan khusus
Bekerja dengan user_role dan acl_user_scope untuk menentukan izin akhir pengguna
audit_event
Tujuan: Log audit terpadu untuk semua perubahan sistem
Bidang kunci
id, event_category, user_id, aggregate_type, aggregate_id, event_type, event_data, occurred_at
Pengindeksan
Indeks pada (user_id, occurred_at), (aggregate_type, aggregate_id, occurred_at), (event_category, occurred_at)
Catatan khusus
Dipartisi berdasarkan occurred_at (bulanan), dua kategori: auth (otentikasi) dan domain (peristiwa bisnis), menyimpan delta perubahan tingkat bidang dalam event_data JSONB
Hubungan data
Skema repo skema menerapkan pola hubungan yang canggih untuk pemodelan data yang fleksibel:
Struktur hirarkis
Organisasi menggunakan path ltree untuk kueri pohon yang efisien
Item referensi (
ci_base) mendukung hirarki opsionalPemeliharaan path otomatis melalui trigger basis data
Pola pewarisan
Pewarisan tabel:
customizable_entity→ entitas bisnis (organization,user,device,asset,inventory,asset_group)Pewarisan ID:
ci_base→ tabel tipe referensiDiskriminasi tipe melalui
entity_type_iddandiscriminatorfields
Hubungan polimorfik
Beberapa tabel menggunakan referensi polimorfik tanpa constraint kunci asing untuk fleksibilitas maksimum:
acl_role_permission.target_entity_id→ apa puncustomizable_entityacl_user_scope.target_entity_id→ apa puncustomizable_entityentity_tag.entity_id→ apa puncustomizable_entity
Hubungan ini divalidasi pada tingkat aplikasi.
Informasi tambahan
Validasi data
Skema repo skema menegakkan integritas data melalui beberapa mekanisme:
Keterbatasan basis data
Keterbatasan UNIQUE dengan dukungan soft delete (indeks parsial WHERE
deleted_atIS NULL)Keterbatasan CHECK (mis.,
device_relationmemastikanmaster_id≠slave_id)Keterbatasan NOT NULL pada bidang yang wajib
Nilai DEFAULT untuk stempel waktu dan flag boolean
Validasi pada tingkat aplikasi
Validasi jenis entitas untuk referensi polimorfik
Validasi katalog untuk referensi bidang kustom
Validasi tipe bidang kustom
Manajemen array bidang multi-nilai
Optimisasi kueri
Tabel diorganisir dengan strategi pengindeksan tertentu:
Indeks standar:
Semua kunci asing memiliki indeks khusus
Indeks berbasis waktu pada
created_at,updated_at,deleted_atIndeks komposit untuk kolom yang sering dijoin
Indeks khusus:
Indeks GiST pada path ltree untuk kueri hirarkis
Indeks unik parsial yang mendukung soft delete
Indeks nilai bidang kustom untuk pemfilteran dan pengurutan
Indeks event audit pada waktu + entitas untuk pencarian yang efisien
Pertimbangan performa:
Disarankan penggunaan pooling koneksi (PgBouncer)
Pemeliharaan VACUUM rutin untuk tabel besar
Kemungkinan partisi masa depan untuk
devicetabel berdasarkanorganization_idView materialized untuk perhitungan kontrol akses yang kompleks
Last updated
Was this helpful?