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

Skema 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.

circle-info

Diagram interaktif skema raw_business_data tersedia di dbdiagram.io: https://dbdiagram.io/d/V3-bronze-layer-68ecfd1c2e68d21b4131089aarrow-up-right

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

Sistem mencakup data referensi untuk menstandarkan nilai di seluruh basis data:

Tipe referensi
Deskripsi
Contoh nilai

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

chevron-rightusershashtag

Deskripsi: Akun pengguna yang berisi informasi profil, afiliasi perusahaan, pengaturan lokalisasi (zona waktu, lokal), dan hubungan hierarkis melalui master_id untuk struktur akun bertingkat

Atribut
Rincian

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

chevron-rightemployeeshashtag

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

Atribut
Rincian

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

chevron-rightdepartmentshashtag

Deskripsi: Unit organisasi dengan data lokasi geografis (latitude, longitude, radius) yang memungkinkan analitik berbasis geofence untuk pelaporan tingkat departemen dan asosiasi lokasi karyawan

Atribut
Rincian

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

chevron-rightdeviceshashtag

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

Atribut
Rincian

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

chevron-rightobjectshashtag

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

Atribut
Rincian

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

chevron-rightmodelshashtag

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

Atribut
Rincian

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

chevron-rightsensor_descriptionhashtag

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

Atribut
Rincian

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

chevron-rightvehicleshashtag

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

Atribut
Rincian

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

chevron-rightgarageshashtag

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

Atribut
Rincian

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

chevron-rightvehicle_service_taskshashtag

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

Atribut
Rincian

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

chevron-rightzoneshashtag

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

Atribut
Rincian

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

chevron-rightplaceshashtag

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

Atribut
Rincian

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

chevron-rightgeofence_pointshashtag

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

Atribut
Rincian

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

chevron-righttaskshashtag

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

Atribut
Rincian

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

chevron-rightformshashtag

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

Atribut
Rincian

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

chevron-rightcheckinshashtag

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

Atribut
Rincian

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

chevron-righttask_historyhashtag

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

Atribut
Rincian

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

chevron-rightruleshashtag

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

Atribut
Rincian

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 docsarrow-up-right. - 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

chevron-rightrules2objectshashtag

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

Atribut
Rincian

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

chevron-rightrules2zoneshashtag

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

Atribut
Rincian

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

chevron-rightstatuseshashtag

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

Atribut
Rincian

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

chevron-rightstatus_listingshashtag

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

Atribut
Rincian

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

chevron-rightstatus_historyhashtag

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

Atribut
Rincian

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

chevron-righttagshashtag

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

Atribut
Rincian

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

Grup dan hirarki

chevron-rightgroupshashtag

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

Atribut
Rincian

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

chevron-rightgroups_objectshashtag

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

Atribut
Rincian

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

chevron-rightentitieshashtag

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

Atribut
Rincian

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

chevron-rightcustom_fieldshashtag

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

Atribut
Rincian

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

chevron-rightdriver_historyhashtag

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

Atribut
Rincian

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

chevron-rightvehicle_trackers_historyhashtag

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

Atribut
Rincian

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

chevron-rightdescription_parametershashtag

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

Atribut
Rincian

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

chevron-rightcountershashtag

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

Atribut
Rincian

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

chevron-rightdevice_output_namehashtag

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

Atribut
Rincian

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

Skema raw_telematics_data mengandung tiga tipe tabel utama yang bekerja bersama untuk menyediakan data perangkat yang komprehensif.

Bronze layer raw telematics data ERD
ERD data telematik mentah lapisan Bronze
circle-info

Diagram interaktif skema raw_telematics_data tersedia di dbdiagram.io: https://dbdiagram.io/d/v1-schema-telematics-bd-67a0acef263d6cf9a0d8e750arrow-up-right

Temukan detail skema data telematik mentah di bawah.

Tabel kunci menurut kategori

Setiap tabel memiliki tujuan spesifik dalam menangkap aspek berbeda dari informasi perangkat:

chevron-righttracking_data_corehashtag

Tujuan: Data inti lokasi dan gerak

Atribut
Rincian

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

chevron-rightinputshashtag

Tujuan: Pembacaan sensor dari perangkat

Atribut
Rincian

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

chevron-rightstatushashtag

Tujuan: Indikator status perangkat dan mode operasional

Atribut
Rincian

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_at

  • Kolom 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

circle-exclamation

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.

circle-info

Diagram interaktif darirepo skema data tersedia di dbdiagram.io: https://dbdiagram.io/d/Navixy-Repo-data-schema-68ad788c1e7a611967a0930earrow-up-right

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

Skema 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 → mereferensikan ci_organization_type (yang mewarisi dari ci_entity_typeci_base)

  • user → mereferensikan ci_user_type (yang mewarisi dari ci_entity_typeci_base)

  • device → mereferensikan ci_device_type dan ci_device_status (keduanya mewarisi dari ci_base)

  • asset → mereferensikan ci_asset_type (yang mewarisi dari ci_entity_typeci_base)

  • inventory → mereferensikan ci_inventory_type (yang mewarisi dari ci_entity_typeci_base)

  • asset_group → mereferensikan ci_asset_group_type (yang mewarisi dari ci_entity_typeci_base)

Kategori tipe referensi:

Kategori
Tabel
Tujuan

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

chevron-rightContoh pola kuerihashtag

Tabel kunci menurut kategori

Tabel-tabel dalam repo skema diorganisasikan ke dalam kategori fungsional. Deskripsi di bawah merangkum tabel paling penting berdasarkan tujuan bisnisnya.

chevron-rightorganizationhashtag

Tujuan: Manajemen organisasi hirarkis

Atribut
Rincian

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

chevron-rightuserhashtag

Tujuan: Akun pengguna dan otentikasi

Atribut
Rincian

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

chevron-rightdevicehashtag

Tujuan: Perangkat pelacakan fisik

Atribut
Rincian

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

chevron-rightassethashtag

Tujuan: Aset fisik atau virtual

Atribut
Rincian

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

chevron-rightinventoryhashtag

Tujuan: Catatan inventaris dan gudang

Atribut
Rincian

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

chevron-rightasset_grouphashtag

Tujuan: Pengelompokan aset dengan pelacakan historis

Atribut
Rincian

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

chevron-rightcustom_field_defhashtag

Tujuan: Definisi bidang kustom dan metadata

Atribut
Rincian

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

chevron-rightacl_role_permissionhashtag

Tujuan: Manajemen izin berbasis peran

Atribut
Rincian

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

chevron-rightaudit_eventhashtag

Tujuan: Log audit terpadu untuk semua perubahan sistem

Atribut
Rincian

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 opsional

  • Pemeliharaan 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 referensi

  • Diskriminasi tipe melalui entity_type_id dan discriminator fields

Hubungan polimorfik

Beberapa tabel menggunakan referensi polimorfik tanpa constraint kunci asing untuk fleksibilitas maksimum:

  • acl_role_permission.target_entity_id → apa pun customizable_entity

  • acl_user_scope.target_entity_id → apa pun customizable_entity

  • entity_tag.entity_id → apa pun customizable_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_at IS NULL)

  • Keterbatasan CHECK (mis., device_relation memastikan master_idslave_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_at

  • Indeks 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 device tabel berdasarkan organization_id

  • View materialized untuk perhitungan kontrol akses yang kompleks

Last updated

Was this helpful?