Lapisan data mentah
Lihat dataset sumber untuk entitas bisnis, telemetri perangkat, dan aset/inventaris, serta tabel utama dan waktu pembaruannya.
Layer Data Mentah berisi 3 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 dipantau, seperti lokasi, input, output, dan peristiwa.repo- berisi tabel untuk manajemen aset dan inventaris, termasuk tipe aset yang dapat dikonfigurasi, bidang kustom, hubungan aset, dan data geospasial untuk pelacakan sumber daya organisasi.
Setiap skema dioptimalkan untuk domain data dan pola akses spesifiknya, memberikan cakupan komprehensif untuk kebutuhan operasional, telematik, dan manajemen aset.
raw_business_data struktur
raw_business_data strukturSkema ini berisi 40+ tabel yang dipilih dengan cermat untuk mencakup berbagai aspek bisnis dan kasus penggunaan. Tabel-tabel ini merepresentasikan entitas bisnis inti 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 detail skema data bisnis mentah di bawah ini.
Frekuensi pembaruan
Data dalam skema ini disinkronkan dengan DB inti. Pembaruan terjadi secara inkremental ketika perubahan terjadi di database MySQL sumber, biasanya kurang dari 5 menit sejak 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 dalam raw_business_data skema diorganisasikan ke dalam kategori fungsional untuk mempermudah navigasi. Tabel di bawah merangkum tabel kunci berdasarkan tujuan bisnis mereka:
Entitas bisnis inti
users
Deskripsi: Akun pengguna yang berisi informasi profil, afiliasi perusahaan, pengaturan lokalisasi (zona waktu, locale), 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 - Nama tengah/patronimik 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, terhubung 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 lisensi mengemudi
- driver_license_valid_till - Tanggal hingga lisensi mengemudi berlaku
- hardware_key - Kunci perangkat keras
- email - Email karyawan
- phone_number - Nomor telepon karyawan tanpa tanda "+"
- address - Alamat lokasi
- personnel_number - Nomor personel karyawan/pengemudi
- citizen_id_number - Nomor identitas nasional
- 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
Kolom lokasi mendukung analitik berbasis geofence untuk pelaporan tingkat departemen
Pelacakan dan pemantauan
devices
Deskripsi: Daftar perangkat pelacakan fisik dengan pengenal perangkat keras (IMEI), informasi kartu SIM, status konektivitas jaringan (kekuatan sinyal, roaming, operator), dan penugasan 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 menautkan ke objects, models, sensor_description, counters; owner_id references users.user_id
Catatan khusus
Semua data telematik di raw_telematics_data skema merujuk tabel ini melalui device_id
objects
Deskripsi: Daftar pusat entitas yang dipantau (kendaraan, aset, personel) yang menautkan 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
Hub pusat 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: Daftar pusat entitas yang dipantau (kendaraan, aset, personel) yang menautkan 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 pelepasan?
- type_output_control - Profil Kontrol Output Pelacak
- type_special_control - Berisi pengaturan khusus dan modul fungsional untuk model perangkat tertentu, seperti mode berkendara berbahaya (hbm_telfm) untuk Teltonika
- is_clone - Apakah model merupakan klon dari model lain?
Konten
Flag kemampuan boolean menunjukkan bidang data mana yang tersedia dari tipe perangkat ini
Catatan khusus
Gunakan flag kemampuan untuk menentukan sensor dan input yang valid saat mengambil data telematik
sensor_description
Deskripsi: Konfigurasi sensor komprehensif yang menautkan input perangkat ke logika bisnis, termasuk pemetaan input, satuan pengukuran, faktor konversi (pengali/pembagi), tabel kalibrasi untuk sensor bahan bakar, ambang akurasi, dan logika pengelompokan untuk pembacaan sensor teragregasi
Bidang kunci
- sensor_id - Pengidentifikasi entitas sensor
- device_id - Pengidentifikasi entitas perangkat
- sensor_label - Nama sensor untuk antarmuka pengguna
- input_label - Nama bidang 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 bidang. Hanya untuk sensor pengukuran
- divider - Pembagi - angka yang digunakan untuk membagi nilai bidang. Hanya untuk sensor pengukuran
- accuracy - Persentase yang ditentukan untuk menghitung kesalahan absolut volume tangki. Kesalahan ini digunakan untuk menentukan kapan terjadi pengisian ulang atau pengosongan. 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 sama yang memiliki group_id dan source_id yang sama dianggap termasuk 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 sebuah 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 dari 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 maksimal yang diizinkan per jam. max_lowering_by_mileage - opsional. Double. Penurunan nilai maksimal yang diizinkan per 100 km. ignore_drains_in_move - opsional. Boolean. Default adalah false. Jika true, pengosongan 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 oleh pengguna. Ini hanya masuk akal jika model pelacak memiliki fitur has_custom_fields
Hubungan
Menautkan 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 khusus 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
Kolom 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 perawatan 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 depo
- mechanic_name - Nama mekanik
- dispatcher_name - Nama dispatcher
Hubungan
Dirujuk oleh vehicles.garage_id untuk penugasan lokasi layanan
Catatan khusus
Kolom lokasi memungkinkan deteksi kunjungan layanan berbasis geofence dan analisis kedekatan
vehicle_service_tasks
Deskripsi: Penjadwalan perawatan dan pelacakan riwayat layanan dengan beberapa tipe pemicu (berbasis tanggal, berbasis jarak tempuh, berbasis jam mesin), interval tugas berulang, pemberitahuan multi-saluran (email, SMS, push), dan pembedaan antara perawatan terencana (is_repeat) dan perawatan tak 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 tipe pemicu: berbasis tanggal, berbasis jarak tempuh, berbasis jam mesin; pengaturan notifikasi untuk email, SMS, push
Catatan khusus
is_repeat dan kolom interval memungkinkan jadwal perawatan berulang; is_unplanned membedakan antara perawatan terjadwal vs. reaktif
Lokasi dan perutean
zones
Deskripsi: Area geofence yang mendefinisikan perimeter virtual menggunakan lingkaran atau poligon untuk memantau peristiwa 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
Jenis zona meliputi circle, polygon (didefinisikan melalui geofence_points), dan klasifikasi area khusus
Hubungan
Dirujuk oleh rules2zones, users2zones; verteks 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 bidang kustom yang dapat diperluas untuk menyimpan informasi kontak pelanggan dan data spesifik bisnis, 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 - Bidang tambahan
- assigned_datetime - Tanggal dan waktu penugasan titik minat ke pengguna
Hubungan
Diperluas dengan nilai bidang 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 verteks yang terurut (field number menentukan urutan) yang mendefinisikan batas polygon untuk bentuk geofence kompleks, memungkinkan perimeter geografis yang presisi di luar zona lingkaran sederhana, digunakan dengan PostGIS ST_MakePolygon untuk operasi geometris
Bidang kunci
- zone_id - ID dari zona yang terkait dengan formulir ini
- number - Nomor seri
- latitude - Lokasi
- longitude - Lokasi
Hubungan
Banyak catatan per zone_id mendefinisikan batas polygon; number field menentukan urutan verteks
Catatan khusus
Query dengan ORDER BY number untuk merekonstruksi jalur polygon; gunakan dengan 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 hierarkis melalui parent_task_id, dan pelacakan status untuk manajemen layanan lapangan dan operasi pengiriman
Bidang kunci
- task_id - Pengidentifikasi entitas tugas
- user_id - Pengidentifikasi entitas pengguna
- object_id - Pengidentifikasi entitas objek
- parent_task_id - Pengidentifikasi entitas tugas induk
- task_label - Atribut task_label dari tabel tasks
- status - Nilai status dari atribut status
- task_type - Jenis 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 pelacak tiba di area tugas. DIABAIKAN saat membuat/memperbarui
- 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 menyelesaikan tugas dengan sukses. Kunjungan berganda bersifat kumulatif
- arrival_duration_minutes - Abaikan kunjungan acak yang lebih pendek dari durasi yang ditentukan. Ketika menghitung durasi minimum, kunjungan yang lebih pendek dari durasi yang ditentukan akan diabaikan
- max_delay_minuts - Keterlambatan yang dapat diterima. Jumlah maksimum waktu seorang karyawan dapat terlambat. Setiap tugas yang diselesaikan selama periode ini akan ditandai sebagai "terlambat"
- 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 tugas yang dibuat
Konten
Mendukung tugas hierarkis via 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 (pelacak yang ditugaskan)
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 saat dilampirkan pada tugas
Bidang kunci
- form_id - Pengidentifikasi entitas formulir
- task_id - ID dari tugas yang terkait dengan formulir ini
- object_id - Pengidentifikasi entitas objek
- form_label - Label formulir yang ditentukan pengguna
- fields - Jika true, formulir 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 saat nilai formulir terakhir dikirim
- submission_latitude - Lokasi saat nilai formulir terakhir dikirim
- submission_longitude - Lokasi saat nilai formulir terakhir dikirim
- submission_address - Lokasi saat nilai formulir terakhir dikirim
- is_submission_in_zone - Jika true, formulir hanya dapat dikirimkan di zona tugas
- description - Tanggal saat formulir ini dibuat (atau dilampirkan ke tugas)
- created_at - Tanggal saat formulir ini dibuat (atau dilampirkan ke tugas)
Konten
fields mendefinisikan struktur formulir (JSON); values mengandung 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 formulir 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 formulir
- user_id - Pengguna karyawan
- planned_datetime - Waktu perangkat saat check-in dilakukan
- actual_datetime - Waktu server saat permintaan/pesan diproses
- latitude - Lokasi saat checkin dikirim
- longitude - Lokasi saat checkin dikirim
- radius - Kesalahan pemposisian pada suatu titik dalam meter
- address - Alamat check-in
- comment - Atribut comment dari tabel checkins
Hubungan
Menghubungkan karyawan ke formulir dan lokasi; melacak deviasi dari jadwal yang direncanakan
Catatan khusus
Selisih 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 jenis aktivitas (create, update, assign, status_change) yang disimpan dalam field payload untuk analisis kepatuhan dan alur kerja
Bidang kunci
- task_history_id - Pengidentifikasi entitas riwayat tugas
- task_id - Pengidentifikasi entitas tugas
- user_id - Pengidentifikasi entitas pengguna
- activity - Operasi yang terjadi. Bisa 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
Jenis aktivitas didefinisikan di description_parameters; payload menyimpan detail spesifik peristiwa (teks)
Catatan khusus
Esensial untuk analisis penyelesaian tugas, pelaporan transisi status, dan pelacakan aktivitas pengguna
Aturan dan otomatisasi
rules
Deskripsi: Aturan deteksi peristiwa dengan kondisi pemicu yang dapat dikonfigurasi (kecepatan berlebih, pelanggaran geofence, ambang sensor, waktu diam) disimpan dalam parameters (JSONB), dan pengaturan notifikasi multi-saluran (alert_email, alert_sms, alert_phone, is_push_enabled) untuk pemantauan otomatis dan pemberitahuan 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 diam dengan mesin menyala 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 notifikasi via email, SMS, telepon, dan push
Hubungan
Menghubungkan 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 pemberitahuan berbasis ambang
rules2objects
Deskripsi: Hubungan 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
Hubungan many-to-many memungkinkan satu aturan memantau banyak objek dengan parameter berbeda
rules2zones
Deskripsi: Hubungan many-to-many mengaitkan aturan dengan zona bergeofence, 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
Hubungan many-to-many memungkinkan pemantauan multi-zona untuk satu aturan (mis. pemberitahuan 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 situs web, order_sort untuk penempatan) yang digunakan untuk merepresentasikan status kerja perangkat atau 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
Kelompok status diorganisasikan oleh listing_id (mereferensikan status_listings); digunakan di 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 dari semua transisi status perangkat dengan cap waktu (changed_datetime di perangkat, server_datetime di server), atribusi pengguna (updated_by), dan tangkapan lokasi (latitude, longitude, address) yang 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 di perangkat
- server_datetime - Tanggal dan waktu penetapan status server 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; ruang lingkup didefinisikan oleh pengguna
Catatan khusus
Sistem kategorisasi fleksibel yang mendukung beberapa tag per entitas
tag_links
Deskripsi: Tabel relasi polymorphic yang mengaitkan tag dengan tipe entitas apa 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 menentukan urutan tampilan
Catatan khusus
Relasi polymorphic memungkinkan penandaan lintas berbagai tipe entitas
Grup dan hierarki
groups
Deskripsi: Struktur pengelompokan organisasi untuk tracker yang memungkinkan organisasi visual di antarmuka pengguna dengan warna yang dapat disesuaikan (group_color) dan manajemen hierarkis seperti folder, saat ini berfungsi murni sebagai fungsi visual
Bidang kunci
- group_id - Grup tracker (terkait melalui 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 yang dapat dicetak, 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 via client_id (mereferensikan users)
Catatan khusus
Memungkinkan organisasi seperti folder dari entitas pemantauan untuk pelaporan dan izin
groups_objects
Deskripsi: Hubungan many-to-many antara groups dan objects menggunakan primary key komposit (groups_client_id, objects_client_id), memungkinkan objek menjadi anggota beberapa grup secara bersamaan 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 secara bersamaan; query dengan kedua client_id nilai untuk keanggotaan grup
Bidang kustom dan entitas
entities
Deskripsi: Registri tipe entitas yang menentukan entitas bisnis mana yang mendukung bidang kustom dan struktur tata letak field mereka (sections, field_order) disimpan dalam entity_label (JSONB), memungkinkan perpanjangan 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 menggambarkan tata letak bidang untuk entitas. sections - array objek. Setiap section dapat berisi satu atau lebih field. Setidaknya satu section harus ada dalam sebuah layout. label - string. Nama section. field_order - array string. Field bawaan dan ID bidang kustom (sebagai string)
- builtin_type - Atribut builtin_type dari tabel entities
Hubungan
Dirujuk oleh custom_fields untuk mendefinisikan bidang 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 bidang kustom yang memungkinkan perpanjangan skema dinamis untuk tipe entitas, dengan tipe field yang dapat dikonfigurasi (custom_field_type), aturan validasi dan opsi dalam parameters (JSONB), serta flag kewajiban (is_required) untuk penangkapan data yang fleksibel di places, tasks, dan entitas lainnya
Bidang kunci
- custom_field_id - Pengidentifikasi entitas bidang kustom
- entity_id - Pengidentifikasi entitas
- custom_field_label - Nama field
- custom_field_type - Tipe data dalam field
- description - Deskripsi field
- is_required - Apakah ini wajib 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 perpanjangan skema dinamis tanpa perubahan basis data; digunakan secara ekstensif di places dan tasks
Pelacakan historis
driver_history
Deskripsi: Jejak audit lengkap dari penugasan karyawan ke kendaraan dari waktu ke waktu melacak transisi old_employee_id ke new_employee_id dengan cap waktu (changed_datetime, server_datetime), data lokasi (latitude, longitude, address), informasi kunci hardware, dan atribusi pengguna (updated_by) yang 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 saat pengemudi berpindah kendaraan; penangkapan lokasi memungkinkan analisis lokasi perubahan penugasan
vehicle_trackers_history
Deskripsi: Jejak audit yang melacak perangkat GPS (object_id) mana yang dipasang di kendaraan mana (vehicle_id) dari waktu ke waktu dengan cap waktu perubahan (changed_datetime), memungkinkan atribusi data historis yang akurat dan perhitungan jarak tempuh saat pelacak dipindahkan antar kendaraan
Bidang kunci
- vehicle_tracker_history_id - Pengidentifikasi entitas riwayat pelacak 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 pada kendaraan mana dari waktu ke waktu
Catatan khusus
Kritis untuk analisis data historis ketika pelacak 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 enumerasi (key) yang digunakan di seluruh basis data, diorganisasikan berdasarkan 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 pada atribut
- type - Atribut komposit yang terdiri dari nama tabel diikuti oleh underscore dan nama atribut dalam tabel
- description - Nilai tersirat dari sebuah atribut
Konten
Menyediakan label yang dapat dibaca manusia untuk nilai berkode di seluruh basis data (status tugas, jenis bahan bakar, jenis penghitung, dll.)
Hubungan
Direferensikan melalui foreign key dari banyak tabel untuk kategorisasi yang distandarisasi
Catatan khusus
Esensial untuk menerjemahkan kode integer ke nilai yang dapat dibaca dalam pelaporan; type kelompok field terkait enumerasi
counters
Deskripsi: Konfigurasi odometer dan penghitung jam mesin yang menghubungkan pembacaan sensor perangkat (sensor_id) ke pengukuran jarak atau waktu dengan koefisien pengali untuk konversi unit (km, miles, jam) dan counter_type dari description_parameters yang mendefinisikan tipe pengukuran
Bidang kunci
- counter_id - ID internal
- device_id - Pengidentifikasi entitas perangkat
- counter_type - Tipe penghitung
- sensor_id - Pengidentifikasi entitas sensor
- multiplier - Koefisien untuk mengubah nilai menjadi salah satu metrik (km, l, dll.)
Hubungan
Menghubungkan perangkat ke pembacaan sensor yang merepresentasikan penghitung jarak atau waktu
Catatan khusus
multiplier mengonversi pulsa sensor menjadi unit aktual (km, miles, jam); 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 schema contains three primary table types that work together to provide comprehensive device data.
Diagram interaktif skema raw_telematics_data tersedia di dbdiagram.io: https://dbdiagram.io/d/v1-schema-telematics-bd-67a0acef263d6cf9a0d8e750
Temukan detail skema data telematika mentah di bawah.
Tabel kunci menurut kategori
Setiap tabel melayani tujuan spesifik dalam menangkap aspek berbeda dari informasi perangkat:
tracking_data_core
Tujuan: Data inti lokasi dan gerakan
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 dalam integer, jadi Anda perlu membaginya dengan 100
inputs
Tujuan: Pembacaan sensor dari perangkat
Bidang kunci
input_id, device_id, device_time, sensor_name, value
Konten
Pembacaan analog (tingkat bahan bakar, suhu, tegangan), nilai yang dihitung (RPM mesin)
Hubungan
states
Tujuan: Indikator status perangkat dan mode operasional
Bidang Kunci
state_id, device_id, device_time, state_name, value
Konten
Indikator mode operasi (bekerja, idle, 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 ini 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 agar nilai berada dalam rentang yang dapat diterima
Kunci asing memastikan hubungan antar tabel tetap konsisten
KONSTRAIN NOT NULL menjamin bahwa bidang yang diperlukan selalu memiliki nilai
Nilai DEFAULT memberikan nilai cadangan ketika data tidak secara eksplisit disediakan
Optimisasi kueri
Tabel diatur dengan strategi pengindeksan tertentu:
Semua tabel mencakup 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 dalam pengembangan. Jika Anda tertarik akses awal atau memiliki pertanyaan tentang fungsionalitas ini, silakan hubungi iotquery@navixy.com.
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 jenis entitas apa pun, kontrol akses berbasis peran dengan pembatasan tingkat objek, dan jejak audit lengkap dengan pelacakan perubahan pada tingkat bidang. Semua entitas dapat diperluas tanpa modifikasi skema, dilokalisasi untuk penyebaran internasional, dan dihubungkan melalui hubungan polimorfik yang fleksibel.
Skema ini mengatasi skenario manajemen data yang kompleks termasuk hierarki aset armada di berbagai tingkat organisasi, platform SaaS multi-tenant yang memerlukan isolasi data, operasi yang didorong 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 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 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 tipe-aman.
Bagaimana entitas bisnis terhubung ke ci_base:
Semua entitas bisnis dalam repo skema merujuk ci_base subtipe untuk mendefinisikan klasifikasi dan perilaku mereka:
organization→ merujukci_organization_type(yang mewarisi darici_entity_type→ci_base)user→ merujukci_user_type(yang mewarisi darici_entity_type→ci_base)device→ merujukci_device_typedanci_device_status(keduanya mewarisi darici_base)asset→ merujukci_asset_type(yang mewarisi darici_entity_type→ci_base)inventory→ merujukci_inventory_type(yang mewarisi darici_entity_type→ci_base)asset_group→ merujukci_asset_group_type(yang mewarisi darici_entity_type→ci_base)
Kategori tipe referensi:
Konfigurasi sistem
ci_module, ci_country, ci_role
Menetapkan modul sistem, referensi geografis, dan peran pengguna
Definisi tipe entitas
ci_entity_type, ci_device_type, ci_asset_type, ci_inventory_type, ci_organization_type, ci_user_type, ci_asset_group_type
Mengklasifikasikan semua entitas bisnis berdasarkan tipe
Status dan klasifikasi
ci_device_status, ci_asset_type_category
Melacak status entitas dan mengelompokkan tipe ke dalam kategori
Kontrol akses
ci_permission_scope
Menentukan izin apa yang dapat diberikan (terhubung ke ci_module dan ci_entity_type)
Hubungan
ci_device_relation_type
Menetapkan tipe hubungan antar perangkat (master-slave, cadangan, dll.)
Kategorisasi
ci_tag, ci_catalog_category
Memungkinkan penandaan yang fleksibel dan organisasi katalog
Tabel kunci menurut kategori
Tabel dalam repo skema disusun 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 autentikasi
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, terhubung 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, terhubung 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 termasuk teks, angka, boolean, tanggal, datetime, entity_ref, catalog_item_ref
Catatan khusus
Memungkinkan bidang kustom yang fleksibel untuk setiap tipe entitas, 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 tipe 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 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:
Kendala basis data
Kendala UNIQUE dengan dukungan soft delete (indeks parsial WHERE
deleted_atIS NULL)Kendala CHECK (mis.,
device_relationmenjaminmaster_id≠slave_id)Kendala NOT NULL pada bidang yang diwajibkan
Nilai DEFAULT untuk timestamp dan flag boolean
Validasi tingkat aplikasi
Validasi tipe entitas untuk referensi polimorfik
Validasi katalog untuk referensi bidang kustom
Validasi tipe bidang kustom
Manajemen array bidang multi-nilai
Optimisasi kueri
Tabel diatur dengan strategi pengindeksan tertentu:
Indeks standar:
Semua foreign key 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 penyaringan dan pengurutan
Indeks event audit pada waktu + entitas untuk pencarian yang efisien
Pertimbangan performa:
Disarankan pooling koneksi (PgBouncer)
Perawatan VACUUM rutin untuk tabel besar
Kemungkinan partisi di masa depan untuk
devicetabel berdasarkanorganization_idView materialized untuk perhitungan kontrol akses yang kompleks
Last updated
Was this helpful?