Bronze слой

Слой Bronze содержит две различные схемы данных, каждая из которых обслуживает разные аспекты телематики и платформы бизнес-аналитики:

  • raw_business_data - содержащую таблицы, атрибуты и значения, связанные с бизнес-информацией, такими как транспортные средства, сотрудники, геозоны, добавленные пользователями, и т.д.

  • raw_telematics_data - содержащую таблицы, атрибуты и значения, связанные с телематическими данными, передаваемыми от устройств под наблюдением, такими как местоположения, входы, выходы и события.

Каждая схема оптимизирована для своей области данных и шаблонов доступа, обеспечивая всестороннее покрытие оперативных, телематических и задач управления активами.

raw_business_data structure

Эта схема содержит более 40 тщательно подобранных таблиц для охвата различных бизнес-аспектов и сценариев использования. Эти таблицы представляют ваши основные бизнес-объекты, организационную структуру и операционные данные.

circle-info

Интерактивная диаграмма схемы raw_business_data доступна на dbdiagram.io: https://dbdiagram.io/d/V3-bronze-layer-68ecfd1c2e68d21b4131089aarrow-up-right

Ниже приведены детали схемы raw business data.

Частота обновления

Данные в этой схеме синхронизируются с основной БД. Обновления происходят инкрементально по мере внесения изменений в исходную базу MySQL, обычно менее чем через 5 минут после изменения в источнике.

description_parameters

Система включает справочные данные для стандартизации значений по всей базе данных:

Тип справочника
Описание
Примеры значений

Определения типов

Стандартные типы сущностей

vehicle_type: car, truck, bus

Коды статусов

Значения статусов задач и системы

tasks_status: unassigned, assigned, done

Определения единиц

Единицы измерения для датчиков

units_type: liter, gallon, celsius

Классификации сущностей

Категории бизнес-сущностей

entities_type: place, task, customer

Ключевые таблицы по категориям

Таблицы в raw_business_data схеме организованы по функциональным категориям для удобной навигации. В таблице ниже подведены итоги ключевых таблиц по их бизнес-назначению:

Основные бизнес-сущности

chevron-rightusershashtag

Описание: Учетные записи пользователей, содержащие информацию профиля, принадлежность к компании, настройки локализации (часовой пояс, локаль) и иерархические связи через master_id для многоуровневых структур аккаунтов

Атрибут
Детали

Ключевые поля

- user_id - Уникальный идентификатор пользователя - company_label - Название компании, связанной с пользователем - first_name - Имя пользователя - last_name - Фамилия пользователя - middle_name - Отчество пользователя - locale - Языковые настройки пользователя - timezone_label - Часовой пояс в формате IANA - master_id - Основной идентификатор пользователя (если текущий является подчинённым) - registration_datetime - Дата и время регистрации в системе - birth_date - Дата рождения пользователя

Связи

Родительский пользователь через master_id, связанный с employees, departments, places, tasks через user_id

Особые примечания

Центральная сущность, связывающая организационные данные; master_id обеспечивает иерархии пользователей для многоуровневых структур аккаунтов

chevron-rightemployeeshashtag

Описание: Записи сотрудников и водителей, используемые для представления людей, работающих в организации, включая персональную информацию, данные о правах, назначение в отделы, аппаратные ключи для идентификации iButton/RFID и данные о местоположении с поддержкой геозон

Атрибут
Детали

Ключевые поля

- employee_id - Идентификатор сущности сотрудника - user_id - Идентификатор сущности пользователя - object_id - Идентификатор сущности object - department_id - Идентификатор отдела, в который назначен сотрудник - first_name - Атрибут first_name таблицы employees - last_name - Атрибут last_name таблицы employees - middle_name - Атрибут middle_name таблицы employees - driver_license_number - Номер водительского удостоверения - driver_license_categories - Категории водительских прав - driver_license_issue_date - Дата выдачи водительского удостоверения - driver_license_valid_till - Дата, до которой действительны права - hardware_key - Аппаратный ключ - email - Электронная почта сотрудника - phone_number - Телефон сотрудника без знака "+" - address - Адрес местоположения - personnel_number - Табельный номер сотрудника/водителя - citizen_id_number - Номер социального страхования - latitude - Местоположение, связанное с этим сотрудником - longitude - Местоположение, связанное с этим сотрудником - radius - Местоположение, связанное с этим сотрудником, в метрах - fuel_consumption - Атрибут fuel_consumption таблицы employees - fuel_cost - Атрибут fuel_cost таблицы employees - is_deleted - Атрибут is_deleted таблицы employees

Связи

Связи с users, departments, objects (назначенный трекер), отслеживается в driver_history и checkins

Особые примечания

Аппаратный ключ обеспечивает идентификацию водителя через iButton или RFID; поддерживает геозоны с latitude, longitude, radius поля

chevron-rightdepartmentshashtag

Описание: Организационные подразделения с географическими данными (широта, долгота, радиус), позволяющие аналитике на основе геозон для отчетности на уровне отделов и привязки сотрудников к местоположению

Атрибут
Детали

Ключевые поля

- department_id - Идентификатор сущности отдела - user_id - Идентификатор сущности пользователя - department_label - Атрибут department_label таблицы departments - latitude - Местоположение, связанное с этим отделом - longitude - Местоположение, связанное с этим отделом - radius - Размер геолокации в метрах - address - Атрибут address таблицы departments

Связи

Связывает сотрудников с организационной структурой через department_id

Особые примечания

Поля местоположения поддерживают аналитику на основе геозон для отчетности на уровне отделов

Отслеживание и мониторинг

chevron-rightdeviceshashtag

Описание: Реестр физических трекеров с аппаратными идентификаторами (IMEI), информацией о SIM-карте, статусом сетевого соединения (уровень сигнала, роуминг, оператор) и списком назначений статусов для управления жизненным циклом устройства

Атрибут
Детали

Ключевые поля

- device_id - Идентификатор устройства - owner_id - Идентификатор владельца устройства в аккаунте, в котором был добавлен маячок - device_imei - IMEI устройства - phone - Номер SIM-карты устройства - status_listing_id - Идентификатор статуса устройства - network_label - Название сети, к которой подключена SIM-карта - signal_level - Уровень сигнала устройства - has_roaming - Флаг наличия роуминга - is_sim_blocked - Флаг блокировки SIM-карты - created_at - Дата и время создания записи

Связи

Основная сущность, связывающая с objects, models, sensor_description, counters; owner_id references users.user_id

Особые примечания

Вся телематическая информация в raw_telematics_data схеме ссылается на эту таблицу через device_id

chevron-rightobjectshashtag

Описание: Центральный реестр контролируемых сущностей (транспортные средства, активы, персонал), связывающий физические устройства с организационной структурой через client_id и group_id, представляющий «отслеживаемую единицу» с одним активным объектом на устройство

Атрибут
Детали

Ключевые поля

- object_id - Идентификатор сущности object - client_id - Идентификатор сущности клиента - device_id - Идентификатор сущности устройства - object_label - Название объекта - model - Модель устройства - group_id - Идентификатор группы сущностей - create_datetime - Дата и время создания новой строки на сервере - is_deleted - Атрибут is_deleted таблицы objects - is_clone - Признак клона

Связи

Центральный узел, связывающий устройства с пользователями (client_id), данными транспортного средства, историей трекинга, задачами и правилами

Особые примечания

Представляет «отслеживаемую единицу» в системе; один объект на устройство в активном использовании

chevron-rightmodelshashtag

Описание: Центральный реестр контролируемых сущностей (транспортные средства, активы, персонал), связывающий физические устройства с организационной структурой через client_id и group_id, представляющий «отслеживаемую единицу» с одним активным объектом на устройство

Атрибут
Детали

Ключевые поля

- model_id - Идентификатор модели сущности - model - Атрибут model таблицы models - vendor - Название компании, выпустившей трекер - alternative_label - Атрибут alternative_label таблицы models - analog_amount - Количество аналоговых входов трекера - digital_amount - Количество дискретных входов трекера - outputs_amount - Количество дискретных выходов трекера - has_battery_level - Определяет, передаёт ли трекер показания заряда батареи - has_altitude - Определяет, передаёт ли трекер высоту - has_phone - Есть ли SIM-карта? - has_gsm_level - Может ли трекер передавать уровень GSM-сигнала? - has_gsm_name - Может ли трекер передавать имя GSM-сети или код оператора (MCC + MNC)? - has_gsm_roaming - Может ли трекер передавать статус роуминга? - has_detach_button - Есть ли у трекера датчик отсоединения? - type_output_control - Профиль управления выходами трекера - type_special_control - Содержит специализированные настройки и функциональные модули для отдельных моделей устройств, например режим опасного вождения (hbm_telfm) для оборудования Teltonika - is_clone - Является ли модель клоном другой модели?

Содержимое

Булевы флаги возможностей указывают, какие поля данных доступны для этого типа устройства

Особые примечания

Используйте флаги возможностей для определения допустимых датчиков и входов при запросе телематических данных

chevron-rightsensor_descriptionhashtag

Описание: Полная конфигурация датчиков, связывающая входы устройства с бизнес-логикой, включая сопоставления входов, единицы измерения, коэффициенты преобразования (множитель/делитель), калибровочные таблицы для датчиков топлива, пороги точности и логику группировки для агрегированных показаний датчиков

Атрибут
Детали

Ключевые поля

- sensor_id - Идентификатор сущности датчика - device_id - Идентификатор сущности устройства - sensor_label - Название датчика для интерфейса - input_label - Название поля сообщения (атрибута), из которого берутся данные датчика. Если равно "input_status", это дискретный датчик - sensor_type - Тип датчика - units_type - Единицы измерения - multiplier - Множитель — число, на которое умножается значение поля. Только для измеряющих датчиков - divider - Делитель — число, на которое делится значение поля. Только для измеряющих датчиков - accuracy - Указанный процент для расчёта абсолютной погрешности объёма бака. Эта погрешность используется для определения момента заправок или сливов. Применяется только к датчикам топлива - calibration_data - Атрибут calibration_data таблицы sensor_description - input_id - Номер входа для дискретного датчика - group_id - Датчики одного типа с одинаковыми group_id и source_id считаются принадлежащими одной группе. Их данные суммируются или усредняются в зависимости от значения group_type. Это требуется для агрегированных датчиков. Используется в измеряющих датчиках - group_type - 0 - суммировать значения датчиков в группе, 1 - усреднять - sensor_units - Название единицы, введённое пользователем, если units_type=0 (пользовательская) - parameters - Необязательный объект с дополнительными параметрами parent_ids - необязательный массив parent_ids для составного датчика. volume - double. Необязательно. Объём для составного датчика. parent_ids - необязательно. int array. Массив parent_ids для составного датчика. volume - необязательно. Double. Объём для составного датчика. min - необязательно. Double. Минимальное допустимое сырое значение для датчика. max - необязательно. Double. Максимальное допустимое сырое значение для датчика. max_lowering_by_time - необязательно. Double. Максимально допустимое снижение значения в час. max_lowering_by_mileage - необязательно. Double. Максимально допустимое снижение значения на 100 км. ignore_drains_in_move - необязательно. Boolean. По умолчанию false. Если true, сливы топлива не будут детектироваться во время движения. ignore_refuels_in_move - необязательно. Boolean. По умолчанию false. Если true, заправки не будут детектироваться во время движения. refuel_gap_minutes - необязательно. Integer. По умолчанию 5. Время в минутах после начала движения, в течение которого заправки будут детектироваться во время движения. custom_field_name - необязательно. Boolean. По умолчанию false. Параметр определяет, было ли поле input_name введено пользователем как пользовательское значение. Имеет смысл только если модель трекера поддерживает возможность has_custom_fields

Связи

Связывает входы устройства (из raw_telematics_data.inputs) с бизнес-логикой через device_id и input_label matching

Особые примечания

calibration_data (JSONB) хранит специфичные для датчика калибровочные таблицы для датчиков уровня топлива; multiplier и divider преобразовать сырые значения в единицы

Управление активами

chevron-rightvehicleshashtag

Описание: Полный реестр транспортных средств, содержащий спецификации (габариты, вес, вместимость), документацию (VIN, регистрация, страхование), эксплуатационные параметры (расход топлива, объём бака) и текущее назначение трекера через object_id для управления парком и отслеживания соответствия требованиям

Атрибут
Детали

Ключевые поля

- vehicle_id - Идентификатор сущности транспортного средства - user_id - Идентификатор сущности пользователя - object_id - Идентификатор сущности object - garage_id - Идентификатор гаража - vehicle_label - Атрибут vehicle_label таблицы vehicles - registration_number - Регистрационный номер / номерной знак транспортного средства - vin - Атрибут vin таблицы vehicles - manufacture_year - Атрибут manufacture_year таблицы vehicles - fuel_type - Атрибут fuel_type таблицы vehicles - fuel_cost - Атрибут fuel_cost таблицы vehicles - fuel_tank_volume - Атрибут fuel_tank_volume таблицы vehicles - max_speed - Атрибут max_speed таблицы vehicles - model - Атрибут model таблицы vehicles - color - Атрибут color таблицы vehicles - trailer - Атрибут trailer таблицы vehicles - additional_info - Атрибут additional_info таблицы vehicles - vehicle_type - Атрибут vehicle_type таблицы vehicles - vehicle_subtype - Атрибут vehicle_subtype таблицы vehicles - vehicle_status_id - Идентификатор статуса транспортного средства - chassis_number - Атрибут chassis_number таблицы vehicles - frame_number - Атрибут frame_number таблицы vehicles - trailer_reg_number - Атрибут trailer_reg_number таблицы vehicles - payload_weight - Атрибут payload_weight таблицы vehicles - payload_height - Атрибут payload_height таблицы vehicles - payload_length - Атрибут payload_length таблицы vehicles - payload_width - Атрибут payload_width таблицы vehicles - passenger_capacity - Максимальное количество пассажиров - gross_weight - Атрибут gross_weight таблицы vehicles - standard_fuel_consumption - Нормальный средний расход топлива в литрах на 100 км - fuel_grade - Атрибут fuel_grade таблицы vehicles - wheel_arrangement - Атрибут wheel_arrangement таблицы vehicles - tyre_size - Размеры транспортного средства: габариты и размер колёс - tyres_number - Количество колес - liability_insurance_policy_number - Атрибут liability_insurance_policy_number таблицы vehicles - liability_insurance_valid_till - Дата до которой действует страховка гражданской ответственности - free_insurance_policy_number - Атрибут free_insurance_policy_number таблицы vehicles - free_insurance_valid_till_date - Дата до которой действует дополнительная страховка

Связи

Связи с objects (текущий трекер), garages (место обслуживания), vehicle_service_tasks; отслеживается в vehicle_trackers_history

Особые примечания

Поля физических размеров (payload_length, payload_width, payload_height, gross_weight) поддерживают аналитику планирования загрузок; даты страхования обеспечивают отслеживание соответствия требованиям

chevron-rightgarageshashtag

Описание: Места сервисного обслуживания и техобслуживания с географическими координатами (широта, долгота, радиус), контактной информацией для механиков и диспетчеров, позволяющие детектировать посещения сервисов по геозонам и проводить анализ близости

Атрибут
Детали

Ключевые поля

- garage_id - Идентификатор гаража - user_id - Идентификатор сущности пользователя - latitude - Объект местоположения - longitude - Объект местоположения - radius - Размер геолокации в метрах - address - Объект местоположения - organization_label - Идентификатор депо - mechanic_name - Имя механика - dispatcher_name - Имя диспетчера

Связи

Используется в ссылках vehicles.garage_id для назначения места обслуживания

Особые примечания

Поля местоположения позволяют детектировать посещения сервисов по геозонам и проводить анализ близости

chevron-rightvehicle_service_taskshashtag

Описание: Отслеживание графика обслуживания и истории сервисов с несколькими типами триггеров (по дате, пробегу, моточасам), периодичностью повторяющихся задач, много канальными уведомлениями (email, SMS, push) и разграничением планового (is_repeat) и внепланового обслуживания

Атрибут
Детали

Ключевые поля

- service_task_id - Идентификатор сущности сервисной задачи - vehicle_id - Идентификатор сущности транспортного средства - description - Атрибут description таблицы vehicle_service_tasks - status - Значение статуса атрибута status - cost - Атрибут cost таблицы vehicle_service_tasks - start_date - Дата и время, связанные с атрибутом start_date - end_date - Дата и время, связанные с атрибутом end_date - completion_date - Дата и время, связанные с атрибутом completion_date - predicted_datetime - Дата и время, связанные с атрибутом predicted_datetime - mileage_limit - Атрибут mileage_limit таблицы vehicle_service_tasks - engine_hours_limit - Атрибут engine_hours_limit таблицы vehicle_service_tasks - start_mileage - Атрибут start_mileage таблицы vehicle_service_tasks - start_engine_hours - Атрибут start_engine_hours таблицы vehicle_service_tasks - mileage_notification_interval - Атрибут mileage_notification_interval таблицы vehicle_service_tasks - engine_hours_notification_interval - Атрибут engine_hours_notification_interval таблицы vehicle_service_tasks - date_notification_interval - Преобразование целого числа N в N дней - mileage_repeat_interval - Атрибут mileage_repeat_interval таблицы vehicle_service_tasks - engine_hours_repeat_interval - Атрибут engine_hours_repeat_interval таблицы vehicle_service_tasks - date_repeat_interval - Преобразование целого числа N в N дней - notification_emails - Атрибут notification_emails таблицы vehicle_service_tasks - notification_sms_phone_numbers - Атрибут notification_sms_phone_numbers таблицы vehicle_service_tasks - is_notification_push_enabled - Атрибут is_notification_push_enabled таблицы vehicle_service_tasks - completion_mileage - Атрибут completion_mileage таблицы vehicle_service_tasks - completion_engine_hours - Атрибут completion_engine_hours таблицы vehicle_service_tasks - is_repeat - Атрибут is_repeat таблицы vehicle_service_tasks - is_unplanned - Атрибут is_unplanned таблицы vehicle_service_tasks - comment - Атрибут comment таблицы vehicle_service_tasks

Содержимое

Поддерживает три типа триггеров: по дате, по пробегу, по моточасам; настройки уведомлений для email, SMS, push

Особые примечания

is_repeat и поля интервалов позволяют задавать повторяющиеся графики обслуживания; is_unplanned различает плановое и реактивное обслуживание

Местоположение и маршрутизация

chevron-rightzoneshashtag

Описание: Геозоны, определяющие виртуальные периметры с использованием окружностей или полигонов для мониторинга событий въезда и выезда транспортных средств/активов, поддерживающие автоматизацию на основе правил и аналитику местоположения с цветовой кодировкой для визуального различения

Атрибут
Детали

Ключевые поля

- zone_id - Идентификатор сущности зоны - client_id - Идентификатор сущности клиента - zone_label - Атрибут zone_label таблицы zones - zone_type - Атрибут zone_type таблицы zones - latitude - Необязательный объект, ограничивающий прямоугольник, который может полностью содержать возвращаемый результат - longitude - Необязательный объект, ограничивающий прямоугольник, который может полностью содержать возвращаемый результат - circle_center_latitude - Атрибут circle_center_latitude таблицы zones - circle_center_longitude - Атрибут circle_center_longitude таблицы zones - radius - Размер геолокации в метрах - address - Атрибут address таблицы zones - color - Атрибут color таблицы zones

Содержимое

Типы зон включают circle, polygon (определяется через geofence_points), и специальные классификации зон

Связи

Используется в ссылках rules2zones, users2zones; вершины полигона хранятся в geofence_points

Особые примечания

Функции PostGIS можно использовать для проверки попадания точки в полигон при сложном анализе геозон

chevron-rightplaceshashtag

Описание: Точки интереса с географическими координатами, определением радиуса и расширяемой поддержкой пользовательских полей для хранения контактной информации клиента и данных, специфичных для бизнеса, обеспечивая интеграцию CRM/ERP через external_id и создание отчетов на основе местоположения

Атрибут
Детали

Ключевые поля

- place_id - Идентификатор сущности place - user_id - Идентификатор сущности пользователя - place_label - Атрибут place_label таблицы places - latitude - Объект местоположения - longitude - Объект местоположения - radius - Размер геолокации в метрах - address - Атрибут address таблицы places - description - Атрибут description таблицы places - external_id - Идентификатор для интеграции с внешними системами (CRM) - custom_fields - Дополнительные поля - assigned_datetime - Дата и время назначения точки интереса пользователю

Связи

Расширяется значениями пользовательских полей через places_text_fields, places_decimal_fields, places_bigint_fields, places_longtext_fields, places_linked_entity_fields

Особые примечания

custom_fields JSONB обеспечивает быстрый доступ; связанные таблицы позволяют фильтровать и сортировать по пользовательским атрибутам

chevron-rightgeofence_pointshashtag

Описание: Упорядоченные координаты вершин (поле number определяет последовательность), задающие границы полигона для сложных форм геозон, обеспечивая точные географические периметры помимо простых круговых зон, используются вместе с PostGIS ST_MakePolygon для геометрических операций

Атрибут
Детали

Ключевые поля

- zone_id - Идентификатор зоны, к которой прикреплена эта запись формы - number - Порядковый номер - latitude - Местоположение - longitude - Местоположение

Связи

Несколько записей на zone_id определяют границы полигона; number поле определяет порядок вершин

Особые примечания

Запрос с ORDER BY number чтобы восстановить путь полигона; используется вместе с PostGIS ST_MakePolygon для геометрических операций

Управление задачами и рабочими процессами

chevron-righttaskshashtag

Описание: Назначения работ с проверкой местоположения (широта, долгота, радиус), окон времени (time_from, time_to), требованиями к времени пребывания (stay_duration_minutes, arrival_duration_minutes), иерархической структурой через parent_task_id и отслеживанием статусов для управления полевыми сервисами и доставкой

Атрибут
Детали

Ключевые поля

- task_id - Идентификатор сущности задачи - user_id - Идентификатор сущности пользователя - object_id - Идентификатор сущности object - parent_task_id - Идентификатор родительской сущности задачи - task_label - Атрибут task_label таблицы tasks - status - Значение статуса атрибута status - task_type - Тип задачи: task, route или checkpoint - latitude - Атрибут latitude таблицы tasks - longitude - Атрибут longitude таблицы tasks - radius - Размер геолокации в метрах - arrival_datetime - Когда трекер прибыл в зону задачи. ИГНОРИРУЕТСЯ при создании/обновлении - created_at - Атрибут created_at таблицы tasks - status_change_datetime - Дата и время обновления задачи - time_from - Дата и время, соответствующие атрибуту time_from - time_to - Дата и время, соответствующие атрибуту time_to - stay_duration - Атрибут stay_duration таблицы tasks - stay_duration_minutes - Продолжительность визита. Время, которое мобильный работник должен провести на месте назначения, чтобы успешно завершить задачу. Несколько визитов суммируются - arrival_duration_minutes - Игнорировать случайные визиты короче указанной продолжительности. При расчете минимальной продолжительности визиты короче заданной будут игнорироваться - max_delay_minuts - Допустимая опоздание. Максимальное время, на которое сотрудник может опоздать. Любая задача, выполненная в этот период, будет помечена как «опоздавшая» - is_stay_control_enabled - Атрибут is_stay_control_enabled таблицы tasks - address - Атрибут address таблицы tasks - description - Атрибут description таблицы tasks - custom_fields - Атрибут custom_fields таблицы tasks - external_id - Идентификатор внешней сущности - order_sort - Атрибут order_sort таблицы tasks - created_by - Источник созданной задачи

Содержимое

Поддерживает иерархические задачи через parent_task_id; окна времени определяются с помощью time_from/time_to; проверка геозоны с местоположением и радиусом

Связи

Связи с forms (сбор данных), task_history (изменения статусов), objects (назначенный трекер)

Особые примечания

stay_duration и arrival_duration_minutes включает мониторинг соответствия для задач доставки и сервисного обслуживания

chevron-rightformshashtag

Описание: Конфигурируемые формы сбора данных для фиксации структурированной информации при выполнении задачи или при чекине в мобильном приложении, с полями и значениями, хранящимися в формате JSON, опциональной проверкой местоположения (is_submission_in_zone) и обязательными требованиями по отправке при прикреплении к задачам

Атрибут
Детали

Ключевые поля

- form_id - Идентификатор сущности формы - task_id - Идентификатор задачи, к которой прикреплена эта форма - object_id - Идентификатор сущности object - form_label - Метка формы, заданная пользователем - поля - Если true, форму можно отправлять только в зоне задачи - values - Карта с идентификаторами полей в качестве ключей и объектами field_value в качестве значений. Ключ используется для связывания поля и его соответствующего значения - submitted_at - Дата, когда значения формы были в последний раз отправлены - submission_latitude - Местоположение, в котором значения формы были в последний раз отправлены - submission_longitude - Местоположение, в котором значения формы были в последний раз отправлены - submission_address - Местоположение, в котором значения формы были в последний раз отправлены - is_submission_in_zone - Если true, форму можно отправлять только в зоне задачи - description - Дата создания этой формы (или прикрепления к задаче) - created_at - Дата создания этой формы (или прикрепления к задаче)

Содержимое

поля определяет структуру формы (JSON); values содержит отправленные данные (JSON)

Связи

Связи с tasks (связанный заказ на работу), objects (отправитель), ссылается в checkins

Особые примечания

Флаг проверки местоположения is_submission_in_zone активирует правила отправки формы на основе геозон

chevron-rightcheckinshashtag

Описание: Записи посещаемости и активности на основе местоположения, отправляемые через мобильное приложение, отслеживающие планируемые и фактические времена прибытия (planned_datetime vs actual_datetime) с географическими координатами и измерениями точности местоположения (radius) для отчетности по пунктуальности

Атрибут
Детали

Ключевые поля

- checkin_id - Идентификатор сущности чекина - employee_id - Идентификатор сущности сотрудника, также является идентификатором для водителей - object_id - Устройство сотрудника - form_id - Идентификатор сущности формы - user_id - Пользователь сотрудника - planned_datetime - Время устройства, когда был выполнен чекин - actual_datetime - Время сервера, когда запрос/сообщение было обработано - latitude - Местоположение, в котором были отправлены чекины - longitude - Местоположение, в котором были отправлены чекины - radius - Погрешность определения позиции в точке в метрах - address - Адрес чекина - comment - Атрибут comment таблицы checkins

Связи

Соединяет сотрудников с формами и местами; отслеживает отклонения от планового графика

Особые примечания

Временная разница между planned_datetime и actual_datetime позволяет формировать отчеты по пунктуальности; radius определяет допустимую погрешность местоположения

chevron-righttask_historyhashtag

Описание: Полная история событий жизненного цикла задачи, фиксирующая все изменения статусов, назначения, обновления и модификации полей с временными метками (event_datetime), указанием пользователя и типами активности (create, update, assign, status_change), хранящимися в поле payload для анализа соответствия и рабочих процессов

Атрибут
Детали

Ключевые поля

- task_history_id - Идентификатор сущности истории задач - task_id - Идентификатор сущности задачи - user_id - Идентификатор сущности пользователя - activity - Операция, которая произошла. Может быть «create», «update», «assign» или «status_change» - event_datetime - Дата и время события - payload - Зависит от операции. Как правило, содержит поля, которые были изменены в ходе операции

Содержимое

Типы активности определены в description_parameters; payload содержит детали, специфичные для события (текст)

Особые примечания

Необходимо для анализа завершения задач, отчетности по переходам статусов и отслеживания активности пользователей

Правила и автоматизация

chevron-rightruleshashtag

Описание: Правила обнаружения событий с настраиваемыми условиями срабатывания (превышение скорости, нарушение геозоны, пороги датчиков, время простоя) хранятся в parameters (JSONB), и многоканковые настройки уведомлений (alert_email, alert_sms, alert_phone, is_push_enabled) для автоматического мониторинга и оповещений на основе данных устройства и сервера

Атрибут
Детали

Ключевые поля

- rule_id - Идентификатор сущности правила - object_id - Идентификатор сущности object - client_id - Идентификатор сущности клиента - event_type - Атрибут event_type таблицы rules - event_label - Атрибут event_label таблицы rules - event_group - Атрибут event_group таблицы rules - description - Атрибут description таблицы rules - parameters - Параметры события. Для получения дополнительной информации о доступных параметрах смотрите Navixy API docsarrow-up-right. - alert_email - Почта для уведомлений - alert_sms - Номера телефонов для SMS-уведомлений - alert_phone - Телефоны для голосовых звонков - is_push_enabled - Если true, push-уведомления доступны - created_at - Атрибут created_at таблицы rules - is_deleted - Атрибут is_deleted таблицы rules - maximum - Ограничения, применяемые к различным правилам. Например, для правила простоя с работающим двигателем в минутах - event_comment1 - Атрибут event_comment1 таблицы rules - event_comment2 - Атрибут event_comment2 таблицы rules

Содержимое

Параметры правила (JSONB) определяют условия срабатывания; поддерживаются уведомления по электронной почте, SMS, телефону и push

Связи

Связи с объектами через rules2objects, с зонами через rules2zones

Особые примечания

event_type описывает конкретный сценарий мониторинга (превышение скорости, нарушение геозоны, порог датчика); maximum поле позволяет агрегировать события для оповещений на основе порогов

chevron-rightrules2objectshashtag

Описание: Отношение «многие-ко-многим», связывающее правила с мониторируемыми объектами с возможностью настройки параметров для каждого объекта через object_params (JSONB), позволяя задавать разные значения порогов (например, скоростные лимиты) для каждого транспортного средства или актива в рамках одного правила

Атрибут
Детали

Ключевые поля

- rule_id - Идентификатор сущности правила - object_id - Идентификатор сущности object - param_group_number - Атрибут param_group_number таблицы rules2objects - object_params - Атрибут object_params таблицы rules2objects

Содержимое

object_params (JSONB) позволяет настраивать правило для каждого объекта (например, разные скоростные лимиты для каждого транспортного средства)

Особые примечания

Отношение «многие-ко-многим» позволяет одному правилу мониторить несколько объектов с разными параметрами

chevron-rightrules2zoneshashtag

Описание: Отношение «многие-ко-многим», связывающее правила с геозонированными зонами, позволяющее одному правилу отслеживать события входа/выхода в нескольких географических областях для сложных пространственных сценариев мониторинга

Атрибут
Детали

Ключевые поля

- rule_id - Идентификатор сущности правила - zone_id - Идентификатор сущности зоны

Особые примечания

Отношение «многие-ко-многим» позволяет мультизональный мониторинг для одного правила (например, оповещение при входе в любую из нескольких запрещенных зон)

Статус и категоризация

chevron-rightstatuseshashtag

Описание: Пользовательские определения статусов в списках статусов, включая свойства отображения (color для отображения на сайте, order_sort для позиционирования) используемые для представления состояний устройства или сотрудника с поддержкой мягкого удаления через флаг is_deleted

Атрибут
Детали

Ключевые поля

- status_id - Идентификатор сущности статуса - listing_id - Идентификатор сущности списка - status_label - Значение статуса атрибута status_label - color - Цвет, используемый для отображения на сайте - order_sort - Позиция сортировки в списке статусов - is_deleted - Атрибут is_deleted таблицы statuses

Связи

Группы статусов организованы через listing_id (ссылается на status_listings); используется в status_history

Особые примечания

order_sort определяет последовательность отображения; color позволяет визуально различать в отчетах

chevron-rightstatus_listingshashtag

Описание: Наборы статусов, контролирующие, какие значения статусов доступны для устройств или сотрудников, с флагами разрешений (is_supervisor_controlled, is_employee_controlled), определяющими, могут ли супервайзеры, сотрудники или оба изменять значения статусов

Атрибут
Детали

Ключевые поля

- status_listing_id - Идентификатор сущности списка статусов - user_id - Идентификатор сущности пользователя - status_listing_label - Значение атрибута status_listing_label - is_supervisor_controlled - Если true, супервайзеры могут менять рабочий статус, например, используя мобильное приложение мониторинга - is_employee_controlled - Если true, сотрудники могут менять свой рабочий статус, например, используя мобильное приложение отслеживания - is_deleted - Атрибут is_deleted таблицы status_listings

Связи

Используется в ссылках devices.status_listing_id и statuses.listing_id

Особые примечания

Флаги управления определяют, кто может менять статусы: только супервайзер, самостоятельное изменение сотрудником или оба

chevron-rightstatus_historyhashtag

Описание: Журнал аудита всех переходов статусов устройств с временными метками (changed_datetime на устройстве, server_datetime на сервере), указанием пользователя (updated_by) и фиксацией местоположения (latitude, longitude, address), позволяющий проводить географический анализ изменений статусов и отчетность по местам начала/окончания рабочего дня

Атрибут
Детали

Ключевые поля

- status_history_id - Идентификатор сущности истории статусов - device_id - Идентификатор сущности устройства - old_status_id - Идентификатор старого статуса - new_status_id - Идентификатор нового статуса - updated_by - Дата и время, связанные с атрибутом updated_by - changed_datetime - Дата и время присвоения нового статуса на устройстве - server_datetime - Дата и время присвоения нового статуса на сервере - latitude - Определение местоположения устройств при изменениях статусов - longitude - Определение местоположения устройств при изменениях статусов - address - Определение местоположения устройств при изменениях статусов

Связи

Связи с devices, statuses (старый и новый), description_parameters (для updated_by role)

Особые примечания

Фиксация местоположения позволяет проводить географический анализ переходов статусов; полезно для отчётности по месту начала/окончания рабочего дня

chevron-righttagshashtag

Описание: Метки категоризации, задаваемые пользователем, с цветовой кодировкой, позволяющие быстро фильтровать и искать по нескольким типам сущностей (places, geofences, employees, tasks, trackers, vehicles) для гибкой организации

Атрибут
Детали

Ключевые поля

- tag_id - Идентификатор сущности тега - user_id - Идентификатор сущности пользователя - tag_label - Атрибут tag_label таблицы tags - color - Атрибут color таблицы tags

Связи

Применяется к сущностям через tag_links; область видимости определяется пользователем

Особые примечания

Гибкая система категоризации, поддерживающая несколько тегов для одной сущности

Группы и иерархия

chevron-rightgroupshashtag

Описание: Организационная структура группировки для трекеров, обеспечивающая визуальную организацию в пользовательском интерфейсе с настраиваемыми цветами (group_color) и иерархическим управлением по типу папок, в настоящее время выполняющая чисто визуальную функцию

Атрибут
Детали

Ключевые поля

- group_id - Группа трекеров (связана через objects.group_id). Разделение на группы видно в списке маяков, например - client_id - Идентификатор сущности клиента - group_label - Название группы, заданное пользователем, 1–60 печатных символов, например «Employees" - group_color - Цвет группы в веб-формате (без #), например "FF6DDC". Определяет цвет маркеров трекеров на карте

Связи

Используется в ссылках objects.group_id; владение клиентом через client_id (ссылается на users)

Особые примечания

Обеспечивает организацию сущностей мониторинга по принципу папок для отчетности и прав доступа

chevron-rightgroups_objectshashtag

Описание: Отношение «многие-ко-многим» между группами и объектами с использованием составного первичного ключа (groups_client_id, objects_client_id), позволяющее объектам одновременно принадлежать нескольким группам для гибкой организационной структуры

Атрибут
Детали

Ключевые поля

- groups_client_id - Идентификатор сущности клиента для групп - objects_client_id - Идентификатор сущности клиента для объектов

Особые примечания

Позволяет объектам одновременно принадлежать нескольким группам; выполняйте запрос с обоими client_id значениями для членства в группе

Пользовательские поля и сущности

chevron-rightentitieshashtag

Описание: Реестр типов сущностей, определяющий, какие бизнес-сущности поддерживают пользовательские поля и структуру их расположения полей (sections, field_order), хранящуюся в entity_label (JSONB), обеспечивая динамическое расширение схемы для places, tasks и других сущностей без изменений в базе данных

Атрибут
Детали

Ключевые поля

- entity_id - Идентификатор сущности - user_id - Идентификатор сущности пользователя - entity_label - id - int. Идентификатор сущности. type - enum. В настоящее время поддерживается только «place». layout - объект описывает расположение полей для сущности. sections - массив объектов. Каждый раздел может содержать одно или несколько полей. В макете должен существовать как минимум один раздел. label - строка. Название раздела. field_order - массив строк. Встроенные поля и идентификаторы пользовательских полей (в виде строк) - builtin_type - Атрибут builtin_type таблицы entities

Связи

Используется в ссылках custom_fields чтобы определить, какие пользовательские поля применяются к каким типам сущностей

Особые примечания

builtin_type ссылки на description_parameters для системно определенных классификаций сущностей

chevron-rightcustom_fieldshashtag

Описание: Определения пользовательских полей, позволяющие динамически расширять схему для типов сущностей, с настраиваемыми типами полей (custom_field_type), правилами валидации и опциями в parameters (JSONB), и флагами обязательности (is_required) для гибкого сбора данных по places, tasks и другим сущностям

Атрибут
Детали

Ключевые поля

- custom_field_id - Идентификатор сущности пользовательского поля - entity_id - Идентификатор сущности - custom_field_label - Название поля - custom_field_type - Тип данных в поле - description - Описание поля - is_required - Является ли это обязательным? - parameters - Параметры поля

Содержимое

parameters (JSONB) хранит конфигурацию, специфичную для типа поля (правила валидации, варианты выпадающего списка и т.д.)

Связи

Определяет доступные пользовательские атрибуты для сущностей; тип поля ссылается на description_parameters

Особые примечания

Обеспечивает динамическое расширение схемы без изменений в базе данных; широко используется в places и tasks

Исторический учёт

chevron-rightdriver_historyhashtag

Описание: Полный журнал назначений сотрудников на транспортные средства с течением времени, отслеживающий переходы от old_employee_id к new_employee_id с временными метками (changed_datetime, server_datetime), данными о местоположении (latitude, longitude, address), информацией о аппаратном ключе и указанием пользователя (updated_by), позволяющий аналитику, привязанную к водителям, при смене водителей между транспортными средствами

Атрибут
Детали

Ключевые поля

- driver_history_id - Идентификатор сущности истории водителей - object_id - Идентификатор сущности object - old_employee_id - Идентификатор старой сущности сотрудника - new_employee_id - Идентификатор новой сущности сотрудника - hardware_key - Атрибут hardware_key таблицы driver_history - changed_datetime - Дата и время, когда были внесены изменения в устройство - server_datetime - Дата и время изменений, внесенных на сервере - updated_by - Дата и время, связанные с атрибутом updated_by - latitude - Атрибут latitude таблицы driver_history - longitude - Атрибут longitude таблицы driver_history - address - Атрибут address таблицы driver_history

Связи

Отслеживает назначения водителей на транспортные средства с течением времени; ссылки на employees и objects

Особые примечания

Необходимо для отчетности по конкретным водителям при смене транспортных средств; фиксация местоположения позволяет анализировать место изменения назначения

chevron-rightvehicle_trackers_historyhashtag

Описание: Журнал аудита, отслеживающий, какие GPS-устройства (object_id) были установлены в каких автомобилях (vehicle_id) с течением времени с временными метками изменений (changed_datetime), обеспечивая точную историческую атрибуцию данных и расчет пробега при перемещении трекеров между транспортными средствами

Атрибут
Детали

Ключевые поля

- vehicle_tracker_history_id - Идентификатор сущности истории установки трекеров в транспортные средства - vehicle_id - Идентификатор сущности транспортного средства - object_id - Идентификатор сущности object - changed_datetime - Дата и время, связанные с атрибутом changed_datetime

Связи

Отслеживает, какое GPS-устройство было установлено в каком транспортном средстве с течением времени

Особые примечания

Критично для анализа исторических данных при перемещении трекеров между транспортными средствами; обеспечивает точную атрибуцию пробега и использования

Справочные и справочные данные

chevron-rightdescription_parametershashtag

Описание: Системные справочные данные, предоставляющие читаемые человеком метки (description) для перечисляемых целочисленных значений (key), используемых по всей базе данных, организованные по полю type (например, task_status, fuel_type, counter_type, entity_classification) для согласованного перевода значений в отчетах и интерфейсе

Атрибут
Детали

Ключевые поля

- key - Возможное значение атрибута - type - Составной атрибут, состоящий из имени таблицы, за которым следует подчёркивание и имя атрибута в таблице - description - Подразумеваемое значение атрибута

Содержимое

Предоставляет читаемые метки для кодированных значений по всей базе данных (статус задачи, типы топлива, типы счетчиков и т.д.)

Связи

Ссылается через внешние ключи из нескольких таблиц для стандартизированной категоризации

Особые примечания

Необходимо для преобразования целочисленных кодов в читаемые значения в отчетах; type группы полей, связанные перечисления

chevron-rightcountershashtag

Описание: Конфигурации одометра и счетчика моточасов, связывающие показания датчиков устройства (sensor_id) с измерениями расстояния или времени с коэффициентами умножения для преобразования единиц (км, мили, часы) и counter_type из description_parameters, определяющим тип измерения

Атрибут
Детали

Ключевые поля

- counter_id - Внутренний идентификатор - device_id - Идентификатор сущности устройства - counter_type - Тип счетчика - sensor_id - Идентификатор сущности датчика - multiplier - Коэффициент для преобразования значений в одну из метрик (км, л и т.д.)

Связи

Связывает устройства с показаниями датчиков, представляющими счетчики расстояния или времени

Особые примечания

multiplier преобразует импульсы датчика в реальные единицы (км, мили, часы); counter_type from description_parameters определяет тип измерения

chevron-rightdevice_output_namehashtag

Описание: Пользовательские метки для каналов вывода устройства, сопоставляющие числовые идентификаторы выходов (number) с именами, заданными пользователем (label), такими как "Door Lock" или "Engine Block" для удобочитаемой отчетности и анализа команд и состояний вывода устройства

Атрибут
Детали

Ключевые поля

- device_id - Идентификатор сущности устройства - number - Атрибут number таблицы device_output_name - label - Атрибут label таблицы device_output_name

Содержимое

Сопоставляет номера каналов вывода с пользовательскими именами (например, "Door Lock", "Engine Block")

Особые примечания

Обеспечивает удобочитаемую отчетность при анализе команд и состояний вывода устройства

raw_telematics_data structure

Схема raw_telematics_data содержит три основных типа таблиц, которые работают вместе, чтобы обеспечить всесторонние данные устройства.

Bronze layer raw telematics data ERD
ERD слоя Bronze с сырыми телематическими данными
circle-info

Интерактивная диаграмма схемы raw_telematics_data доступна на dbdiagram.io: https://dbdiagram.io/d/v1-schema-telematics-bd-67a0acef263d6cf9a0d8e750arrow-up-right

Ниже приведены детали схемы raw telematics data.

Ключевые таблицы по категориям

Каждая таблица служит для конкретной цели при захвате различных аспектов информации об устройстве:

chevron-righttracking_data_corehashtag

Назначение: Основные данные о местоположении и движении

Атрибут
Детали

Ключевые поля

device_id, device_time, platform_time, latitude, longitude, speed, altitude, satellites, hdop, event_id

Индексация

Оптимизировано с индексом на (device_id, device_time)

Особые примечания

Данные о местоположении (широта и долгота) используют целочисленный формат с точностью 10⁷ для оптимальной производительности TimescaleDB Скорость также хранится в виде целого числа, поэтому её необходимо делить на 100

chevron-rightinputshashtag

Назначение: Показания датчиков от устройств

Атрибут
Детали

Ключевые поля

input_id, device_id, device_time, sensor_name, значение

Содержимое

Аналоговые показания (уровень топлива, температура, напряжение), вычисляемые значения (обороты двигателя)

Связи

chevron-rightсостоянияhashtag

Назначение: Индикаторы состояния устройства и режимы работы

Атрибут
Детали

Ключевые поля

state_id, device_id, device_time, state_name, значение

Содержимое

Индикаторы режимов работы (в работе, холостой ход, выключено), статусы компонентов (зажигание, двери)

Формат значения

Булевы значения (1/0) или специальные коды статуса

Данные в этой схеме поступают напрямую от устройств с минимальной задержкой (обычно секунды). Схема оптимизирована для временных рядов с использованием TimescaleDB для эффективного хранения и извлечения.

Дополнительная информация

Проверка данных

База данных обеспечивает целостность данных с помощью нескольких механизмов:

  • Ограничения CHECK проверяют, что значения находятся в допустимых пределах

  • Внешние ключи обеспечивают согласованность отношений между таблицами

  • Ограничения NOT NULL гарантируют, что обязательные поля всегда содержат значения

  • Значения по умолчанию предоставляют запасной вариант, когда данные явно не указаны

Оптимизация запросов

Таблицы организованы с использованием специальных стратегий индексирования:

  • Все таблицы включают индексы по времени на record_added_at

  • Колонки внешних ключей имеют выделенные индексы для повышения производительности соединений

  • Часто используемые комбинации столбцов имеют составные индексы

  • TimescaleDB предоставляет специализированные индексы для запросов по временным рядам

репозиторий структура данных

circle-exclamation

Схема репозиторий схема предоставляет всеобъемлющую структуру для управления организационными структурами, активами, устройствами и их взаимосвязями в мультиарендных средах. Построенная на PostgreSQL 14+ с расширением ltree, схема поддерживает иерархические организации, определение настраиваемых полей для любых типов сущностей, управление доступом на основе ролей с ограничениями на уровне объектов и полные журналы аудита с отслеживанием изменений на уровне полей. Все сущности могут быть расширены без изменений схемы, локализованы для международных развертываний и связаны через гибкие полиморфные отношения.

Схема решает сложные сценарии управления данными, включая иерархии активов автопарка на разных уровнях организации, многопользовательские SaaS-платформы, требующие изоляции данных, операции, требующие соответствия с подробными требованиями аудита, и системы, которым нужны динамические модели данных, адаптируемые через настраиваемые поля вместо миграций базы данных.

circle-info

Интерактивная схемарепозиторий данных доступна на dbdiagram.io: https://dbdiagram.io/d/Navixy-Repo-data-schema-68ad788c1e7a611967a0930earrow-up-right

Найдите репозиторий подробности схемы ниже.

Частота обновления

Данные в репозиторий схема синхронизируется в режиме реального времени с исходными системами. Обновления происходят немедленно по мере внесения изменений, при этом журналы аудита фиксируют все модификации для соответствия требованиям и исторического анализа.

ci_base

Схема репозиторий схема использует шаблон Single Table Inheritance для всех справочных данных через ci_base таблицу:

Схема репозиторий схема использует Single Table Inheritance шаблон для всех справочных данных через ci_base таблицу. Этот дизайн консолидирует системные словари, классификации и элементы справочников, определяемые пользователями, в одну унифицированную структуру, обеспечивая согласованность и гибкость по всей схеме.

Архитектура:

Схема ci_base таблица служит основой для всех справочных данных, используя дискриминатор поле для идентификации конкретного типа справочника. Каждый тип справочника имеет соответствующую таблицу (например, ci_device_type, ci_asset_type) которая разделяет тот же id как ci_base, создавая типобезопасное отношение наследования.

Как бизнес-сущности подключаются к ci_base:

Все бизнес-сущности в репозиторий схеме ссылаются на ci_base подтипы для определения их классификации и поведения:

  • organization → ссылается на ci_organization_type (который наследует от ci_entity_typeci_base)

  • user → ссылается на ci_user_type (который наследует от ci_entity_typeci_base)

  • device → ссылается на ci_device_type и ci_device_status (оба наследуют от ci_base)

  • asset → ссылается на ci_asset_type (который наследует от ci_entity_typeci_base)

  • inventory → ссылается на ci_inventory_type (который наследует от ci_entity_typeci_base)

  • asset_group → ссылается на ci_asset_group_type (который наследует от ci_entity_typeci_base)

Категории типов справочников:

Категория
Таблицы
Назначение

Конфигурация системы

ci_module, ci_country, ci_role

Определяет модули системы, географические ссылки и роли пользователей

Определения типов сущностей

ci_entity_type, ci_device_type, ci_asset_type, ci_inventory_type, ci_organization_type, ci_user_type, ci_asset_group_type

Классифицируйте все бизнес-сущности по типу

Статус и классификация

ci_device_status, ci_asset_type_category

Отслеживайте состояния сущностей и группируйте типы в категории

Контроль доступа

ci_permission_scope

Определяет, какие разрешения могут быть предоставлены (связано с ci_module и ci_entity_type)

Связи

ci_device_relation_type

Определяет типы отношений между устройствами (master-slave, резервирование и т. д.)

Категоризация

ci_tag, ci_catalog_category

Обеспечивает гибкое тегирование и организацию каталога

chevron-rightПримеры шаблонов запросовhashtag

Ключевые таблицы по категориям

Таблицы в репозиторий Схема организована по функциональным категориям. Описания ниже суммируют наиболее важные таблицы по их бизнес-назначению.

chevron-rightorganizationhashtag

Назначение: Управление иерархической организацией

Атрибут
Детали

Ключевые поля

id, parent_id, path, organization_type_id, title_en, is_active, deleted_at

Индексация

GiST-индекс на path для иерархических запросов, индексы на parent_id и organization_type_id

Особые примечания

Использует ltree для многоуровневых иерархий, наследуется от customizable_entity для поддержки настраиваемых полей

chevron-rightuserhashtag

Назначение: Учетные записи пользователей и аутентификация

Атрибут
Детали

Ключевые поля

id, organization_id, user_type_id, identity_provider, identity_provider_id, full_name, is_active

Индексация

Уникальный индекс на (organization_id, identity_provider, identity_provider_id)

Особые примечания

Интеграция с внешними провайдерами идентификации (Keycloak, Auth0, Okta), наследуется от customizable_entity

chevron-rightdevicehashtag

Назначение: Физические трекинговые устройства

Атрибут
Детали

Ключевые поля

id, organization_id, device_type_id, status_id, hw_id, label

Индексация

Индексы на organization_id, device_type_id, status_id, hw_id

Особые примечания

Аппаратный идентификатор для отслеживания устройства, наследуется от customizable_entity для настраиваемых полей

chevron-rightassethashtag

Назначение: Физические или виртуальные активы

Атрибут
Детали

Ключевые поля

id, organization_id, asset_type_id, label, description

Индексация

Индексы на organization_id и asset_type_id

Особые примечания

Наследуется от customizable_entity, связаны с устройствами через device_asset_link

chevron-rightinventoryhashtag

Назначение: Записи инвентаризации и складского учета

Атрибут
Детали

Ключевые поля

id, organization_id, inventory_type_id, code

Индексация

Уникальный индекс на (organization_id, code)

Особые примечания

Уникальные коды в рамках организации, связаны с устройствами через device_inventory_link

chevron-rightasset_grouphashtag

Назначение: Группировка активов с историческим отслеживанием

Атрибут
Детали

Ключевые поля

id, organization_id, group_type_id, title_en, description

Связи

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

Особые примечания

Членство на основе времени через asset_group_item, запрос текущих участников с помощью WHERE detached_at IS NULL

chevron-rightcustom_field_defhashtag

Назначение: Определения и метаданные настраиваемых полей

Атрибут
Детали

Ключевые поля

id, organization_id, owner_entity_type_id, code, field_type, is_multi, is_required

Содержимое

Типы полей включают text, number, boolean, date, datetime, entity_ref, catalog_item_ref

Особые примечания

Обеспечивает гибкие настраиваемые поля для любого типа сущности, значения хранятся в специфичных для типа custom_field_value_* таблицах

chevron-rightacl_role_permissionhashtag

Назначение: Управление разрешениями на основе ролей

Атрибут
Детали

Ключевые поля

id, role_id, permission_scope_id, target_entity_id, actions

Содержимое

Битовая маска действий (READ=1, UPDATE=2, DELETE=4, CREATE=8), разрешения, специфичные для цели или для типа сущности в целом

Связи

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

Особые примечания

Работает с user_role и acl_user_scope для определения финальных разрешений пользователя

chevron-rightaudit_eventhashtag

Назначение: Единый журнал аудита для всех изменений в системе

Атрибут
Детали

Ключевые поля

id, event_category, user_id, aggregate_type, aggregate_id, event_type, event_data, occurred_at

Индексация

Индексы на (user_id, occurred_at), (aggregate_type, aggregate_id, occurred_at), (event_category, occurred_at)

Особые примечания

Партицирование по occurred_at (ежемесячно), две категории: auth (аутентификация) и domain (бизнес-события), сохраняет дельты изменений полей в event_data JSONB

Связи данных

Схема репозиторий Схема реализует сложные шаблоны отношений для гибкого моделирования данных:

Иерархические структуры

  • Организации используют ltree-пути для эффективных деревьев запросов

  • Элементы справочника (ci_base) поддерживают опциональные иерархии

  • Автоматическое поддержание путей через триггеры базы данных

Шаблоны наследования

  • Наследование таблиц: customizable_entity → бизнес-сущности (organization, user, device, asset, inventory, asset_group)

  • Наследование ID: ci_base → таблицы типов справочников

  • Различение типов через entity_type_id и дискриминатор поля

Полиморфные отношения

Некоторые таблицы используют полиморфные ссылки без ограничений внешнего ключа для максимальной гибкости:

  • acl_role_permission.target_entity_id → любой customizable_entity

  • acl_user_scope.target_entity_id → любой customizable_entity

  • entity_tag.entity_id → любой customizable_entity

Эти отношения проверяются на уровне приложения.

Дополнительная информация

Проверка данных

Схема репозиторий Схема обеспечивает целостность данных через несколько механизмов:

Ограничения базы данных

  • UNIQUE-ограничения с поддержкой мягкого удаления (частичные индексы WHERE deleted_at IS NULL)

  • CHECK-ограничения (например, device_relation обеспечивает master_idslave_id)

  • NOT NULL-ограничения для обязательных полей

  • ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ для меток времени и булевых флагов

Проверка на уровне приложения

  • Проверка типа сущности для полиморфных ссылок

  • Проверка каталога для ссылок на настраиваемые поля

  • Проверка типов настраиваемых полей

  • Управление массивами для полей с несколькими значениями

Оптимизация запросов

Таблицы организованы с использованием специальных стратегий индексирования:

Стандартные индексы:

  • Все внешние ключи имеют выделенные индексы

  • Временные индексы на created_at, updated_at, deleted_at

  • Составные индексы для часто соединяемых колонок

Специализированные индексы:

  • GiST-индексы на ltree-пути для иерархических запросов

  • Частичные уникальные индексы с поддержкой мягкого удаления

  • Индексы значений настраиваемых полей для фильтрации и сортировки

  • Индексы событий аудита по времени + сущности для эффективного поиска

Соображения по производительности:

  • Рекомендуется пул соединений (PgBouncer)

  • Регулярное обслуживание VACUUM для больших таблиц

  • Возможное будущее партицирование для device таблицы по organization_id

  • Материализованные представления для сложных вычислений контроля доступа

Последнее обновление

Это было полезно?