Capa Bronze

La capa Bronze contiene dos esquemas de datos distintos, cada uno sirviendo a diferentes aspectos de la plataforma de telemática e inteligencia empresarial:

  • raw_business_data - que contiene tablas, atributos y valores relacionados con la información empresarial, como vehículos, empleados, geocercas añadidas por los usuarios, etc.

  • raw_telematics_data - que contiene tablas, atributos y valores relacionados con los datos telemáticos transmitidos desde los dispositivos en monitoreo, como ubicaciones, entradas, salidas y eventos.

Cada esquema está optimizado para su dominio de datos y patrones de acceso específicos, proporcionando cobertura integral de las necesidades operativas, telemáticas y de gestión de activos.

raw_business_data structure

Este esquema contiene más de 40 tablas cuidadosamente seleccionadas para cubrir varios aspectos empresariales y casos de uso. Estas tablas representan sus entidades comerciales principales, la estructura organizativa y los datos operativos.

circle-info

El diagrama interactivo del esquema raw_business_data está disponible en dbdiagram.io: https://dbdiagram.io/d/V3-bronze-layer-68ecfd1c2e68d21b4131089aarrow-up-right

Encuentre los detalles del esquema raw business data a continuación.

Frecuencia de actualización

Los datos en este esquema se sincronizan con la base de datos principal. Las actualizaciones se producen de forma incremental conforme ocurren cambios en la base de datos MySQL de origen, típicamente en menos de 5 minutos desde el cambio en el origen.

description_parameters

El sistema incluye datos de referencia para estandarizar valores en toda la base de datos:

Tipo de referencia
Descripción
Valores de ejemplo

Definiciones de tipo

Tipos de entidad estándar

vehicle_type: car, truck, bus

Códigos de estado

Valores de estado de tareas y del sistema

tasks_status: unassigned, assigned, done

Definiciones de unidades

Unidades de medida para sensores

units_type: liter, gallon, celsius

Clasificaciones de entidad

Categorías de entidades comerciales

entities_type: place, task, customer

Tablas clave por categoría

Las tablas en el raw_business_data esquema están organizadas en categorías funcionales para facilitar la navegación. La tabla a continuación resume las tablas clave según su propósito empresarial:

Entidades comerciales principales

chevron-rightusershashtag

Descripción: Cuentas de usuario que contienen información de perfil, afiliación a compañía, configuración de localización (zona horaria, locale) y relaciones jerárquicas vía master_id para estructuras de cuenta multinivel

Atributo
Detalles

Campos clave

- user_id - Identificador único de usuario - company_label - Nombre de la empresa asociada al usuario - first_name - Nombre de usuario - last_name - Apellido del usuario - middle_name - Segundo nombre del usuario - locale - Configuración de idioma del usuario - timezone_label - Zona horaria en formato IANA - master_id - ID del usuario principal (si el actual es subordinado) - registration_datetime - Fecha de registro en el sistema - birth_date - Fecha de nacimiento del usuario

Relaciones

Usuario padre vía master_id, vinculado a employees, departments, places, tasks a través de user_id

Notas especiales

Entidad central que conecta datos organizacionales; master_id habilita jerarquías de usuarios para estructuras de cuenta multinivel

chevron-rightemployeeshashtag

Descripción: Registros de empleados y conductores usados para representar a las personas que trabajan para la organización, incluyendo información personal, detalles de licencias, asignaciones de departamento, llaves hardware para identificación iButton/RFID y datos de ubicación con soporte de geocercas

Atributo
Detalles

Campos clave

- employee_id - Identificador de entidad empleado - user_id - Identificador de entidad usuario - object_id - Identificador de la entidad objeto - department_id - ID del departamento al que está asignado el empleado - first_name - El atributo first_name de la tabla employees - last_name - El atributo last_name de la tabla employees - middle_name - El atributo middle_name de la tabla employees - driver_license_number - Número de licencia de conducir - driver_license_categories - Categorías de la licencia de conducir - driver_license_issue_date - Fecha de expedición de la licencia de conducir - driver_license_valid_till - Fecha hasta la cual la licencia de conducir es válida - hardware_key - Una llave hardware - email - Correo electrónico del empleado - phone_number - Teléfono del empleado sin el signo "+" - address - Dirección de la ubicación - personnel_number - Número de personal del empleado/conductor - citizen_id_number - Número de seguridad social - latitude - Ubicación asociada con este empleado - longitude - Ubicación asociada con este empleado - radius - Ubicación asociada con este empleado en metros - fuel_consumption - El atributo fuel_consumption de la tabla employees - fuel_cost - El atributo fuel_cost de la tabla employees - is_deleted - El atributo is_deleted de la tabla employees

Relaciones

Enlaces a users, departments, objects (rastreador asignado), rastreado en driver_history y checkins

Notas especiales

La llave hardware permite la identificación del conductor vía iButton o RFID; soporta geocercas con latitude, longitude, radius campos

chevron-rightdepartmentshashtag

Descripción: Unidades organizacionales con datos de ubicación geográfica (latitud, longitud, radio) que permiten análisis basados en geocercas para informes a nivel de departamento y asociación de ubicación del empleado

Atributo
Detalles

Campos clave

- department_id - Identificador de la entidad departamento - user_id - Identificador de entidad usuario - department_label - El atributo department_label de la tabla departments - latitude - Ubicación asociada con este departamento - longitude - Ubicación asociada con este departamento - radius - Tamaño de la geolocalización en metros - address - El atributo address de la tabla departments

Relaciones

Vincula empleados a la estructura organizacional mediante department_id

Notas especiales

Los campos de ubicación soportan análisis basados en geocercas para informes a nivel de departamento

Rastreo y monitoreo

chevron-rightdeviceshashtag

Descripción: Registro de dispositivos de rastreo físicos con identificadores de hardware (IMEI), información de tarjeta SIM, estado de conectividad de red (potencia de señal, roaming, operador) y asignaciones de listado de estado para la gestión del ciclo de vida del dispositivo

Atributo
Detalles

Campos clave

- device_id - ID del dispositivo - owner_id - ID del propietario del dispositivo en cuya cuenta se añadió el beacon - device_imei - IMEI del dispositivo - phone - El número de la tarjeta SIM del dispositivo - status_listing_id - ID de estado del dispositivo - network_label - El nombre de la red a la que está conectada la tarjeta SIM - signal_level - Potencia de señal del dispositivo - has_roaming - Indicador de disponibilidad de roaming - is_sim_blocked - Indicador de bloqueo de la tarjeta SIM - created_at - Fecha y hora en que se creó la entrada

Relaciones

Entidad central vinculada a objects, models, sensor_description, counters; owner_id references users.user_id

Notas especiales

Todos los datos telemáticos en raw_telematics_data el esquema hacen referencia a esta tabla vía device_id

chevron-rightobjectshashtag

Descripción: Registro central de entidades monitoreadas (vehículos, activos, personal) que vincula dispositivos físicos a la estructura organizacional mediante client_id y group_id, representando la "unidad rastreable" con un objeto activo por dispositivo

Atributo
Detalles

Campos clave

- object_id - Identificador de la entidad objeto - client_id - Identificador de entidad cliente - device_id - Identificador de entidad del dispositivo - object_label - Nombre del objeto - model - Modelo del dispositivo - group_id - ID de grupo de la entidad - create_datetime - Fecha y hora de creación de una nueva fila en el servidor - is_deleted - El atributo is_deleted de la tabla objects - is_clone - Indicador de clonación

Relaciones

Centro central que conecta dispositivos con usuarios (client_id), detalles del vehículo, historial de rastreo, tareas y reglas

Notas especiales

Representa la "unidad rastreable" en el sistema; un objeto por dispositivo en uso activo

chevron-rightmodelshashtag

Descripción: Registro central de entidades monitoreadas (vehículos, activos, personal) que vincula dispositivos físicos a la estructura organizacional mediante client_id y group_id, representando la "unidad rastreable" con un objeto activo por dispositivo

Atributo
Detalles

Campos clave

- model_id - Identificador del modelo de la entidad - model - El atributo model de la tabla models - vendor - El nombre de la empresa que comercializó el rastreador - alternative_label - El atributo alternative_label de la tabla models - analog_amount - Número de entradas analógicas del rastreador - digital_amount - Número de entradas discretas del rastreador - outputs_amount - Número de salidas discretas del rastreador - has_battery_level - Determina si el rastreador transmite lecturas de carga de batería - has_altitude - Determina si el rastreador transmite altitud - has_phone - ¿Hay una tarjeta SIM? - has_gsm_level - ¿Puede un rastreador transmitir la potencia de señal GSM? - has_gsm_name - ¿Puede el rastreador transmitir el nombre de la red GSM o el código del operador (MCC + MNC)? - has_gsm_roaming - ¿Puede el rastreador transmitir el estado de roaming? - has_detach_button - ¿Tiene el rastreador un sensor de desprendimiento? - type_output_control - Perfil de control de salida del rastreador - type_special_control - Contiene configuraciones especializadas y módulos funcionales para modelos de dispositivos individuales, como el modo de conducción peligrosa (hbm_telfm) para equipos Teltonika - is_clone - ¿Es el modelo un clon de otro modelo?

Contenido

Las banderas booleanas de capacidad indican qué campos de datos están disponibles para este tipo de dispositivo

Notas especiales

Use las banderas de capacidad para determinar sensores e entradas válidos al consultar datos telemáticos

chevron-rightsensor_descriptionhashtag

Descripción: Configuración integral de sensores que vincula entradas del dispositivo con la lógica de negocio, incluyendo mapeos de entradas, unidades de medida, factores de conversión (multiplicador/divisor), tablas de calibración para sensores de combustible, umbrales de precisión y lógica de agrupación para lecturas agregadas de sensores

Atributo
Detalles

Campos clave

- sensor_id - Identificador de entidad sensor - device_id - Identificador de entidad del dispositivo - sensor_label - Nombre del sensor para la interfaz de usuario - input_label - El nombre del campo del mensaje (atributo) del cual se toma el dato del sensor. Si es igual a "input_status", es un sensor discreto - sensor_type - Tipo de sensor - units_type - Unidades de medida - multiplier - Multiplicador: el número por el que multiplicar el valor del campo. Sólo para sensores de medición - divider - Divisor: el número por el que dividir el valor del campo. Sólo para sensores de medición - accuracy - Un porcentaje especificado para calcular el error absoluto del volumen del tanque. Este error se usa para determinar cuándo ocurren repostajes o vaciados. Se utiliza sólo para sensores de combustible - calibration_data - El atributo calibration_data de la tabla sensor_description - input_id - Número de entrada para sensor discreto - group_id - Los sensores del mismo tipo con el mismo group_id y source_id se consideran pertenecientes al mismo grupo. Sus datos se suman o promedian, dependiendo del valor de group_type. Esto es requerido para sensores agregados. Se usa en sensores de medición - group_type - 0 - sumar los valores de los sensores dentro de un grupo, 1 - promediar - sensor_units - Nombre de unidad introducido por el usuario si units_type=0 (personalizado) - parameters - Objeto opcional con parámetros adicionales parent_ids - matriz opcional de parent_ids para sensor compuesto. volume - double. Opcional. Volumen para sensor compuesto. parent_ids - opcional. matriz de int. Matriz de parent_ids para sensor compuesto. volume - opcional. Double. Volumen para sensor compuesto. min - opcional. Double. Valor bruto mínimo aceptable para un sensor. max - opcional. Double. Valor bruto máximo aceptable para un sensor. max_lowering_by_time - opcional. Double. Valor máximo legal de disminución por hora. max_lowering_by_mileage - opcional. Double. Valor máximo legal de disminución por 100 km. ignore_drains_in_move - opcional. Booleano. Por defecto es false. Si es true, los vaciados de combustible no serán detectados durante el movimiento. ignore_refuels_in_move - opcional. Booleano. Por defecto es false. Si es true, los repostajes no serán detectados durante el movimiento. refuel_gap_minutes - opcional. Entero. Por defecto 5. Tiempo en minutos desde el inicio del movimiento en el que los repostajes serán detectados durante el movimiento. custom_field_name - opcional. Booleano. Por defecto false. El parámetro determina si el campo input_name es un valor personalizado introducido por el usuario. Esto tiene sentido sólo si el modelo de rastreador tiene la característica has_custom_fields

Relaciones

Vincula las entradas del dispositivo (desde raw_telematics_data.inputs) con la lógica de negocio mediante device_id y input_label matching

Notas especiales

calibration_data (JSONB) almacena tablas de calibración específicas del sensor para sensores de nivel de combustible; multiplier y divider convertir valores brutos a unidades

Gestión de activos

chevron-rightvehicleshashtag

Descripción: Registro integral de vehículos que contiene especificaciones (dimensiones, peso, capacidad), documentación (VIN, registro, seguro), parámetros operativos (consumo de combustible, volumen del tanque) y asignación actual de rastreador vía object_id para la gestión de flotas y seguimiento de cumplimiento

Atributo
Detalles

Campos clave

- vehicle_id - Identificador de entidad vehículo - user_id - Identificador de entidad usuario - object_id - Identificador de la entidad objeto - garage_id - Identificador de entidad de garaje - vehicle_label - El atributo vehicle_label de la tabla vehicles - registration_number - Número de matrícula/placa de un vehículo - vin - El atributo vin de la tabla vehicles - manufacture_year - El atributo manufacture_year de la tabla vehicles - fuel_type - El atributo fuel_type de la tabla vehicles - fuel_cost - El atributo fuel_cost de la tabla vehicles - fuel_tank_volume - El atributo fuel_tank_volume de la tabla vehicles - max_speed - El atributo max_speed de la tabla vehicles - model - El atributo model de la tabla vehicles - color - El atributo color de la tabla vehicles - trailer - El atributo trailer de la tabla vehicles - additional_info - El atributo additional_info de la tabla vehicles - vehicle_type - El atributo vehicle_type de la tabla vehicles - vehicle_subtype - El atributo vehicle_subtype de la tabla vehicles - vehicle_status_id - Identificador de entidad estado del vehículo - chassis_number - El atributo chassis_number de la tabla vehicles - frame_number - El atributo frame_number de la tabla vehicles - trailer_reg_number - El atributo trailer_reg_number de la tabla vehicles - payload_weight - El atributo payload_weight de la tabla vehicles - payload_height - El atributo payload_height de la tabla vehicles - payload_length - El atributo payload_length de la tabla vehicles - payload_width - El atributo payload_width de la tabla vehicles - passenger_capacity - Número máximo de pasajeros - gross_weight - El atributo gross_weight de la tabla vehicles - standard_fuel_consumption - Consumo de combustible promedio normal en litros por 100 km - fuel_grade - El atributo fuel_grade de la tabla vehicles - wheel_arrangement - El atributo wheel_arrangement de la tabla vehicles - tyre_size - Tamaño del vehículo: dimensiones y tamaño de rueda - tyres_number - Número de ruedas - liability_insurance_policy_number - El atributo liability_insurance_policy_number de la tabla vehicles - liability_insurance_valid_till - La fecha hasta la cual el seguro de responsabilidad civil es válido - free_insurance_policy_number - El atributo free_insurance_policy_number de la tabla vehicles - free_insurance_valid_till_date - La fecha hasta la cual el seguro gratuito es válido

Relaciones

Enlaces a objects (rastreador actual), garages (ubicación de servicio), vehicle_service_tasks; rastreado en vehicle_trackers_history

Notas especiales

Los campos de dimensión física (payload_length, payload_width, payload_height, gross_weight) soportan análisis de planificación de carga; las fechas de seguro permiten el seguimiento de cumplimiento

chevron-rightgarageshashtag

Descripción: Ubicaciones de instalaciones de servicio y mantenimiento con coordenadas geográficas (latitud, longitud, radio), información de contacto de mecánicos y despachadores, que permiten la detección de visitas de servicio basadas en geocercas y análisis de proximidad

Atributo
Detalles

Campos clave

- garage_id - Identificador de entidad de garaje - user_id - Identificador de entidad usuario - latitude - Objeto de ubicación - longitude - Objeto de ubicación - radius - Tamaño de la geolocalización en metros - address - Objeto de ubicación - organization_label - ID del depósito - mechanic_name - Nombre del mecánico - dispatcher_name - Nombre del despachador

Relaciones

Referenciado por vehicles.garage_id para la asignación de ubicación de servicio

Notas especiales

Los campos de ubicación permiten la detección de visitas de servicio basadas en geocercas y análisis de proximidad

chevron-rightvehicle_service_taskshashtag

Descripción: Programación de mantenimiento y seguimiento del historial de servicio con múltiples tipos de disparadores (basados en fecha, basados en kilometraje, basados en horas de motor), intervalos de tareas recurrentes, notificaciones multicanal (correo electrónico, SMS, push) y distinción entre eventos de mantenimiento planificados (is_repeat) y no planificados

Atributo
Detalles

Campos clave

- service_task_id - Identificador de entidad de tarea de servicio - vehicle_id - Identificador de entidad vehículo - description - El atributo description de la tabla vehicle_service_tasks - status - El valor de estado del atributo status - cost - El atributo cost de la tabla vehicle_service_tasks - start_date - La fecha y hora asociadas con el atributo start_date - end_date - La fecha y hora asociadas con el atributo end_date - completion_date - La fecha y hora asociadas con el atributo completion_date - predicted_datetime - La fecha y hora asociadas con el atributo predicted_datetime - mileage_limit - El atributo mileage_limit de la tabla vehicle_service_tasks - engine_hours_limit - El atributo engine_hours_limit de la tabla vehicle_service_tasks - start_mileage - El atributo start_mileage de la tabla vehicle_service_tasks - start_engine_hours - El atributo start_engine_hours de la tabla vehicle_service_tasks - mileage_notification_interval - El atributo mileage_notification_interval de la tabla vehicle_service_tasks - engine_hours_notification_interval - El atributo engine_hours_notification_interval de la tabla vehicle_service_tasks - date_notification_interval - Convertir un entero N a N días - mileage_repeat_interval - El atributo mileage_repeat_interval de la tabla vehicle_service_tasks - engine_hours_repeat_interval - El atributo engine_hours_repeat_interval de la tabla vehicle_service_tasks - date_repeat_interval - Convertir un entero N a N días - notification_emails - El atributo notification_emails de la tabla vehicle_service_tasks - notification_sms_phone_numbers - El atributo notification_sms_phone_numbers de la tabla vehicle_service_tasks - is_notification_push_enabled - El atributo is_notification_push_enabled de la tabla vehicle_service_tasks - completion_mileage - El atributo completion_mileage de la tabla vehicle_service_tasks - completion_engine_hours - El atributo completion_engine_hours de la tabla vehicle_service_tasks - is_repeat - El atributo is_repeat de la tabla vehicle_service_tasks - is_unplanned - El atributo is_unplanned de la tabla vehicle_service_tasks - comment - El atributo comment de la tabla vehicle_service_tasks

Contenido

Soporta tres tipos de disparador: basados en fecha, basados en kilometraje, basados en horas de motor; configuración de notificaciones para correo electrónico, SMS, push

Notas especiales

is_repeat y los campos de intervalo permiten programaciones de mantenimiento recurrentes; is_unplanned distingue mantenimiento programado vs. reactivo

Ubicación y enrutamiento

chevron-rightzoneshashtag

Descripción: Áreas geocercadas que definen perímetros virtuales usando círculos o polígonos para monitorear eventos de entrada y salida de vehículos/activos, soportando automatización basada en reglas y análisis de ubicación con codificación por color para diferenciación visual

Atributo
Detalles

Campos clave

- zone_id - Identificador de entidad zona - client_id - Identificador de entidad cliente - zone_label - El atributo zone_label de la tabla zones - zone_type - El atributo zone_type de la tabla zones - latitude - Objeto opcional, el cuadro delimitador que puede contener completamente el resultado devuelto - longitude - Objeto opcional, el cuadro delimitador que puede contener completamente el resultado devuelto - circle_center_latitude - El atributo circle_center_latitude de la tabla zones - circle_center_longitude - El atributo circle_center_longitude de la tabla zones - radius - Tamaño de la geolocalización en metros - address - El atributo address de la tabla zones - color - El atributo color de la tabla zones

Contenido

Los tipos de zona incluyen círculo, polígono (definido a través de geofence_points), y clasificaciones de áreas especiales

Relaciones

Referenciado por rules2zones, users2zones; vértices del polígono almacenados en geofence_points

Notas especiales

Se pueden usar funciones PostGIS para comprobar punto-en-polígono para análisis complejos de geocercas

chevron-rightplaceshashtag

Descripción: Puntos de interés con coordenadas geográficas, definiciones de radio y soporte extensible de campos personalizados para almacenar información de contacto del cliente y datos específicos del negocio, permitiendo integración CRM/ERP mediante external_id e informes basados en la ubicación

Atributo
Detalles

Campos clave

- place_id - Identificador de la entidad Place - user_id - Identificador de entidad usuario - place_label - El atributo place_label de la tabla places - latitude - Objeto de ubicación - longitude - Objeto de ubicación - radius - Tamaño de la geolocalización en metros - address - El atributo address de la tabla places - description - El atributo description de la tabla places - external_id - ID para integración con sistemas externos (CRM) - custom_fields - Campos adicionales - assigned_datetime - Fecha y hora de la asignación del punto de interés al usuario

Relaciones

Ampliado con valores de campos personalizados a través de places_text_fields, places_decimal_fields, places_bigint_fields, places_longtext_fields, places_linked_entity_fields

Notas especiales

custom_fields JSONB proporciona acceso rápido; tablas relacionadas permiten filtrar y ordenar por atributos personalizados

chevron-rightgeofence_pointshashtag

Descripción: Coordenadas de vértices ordenadas (el campo number determina la secuencia) que definen los límites del polígono para formas complejas de geocerca, permitiendo perímetros geográficos precisos más allá de zonas circulares simples, usado con PostGIS ST_MakePolygon para operaciones geométricas

Atributo
Detalles

Campos clave

- zone_id - Un ID de la zona a la que se adjunta este formulario - number - Número de serie - latitude - Ubicación - longitude - Ubicación

Relaciones

Registros múltiples por zone_id definir los límites del polígono; number el campo determina el orden de los vértices

Notas especiales

Consultar con ORDER BY number para reconstruir la ruta del polígono; usar con PostGIS ST_MakePolygon para operaciones geométricas

Gestión de tareas y flujos de trabajo

chevron-righttaskshashtag

Descripción: Asignaciones de órdenes de trabajo con validación de ubicación (latitud, longitud, radio), ventanas temporales (time_from, time_to), requisitos de duración de visita (stay_duration_minutes, arrival_duration_minutes), estructura jerárquica vía parent_task_id y seguimiento de estado para gestión de servicio de campo y operaciones de entrega

Atributo
Detalles

Campos clave

- task_id - Identificador de la entidad Task - user_id - Identificador de entidad usuario - object_id - Identificador de la entidad objeto - parent_task_id - Identificador de la entidad Parent Task - task_label - El atributo task_label de la tabla tasks - status - El valor de estado del atributo status - task_type - Tipo de tarea: task, route o checkpoint - latitude - El atributo latitude de la tabla tasks - longitude - El atributo longitude de la tabla tasks - radius - Tamaño de la geolocalización en metros - arrival_datetime - Cuando el rastreador llega al área de la tarea. IGNORADO al crear/actualizar - created_at - El atributo created_at de la tabla tasks - status_change_datetime - Fecha y hora de actualización de la tarea - time_from - La fecha y hora asociadas con el atributo time_from - time_to - La fecha y hora asociadas con el atributo time_to - stay_duration - El atributo stay_duration de la tabla tasks - stay_duration_minutes - Duración de la visita. El tiempo que un trabajador móvil debe permanecer en el sitio de la asignación para completar con éxito la tarea. Las visitas múltiples son acumulativas - arrival_duration_minutes - Ignorar visitas aleatorias más cortas que la duración especificada. Al calcular la duración mínima, se ignorarán las visitas más cortas que la duración especificada - max_delay_minuts - Retraso aceptable. La cantidad máxima de tiempo que un empleado puede llegar tarde. Cualquier tarea completada durante este tiempo se marcará como "tarde" - is_stay_control_enabled - El atributo is_stay_control_enabled de la tabla tasks - address - El atributo address de la tabla tasks - description - Atributo description de la tabla tasks - custom_fields - El atributo custom_fields de la tabla tasks - external_id - Identificador de entidad externa - order_sort - El atributo order_sort de la tabla tasks - created_by - Fuente de la tarea creada

Contenido

Soporta tareas jerárquicas vía parent_task_id; ventanas temporales definidas por time_from/time_to; validación de geocercas con ubicación y radio

Relaciones

Enlaces a forms (recolección de datos), task_history (cambios de estado), objects (rastreador asignado)

Notas especiales

stay_duration y arrival_duration_minutes habilitar monitoreo de cumplimiento para tareas de entrega y servicio

chevron-rightformshashtag

Descripción: Formularios de recopilación de datos configurables para capturar información estructurada durante la finalización de tareas o registros en la app móvil, con campos y valores almacenados como JSON, validación opcional de ubicación (is_submission_in_zone) y requisitos de envío obligatorios cuando están adjuntos a tareas

Atributo
Detalles

Campos clave

- form_id - Identificador de la entidad Form - task_id - Un ID de la tarea a la que se adjunta este formulario - object_id - Identificador de la entidad objeto - form_label - Etiqueta de formulario definida por el usuario - campos - Si es verdadero, el formulario solo puede enviarse en la zona de la tarea - values - Un mapa con IDs de campo como claves y objetos field_value como valores. Clave usada para vincular el campo con su valor correspondiente - submitted_at - Fecha en que los valores del formulario fueron enviados por última vez - submission_latitude - Ubicación en la que los valores del formulario fueron enviados por última vez - submission_longitude - Ubicación en la que los valores del formulario fueron enviados por última vez - submission_address - Ubicación en la que los valores del formulario fueron enviados por última vez - is_submission_in_zone - Si es verdadero, el formulario solo puede enviarse en la zona de la tarea - description - Fecha en que este formulario fue creado (o adjuntado a la tarea) - created_at - Fecha en que este formulario fue creado (o adjuntado a la tarea)

Contenido

campos define la estructura del formulario (JSON); values contiene los datos enviados (JSON)

Relaciones

Enlaces a tasks (orden de trabajo asociada), objects (remitente), referenciado en checkins

Notas especiales

Indicador de validación de ubicación is_submission_in_zone habilita reglas de envío de formularios basadas en geocercas

chevron-rightcheckinshashtag

Descripción: Registros de asistencia y actividad basados en la ubicación enviados a través de la aplicación móvil, rastreando tiempos de llegada planificados frente a reales (planned_datetime vs actual_datetime) con coordenadas geográficas y mediciones de precisión de la ubicación (radio) para informes de puntualidad

Atributo
Detalles

Campos clave

- checkin_id - Identificador de la entidad Checkin - employee_id - El identificador de la entidad empleado es también el identificador para conductores - object_id - Dispositivo del empleado - form_id - Identificador de la entidad Form - user_id - Usuario empleado - planned_datetime - Hora del dispositivo cuando se realizó el check-in - actual_datetime - Hora del servidor cuando la solicitud/mensaje fue procesado - latitude - Ubicación en la que se enviaron los checkins - longitude - Ubicación en la que se enviaron los checkins - radius - Error de posicionamiento en un punto en metros - address - Dirección del check-in - comment - El atributo comment de la tabla checkins

Relaciones

Conecta empleados con formularios y ubicaciones; rastrea desviaciones del horario planificado

Notas especiales

Varianza de tiempo entre planned_datetime y actual_datetime habilita informes de puntualidad; el radio define la tolerancia de ubicación aceptable

chevron-righttask_historyhashtag

Descripción: Registro completo de auditoría de eventos del ciclo de vida de la tarea capturando todos los cambios de estado, asignaciones, actualizaciones y modificaciones de campo con marcas de tiempo (event_datetime), atribución de usuario y tipos de actividad (create, update, assign, status_change) almacenados en el campo payload para cumplimiento y análisis de flujo de trabajo

Atributo
Detalles

Campos clave

- task_history_id - Identificador de la entidad Task History - task_id - Identificador de la entidad Task - user_id - Identificador de entidad usuario - activity - Operación que ocurrió. Puede ser "create", "update", "assign" o "status_change" - event_datetime - Fecha y hora del evento - payload - Depende de la operación. Típicamente, contiene los campos que fueron cambiados durante la operación

Contenido

Tipos de actividad definidos en description_parameters; payload almacena detalles específicos del evento (texto)

Notas especiales

Esencial para el análisis de finalización de tareas, informes de transición de estado y seguimiento de la actividad de usuarios

Reglas y automatización

chevron-rightruleshashtag

Descripción: Reglas de detección de eventos con condiciones de activación configurables (exceso de velocidad, violaciones de geocercas, umbrales de sensores, tiempo de inactividad) almacenadas en parameters (JSONB), y configuraciones de notificación multicanal (alert_email, alert_sms, alert_phone, is_push_enabled) para monitoreo y alertas automatizadas basadas en datos de dispositivo y servidor

Atributo
Detalles

Campos clave

- rule_id - Identificador de la entidad Rule - object_id - Identificador de la entidad objeto - client_id - Identificador de entidad cliente - event_type - El atributo event_type de la tabla rules - event_label - El atributo event_label de la tabla rules - event_group - El atributo event_group de la tabla rules - description - Atributo description de la tabla rules - parameters - Parámetros del evento. Para más detalles sobre los parámetros disponibles, ver Navixy API docsarrow-up-right. - alert_email - Correo para notificaciones - alert_sms - Números de teléfono para notificaciones SMS - alert_phone - Teléfonos para llamadas de voz - is_push_enabled - Si es verdadero, las notificaciones push están disponibles - created_at - El atributo created_at de la tabla rules - is_deleted - El atributo is_deleted de la tabla rules - maximum - Límites aplicados a varias reglas. Por ejemplo, para la regla de tiempo de inactividad con el motor en minutos - event_comment1 - El atributo event_comment1 de la tabla rules - event_comment2 - El atributo event_comment2 de la tabla rules

Contenido

Los parámetros de la regla (JSONB) definen condiciones de activación; admiten notificaciones por correo, SMS, teléfono y push

Relaciones

Vincula a objetos vía rules2objects, zonas vía rules2zones

Notas especiales

event_type define un escenario de monitoreo específico (exceso de velocidad, incumplimiento de geocerca, umbral de sensor); maximum el campo permite la agregación de eventos para alertas basadas en umbrales

chevron-rightrules2objectshashtag

Descripción: Relación muchos-a-muchos que vincula reglas a objetos monitorizados con personalización de parámetros por objeto vía object_params (JSONB), permitiendo diferentes valores de umbral (p. ej., límites de velocidad) para cada vehículo o activo dentro de la misma regla

Atributo
Detalles

Campos clave

- rule_id - Identificador de la entidad Rule - object_id - Identificador de la entidad objeto - param_group_number - El atributo param_group_number de la tabla rules2objects - object_params - El atributo object_params de la tabla rules2objects

Contenido

object_params (JSONB) permite la personalización de reglas por objeto (p. ej., diferentes límites de velocidad por vehículo)

Notas especiales

La relación muchos-a-muchos permite que una regla monitorice múltiples objetos con diferentes parámetros

chevron-rightrules2zoneshashtag

Descripción: Relación muchos-a-muchos que asocia reglas con zonas geocercadas, permitiendo que una sola regla monitoree eventos de entrada/salida en múltiples áreas geográficas para escenarios complejos de monitoreo espacial

Atributo
Detalles

Campos clave

- rule_id - Identificador de la entidad Rule - zone_id - Identificador de entidad Zone

Notas especiales

La relación muchos-a-muchos permite monitoreo multi-zona para una sola regla (p. ej., alerta al entrar en cualquiera de varias áreas restringidas)

Estado y categorización

chevron-rightstatuseshashtag

Descripción: Definiciones de estado personalizadas dentro de listados de estado, incluyendo propiedades de visualización (color para display web, order_sort para posicionamiento) usadas para representar estados de trabajo de dispositivos o empleados con soporte de borrado lógico vía la bandera is_deleted

Atributo
Detalles

Campos clave

- status_id - Identificador de la entidad Status - listing_id - Identificador de la entidad Listing - status_label - Valor de estado del atributo status_label - color - Color usado para mostrar en el sitio web - order_sort - Posición de orden dentro del listado de estado - is_deleted - El atributo is_deleted de la tabla statuses

Relaciones

Grupos de estados organizados por listing_id (referencias status_listings); usado en status_history

Notas especiales

order_sort define la secuencia de visualización; el color permite diferenciación visual en los informes

chevron-rightstatus_listingshashtag

Descripción: Definiciones de conjuntos de estado que controlan qué valores de estado están disponibles para dispositivos o empleados, con banderas de permiso (is_supervisor_controlled, is_employee_controlled) que determinan si los supervisores, empleados o ambos pueden cambiar los valores de estado

Atributo
Detalles

Campos clave

- status_listing_id - Identificador de la entidad Status Listing - user_id - Identificador de entidad usuario - status_listing_label - Valor de estado del atributo status_listing_label - is_supervisor_controlled - Si es verdadero, los supervisores pueden cambiar el estado de trabajo, p. ej. usando la app móvil de monitoreo - is_employee_controlled - Si es verdadero, los empleados pueden cambiar su propio estado de trabajo, p. ej. usando la app móvil de rastreo - is_deleted - El atributo is_deleted de la tabla status_listings

Relaciones

Referenciado por devices.status_listing_id y statuses.listing_id

Notas especiales

Las banderas de control determinan quién puede cambiar estados: solo supervisor, autoservicio del empleado o ambos

chevron-rightstatus_historyhashtag

Descripción: Registro de auditoría de todas las transiciones de estado de dispositivos con marcas de tiempo (changed_datetime en el dispositivo, server_datetime en el servidor), atribución de usuario (updated_by) y captura de ubicación (latitude, longitude, address) que permiten análisis geográfico de cambios de estado e informes de ubicación de inicio/fin de jornada

Atributo
Detalles

Campos clave

- status_history_id - Identificador de la entidad Status History - device_id - Identificador de entidad del dispositivo - old_status_id - Identificador de la entidad Old Status - new_status_id - Identificador de la entidad New Status - updated_by - La fecha y hora asociadas con el atributo updated_by - changed_datetime - Fecha y hora de asignación de un nuevo estado en el dispositivo - server_datetime - Fecha y hora de asignación del nuevo estado en el servidor - latitude - Localización de dispositivos durante cambios de estado - longitude - Localización de dispositivos durante cambios de estado - address - Localización de dispositivos durante cambios de estado

Relaciones

Enlaces a devices, statuses (antiguo y nuevo), description_parameters (para updated_by role)

Notas especiales

La captura de ubicación permite análisis geográfico de transiciones de estado; útil para informes de ubicación de inicio/fin de jornada

chevron-righttagshashtag

Descripción: Etiquetas de categorización definidas por el usuario con codificación de color que permiten filtrado y búsqueda rápida a través de múltiples tipos de entidad (places, geofences, employees, tasks, trackers, vehicles) para organización flexible

Atributo
Detalles

Campos clave

- tag_id - ID de la entidad Tag - user_id - Identificador de entidad usuario - tag_label - El atributo tag_label de la tabla tags - color - El atributo color de la tabla tags

Relaciones

Aplicado a entidades vía tag_links; alcance definido por el usuario

Notas especiales

Sistema de categorización flexible que admite múltiples etiquetas por entidad

Grupos y jerarquía

chevron-rightgroupshashtag

Descripción: Estructura de agrupación organizacional para trackers que permite organización visual en la interfaz de usuario con colores personalizables (group_color) y gestión jerárquica tipo carpeta, actualmente con función puramente visual

Atributo
Detalles

Campos clave

- group_id - Grupo de trackers (vinculado por objects.group_id). La división en grupos puede verse en la lista de beacons, por ejemplo - client_id - Identificador de entidad cliente - group_label - Título de grupo especificado por el usuario, 1 a 60 caracteres imprimibles, p. ej. "Employees" - group_color - Color del grupo en formato web (sin #), p. ej. "FF6DDC". Determina el color de los marcadores de los trackers en el mapa

Relaciones

Referenciado por objects.group_id; propiedad del cliente vía client_id (referencias users)

Notas especiales

Permite organización tipo carpeta de las entidades de monitoreo para informes y permisos

chevron-rightgroups_objectshashtag

Descripción: Relación muchos-a-muchos entre groups y objects usando clave primaria compuesta (groups_client_id, objects_client_id), permitiendo que los objetos pertenezcan a múltiples grupos simultáneamente para estructuras organizacionales flexibles

Atributo
Detalles

Campos clave

- groups_client_id - Identificador de la entidad cliente para groups - objects_client_id - Identificador de la entidad cliente para objects

Notas especiales

Permite que los objetos pertenezcan a múltiples grupos simultáneamente; consultar con ambos client_id valores para la pertenencia al grupo

Campos personalizados y entidades

chevron-rightentitieshashtag

Descripción: Registro de tipos de entidad que define qué entidades de negocio soportan campos personalizados y la estructura de disposición de sus campos (sections, field_order) almacenada en entity_label (JSONB), permitiendo extensión dinámica del esquema en places, tasks y otras entidades sin cambios de base de datos

Atributo
Detalles

Campos clave

- entity_id - Identificador de la entidad - user_id - Identificador de entidad usuario - entity_label - id - int. Identificador de la entidad. type - enum. Actualmente, solo se soporta "place". layout - objeto que describe la disposición de campos para la entidad. sections - array de objetos. Cada sección puede contener uno o más campos. Debe existir al menos una sección en un layout. label - string. Nombre de la sección. field_order - array de strings. Campos integrados e IDs de campos personalizados (como strings) - builtin_type - El atributo builtin_type de la tabla entities

Relaciones

Referenciado por custom_fields para definir qué campos personalizados se aplican a qué tipos de entidad

Notas especiales

builtin_type vincula a description_parameters para clasificaciones de entidad definidas por el sistema

chevron-rightcustom_fieldshashtag

Descripción: Definiciones de campos personalizados que permiten la extensión dinámica del esquema para tipos de entidad, con tipos de campo configurables (custom_field_type), reglas de validación y opciones en parameters (JSONB), y banderas de obligatoriedad (is_required) para captura de datos flexible en places, tasks y otras entidades

Atributo
Detalles

Campos clave

- custom_field_id - Identificador de la entidad Custom Field - entity_id - Identificador de la entidad - custom_field_label - Nombre del campo - custom_field_type - Tipo de dato en el campo - description - Descripción del campo - is_required - ¿Es esto obligatorio o no? - parameters - Parámetros del campo

Contenido

parameters (JSONB) almacena la configuración específica del tipo de campo (reglas de validación, opciones de desplegable, etc.)

Relaciones

Define atributos personalizados disponibles para las entidades; el tipo de campo vincula a description_parameters

Notas especiales

Permite la extensión dinámica del esquema sin cambios en la base de datos; usado extensamente en places y tasks

Seguimiento histórico

chevron-rightdriver_historyhashtag

Descripción: Registro completo de auditoría de asignaciones empleado-a-vehículo a lo largo del tiempo, rastreando transiciones de old_employee_id a new_employee_id con marcas de tiempo (changed_datetime, server_datetime), datos de ubicación (latitude, longitude, address), información de clave de hardware y atribución de usuario (updated_by) que permite análisis específicos por conductor cuando los conductores cambian entre vehículos

Atributo
Detalles

Campos clave

- driver_history_id - Identificador de la entidad Driver History - object_id - Identificador de la entidad objeto - old_employee_id - Identificador de la entidad Old Employee - new_employee_id - Identificador de la entidad New Employee - hardware_key - El atributo hardware_key de la tabla driver_history - changed_datetime - Fecha y hora en que se realizaron cambios en el dispositivo - server_datetime - Fecha y hora de cambios realizados en el servidor - updated_by - La fecha y hora asociadas con el atributo updated_by - latitude - El atributo latitude de la tabla driver_history - longitude - El atributo longitude de la tabla driver_history - address - El atributo address de la tabla driver_history

Relaciones

Rastrea asignaciones de conductores a vehículos a lo largo del tiempo; vincula a employees y objects

Notas especiales

Esencial para informes específicos por conductor cuando los conductores cambian de vehículo; la captura de ubicación permite análisis de ubicación del cambio de asignación

chevron-rightvehicle_trackers_historyhashtag

Descripción: Registro de auditoría que rastrea qué dispositivos GPS (object_id) fueron instalados en qué vehículos (vehicle_id) a lo largo del tiempo con marcas de tiempo de cambio (changed_datetime), permitiendo atribución histórica precisa de datos y cálculo de kilometraje cuando los trackers se mueven entre vehículos

Atributo
Detalles

Campos clave

- vehicle_tracker_history_id - Identificador de la entidad Vehicle Tracker History - vehicle_id - Identificador de entidad vehículo - object_id - Identificador de la entidad objeto - changed_datetime - La fecha y hora asociadas con el atributo changed_datetime

Relaciones

Rastrea qué dispositivo GPS fue instalado en qué vehículo a lo largo del tiempo

Notas especiales

Crítico para el análisis de datos históricos cuando los trackers se mueven entre vehículos; permite atribución precisa de kilometraje y uso

Datos de referencia y consulta

chevron-rightdescription_parametershashtag

Descripción: Datos de referencia a nivel del sistema que proporcionan etiquetas legibles por humanos (description) para valores enteros enumerados (key) usados en toda la base de datos, organizados por el campo type (p. ej., task_status, fuel_type, counter_type, entity_classification) para traducción consistente de valores en informes y visualización en la interfaz

Atributo
Detalles

Campos clave

- key - Valor posible en el atributo - type - Un atributo compuesto que consiste en el nombre de la tabla seguido de un guion bajo y el nombre de un atributo en la tabla - description - Valor implícito de un atributo

Contenido

Proporciona etiquetas legibles por humanos para valores codificados en toda la base de datos (estado de tarea, tipos de combustible, tipos de contador, etc.)

Relaciones

Referenciado vía claves foráneas desde múltiples tablas para categorización estandarizada

Notas especiales

Esencial para traducir códigos enteros a valores legibles en informes; type grupos de campos relacionados enumeraciones

chevron-rightcountershashtag

Descripción: Configuraciones de odómetro y contador de horas de motor que vinculan lecturas de sensores del dispositivo (sensor_id) a mediciones de distancia o tiempo con coeficientes multiplicadores para conversión de unidades (km, millas, horas) y counter_type desde description_parameters que define el tipo de medición

Atributo
Detalles

Campos clave

- counter_id - ID interno - device_id - Identificador de entidad del dispositivo - counter_type - Tipo de contador - sensor_id - Identificador de entidad sensor - multiplier - Coeficiente para convertir valores a una de las métricas (km, l, etc.)

Relaciones

Vincula dispositivos a lecturas de sensores que representan contadores de distancia o tiempo

Notas especiales

multiplier convierte pulsos del sensor a unidades reales (km, millas, horas); counter_type from description_parameters define el tipo de medición

chevron-rightdevice_output_namehashtag

Descripción: Etiquetas personalizadas para canales de salida del dispositivo que mapean identificadores numéricos de salida (number) a nombres definidos por el usuario (label) como "Door Lock" o "Engine Block" para informes legibles y análisis de comandos y estados de salida del dispositivo

Atributo
Detalles

Campos clave

- device_id - Identificador de entidad del dispositivo - number - El atributo number de la tabla device_output_name - label - El atributo label de la tabla device_output_name

Contenido

Mapea números de canal de salida a nombres definidos por el usuario (p. ej., "Door Lock", "Engine Block")

Notas especiales

Permite informes legibles al analizar comandos y estados de salida del dispositivo

raw_telematics_data structure

El raw_telematics_data esquema contiene tres tipos de tablas principales que funcionan juntos para proporcionar datos completos del dispositivo.

Bronze layer raw telematics data ERD
ERD de la capa Bronze de datos telemáticos sin procesar
circle-info

El diagrama interactivo del esquema raw_telematics_data está disponible en dbdiagram.io: https://dbdiagram.io/d/v1-schema-telematics-bd-67a0acef263d6cf9a0d8e750arrow-up-right

Encuentre los detalles del esquema de datos telemáticos sin procesar a continuación.

Tablas clave por categoría

Cada tabla cumple un propósito específico en la captura de diferentes aspectos de la información del dispositivo:

chevron-righttracking_data_corehashtag

Propósito: Datos centrales de ubicación y movimiento

Atributo
Detalles

Campos clave

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

Indexación

Optimizado con índice en (device_id, device_time)

Notas especiales

Los datos de ubicación (latitud y longitud) usan formato entero con precisión 10⁷ para un rendimiento óptimo en TimescaleDB La velocidad también se almacena en entero, por lo que necesita dividirla entre 100

chevron-rightinputshashtag

Propósito: Lecturas de sensores desde dispositivos

Atributo
Detalles

Campos clave

input_id, device_id, device_time, sensor_name, valor

Contenido

Lecturas analógicas (nivel de combustible, temperatura, voltaje), valores calculados (RPM del motor)

Relaciones

chevron-rightestadoshashtag

Propósito: Indicadores de estado del dispositivo y modos operativos

Atributo
Detalles

Campos clave

state_id, device_id, device_time, state_name, valor

Contenido

Indicadores de modo de operación (trabajando, inactivo, apagado), estados de componentes (encendido, puertas)

Formato del valor

Valores booleanos (1/0) o códigos de estado específicos

Los datos en este esquema se ingieren directamente desde los dispositivos, con latencia mínima (típicamente segundos). El esquema está optimizado para datos de series temporales usando TimescaleDB para almacenamiento y recuperación eficientes.

Información adicional

Validación de datos

La base de datos aplica la integridad de los datos mediante múltiples mecanismos:

  • Restricciones CHECK validar que los valores estén dentro de rangos aceptables

  • Claves foráneas asegurar que las relaciones entre tablas permanezcan consistentes

  • Restricciones NOT NULL garantizar que los campos obligatorios siempre tengan valores

  • Valores DEFAULT proveer un valor de respaldo cuando los datos no se proporcionan explícitamente

Optimización de consultas

Las tablas están organizadas con estrategias de indexación específicas:

  • Todas las tablas incluyen índices basados en tiempo en record_added_at

  • Las columnas de clave foránea tienen índices dedicados para el rendimiento de joins

  • Combinaciones de columnas usadas con frecuencia tienen índices compuestos

  • TimescaleDB proporciona índices especializados para consultas de series temporales

repo estructura de datos

circle-exclamation

El repo el esquema proporciona un marco integral para gestionar estructuras organizacionales, activos, dispositivos y sus relaciones en entornos multiarrendatario. Construido sobre PostgreSQL 14+ con la extensión ltree, el esquema soporta organizaciones jerárquicas, definiciones de campos personalizados para cualquier tipo de entidad, control de acceso basado en roles con restricciones a nivel de objeto y pistas de auditoría completas con seguimiento de cambios a nivel de campo. Todas las entidades pueden extenderse sin modificaciones del esquema, localizarse para despliegues internacionales y vincularse mediante relaciones polimórficas flexibles.

El esquema aborda escenarios complejos de gestión de datos, incluyendo jerarquías de activos de flota a través de niveles organizacionales, plataformas SaaS multiarrendatario que requieren aislamiento de datos, operaciones reguladas por cumplimiento con requisitos detallados de auditoría y sistemas que necesitan modelos de datos dinámicos adaptables mediante campos personalizados en lugar de migraciones de base de datos.

circle-info

El diagrama interactivo derepo el esquema de datos está disponible en dbdiagram.io: https://dbdiagram.io/d/Navixy-Repo-data-schema-68ad788c1e7a611967a0930earrow-up-right

Encuentre los repo detalles del esquema a continuación.

Frecuencia de actualización

Los datos en el repo esquema se sincronizan en tiempo real con los sistemas fuente. Las actualizaciones ocurren inmediatamente a medida que suceden los cambios, con pistas de auditoría que capturan todas las modificaciones para cumplimiento y análisis histórico.

ci_base

El repo el esquema utiliza un patrón Single Table Inheritance para todos los datos de referencia a través de la ci_base tabla:

El repo el esquema utiliza un Single Table Inheritance patrón para todos los datos de referencia a través de la ci_base tabla. Este diseño consolida diccionarios del sistema, clasificaciones y elementos de referencia definidos por el usuario en una estructura unificada, proporcionando consistencia y flexibilidad en todo el esquema.

Arquitectura:

El ci_base la tabla sirve como la base para todos los datos de referencia, usando un discriminator campo para identificar el tipo de referencia específico. Cada tipo de referencia tiene una tabla correspondiente (como ci_device_type, ci_asset_type) que comparte el mismo id que ci_base, creando una relación de herencia con seguridad de tipo.

Cómo las entidades empresariales se conectan a ci_base:

Todas las entidades empresariales en el repo esquema hacen referencia a ci_base subtipos para definir su clasificación y comportamiento:

  • organization → referencia ci_organization_type (que hereda de ci_entity_typeci_base)

  • user → referencia ci_user_type (que hereda de ci_entity_typeci_base)

  • device → referencia ci_device_type y ci_device_status (ambos heredan de ci_base)

  • asset → referencia ci_asset_type (que hereda de ci_entity_typeci_base)

  • inventory → referencia ci_inventory_type (que hereda de ci_entity_typeci_base)

  • asset_group → referencia ci_asset_group_type (que hereda de ci_entity_typeci_base)

Categorías de tipos de referencia:

Categoría
Tablas
Propósito

Configuración del sistema

ci_module, ci_country, ci_role

Definir módulos del sistema, referencias geográficas y roles de usuario

Definiciones de tipos de entidad

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

Clasificar todas las entidades de negocio por tipo

Estado y clasificación

ci_device_status, ci_asset_type_category

Rastrear estados de entidad y agrupar tipos en categorías

Control de acceso

ci_permission_scope

Definir qué permisos se pueden otorgar (conectado a ci_module y ci_entity_type)

Relaciones

ci_device_relation_type

Definir tipos de relaciones entre dispositivos (maestro-esclavo, respaldo, etc.)

Categorización

ci_tag, ci_catalog_category

Habilitar etiquetado flexible y organización de catálogos

chevron-rightPatrones de consulta de ejemplohashtag

Tablas clave por categoría

Las tablas en el repo los esquemas están organizados en categorías funcionales. Las descripciones siguientes resumen las tablas más importantes según su propósito empresarial.

chevron-rightorganizationhashtag

Propósito: Gestión de organización jerárquica

Atributo
Detalles

Campos clave

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

Indexación

Índice GiST en path para consultas jerárquicas, índices en parent_id y organization_type_id

Notas especiales

Usa ltree para jerarquías multinivel, hereda de customizable_entity para soporte de campos personalizados

chevron-rightuserhashtag

Propósito: Cuentas de usuario y autenticación

Atributo
Detalles

Campos clave

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

Indexación

Índice único en (organization_id, identity_provider, identity_provider_id)

Notas especiales

Integración con proveedores de identidad externos (Keycloak, Auth0, Okta), hereda de customizable_entity

chevron-rightdevicehashtag

Propósito: Dispositivos físicos de rastreo

Atributo
Detalles

Campos clave

id, organization_id, device_type_id, status_id, hw_id, label

Indexación

Índices en organization_id, device_type_id, status_id, hw_id

Notas especiales

Identificador de hardware para rastreo de dispositivos, hereda de customizable_entity para campos personalizados

chevron-rightassethashtag

Propósito: Activos físicos o virtuales

Atributo
Detalles

Campos clave

id, organization_id, asset_type_id, label, description

Indexación

Índices en organization_id y asset_type_id

Notas especiales

Hereda de customizable_entity, vinculado a dispositivos a través de device_asset_link

chevron-rightinventoryhashtag

Propósito: Registros de inventario y almacén

Atributo
Detalles

Campos clave

id, organization_id, inventory_type_id, code

Indexación

Índice único en (organization_id, code)

Notas especiales

Códigos únicos dentro de la organización, vinculados a dispositivos a través de device_inventory_link

chevron-rightasset_grouphashtag

Propósito: Agrupación de activos con seguimiento histórico

Atributo
Detalles

Campos clave

id, organization_id, group_type_id, title_en, description

Relaciones

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

Notas especiales

Membresía basada en tiempo vía asset_group_item, consultar miembros actuales con WHERE detached_at IS NULL

chevron-rightcustom_field_defhashtag

Propósito: Definiciones de campos personalizados y metadatos

Atributo
Detalles

Campos clave

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

Contenido

Los tipos de campo incluyen texto, número, booleano, fecha, fecha y hora, entity_ref, catalog_item_ref

Notas especiales

Permite campos personalizados flexibles para cualquier tipo de entidad, valores almacenados en tablas específicas por tipo custom_field_value_* tablas

chevron-rightacl_role_permissionhashtag

Propósito: Gestión de permisos basada en roles

Atributo
Detalles

Campos clave

id, role_id, permission_scope_id, target_entity_id, actions

Contenido

Máscara de bits de acciones (READ=1, UPDATE=2, DELETE=4, CREATE=8), permisos específicos por objetivo o general para el tipo de entidad

Relaciones

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

Notas especiales

Funciona con user_role y acl_user_scope para determinar los permisos finales del usuario

chevron-rightaudit_eventhashtag

Propósito: Registro de auditoría unificado para todos los cambios del sistema

Atributo
Detalles

Campos clave

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

Indexación

Índices en (user_id, occurred_at), (aggregate_type, aggregate_id, occurred_at), (event_category, occurred_at)

Notas especiales

Particionado por occurred_at (mensual), dos categorías: auth (autenticación) y domain (eventos de negocio), almacena deltas de cambios a nivel de campo en event_data JSONB

Relaciones de datos

El repo el esquema implementa patrones de relación sofisticados para modelado de datos flexible:

Estructuras jerárquicas

  • Las organizaciones usan rutas ltree para consultas de árbol eficientes

  • Elementos de referencia (ci_base) soportan jerarquías opcionales

  • Mantenimiento automático de rutas mediante triggers de base de datos

Patrones de herencia

  • Herencia de tablas: customizable_entity → entidades de negocio (organization, user, device, asset, inventory, asset_group)

  • Herencia de ID: ci_base → tablas de tipo referencia

  • Discriminación de tipo vía entity_type_id y discriminator campos

Relaciones polimórficas

Ciertas tablas usan referencias polimórficas sin restricciones de clave externa para máxima flexibilidad:

  • acl_role_permission.target_entity_id → cualquier customizable_entity

  • acl_user_scope.target_entity_id → cualquier customizable_entity

  • entity_tag.entity_id → cualquier customizable_entity

Estas relaciones se validan a nivel de aplicación.

Información adicional

Validación de datos

El repo el esquema aplica integridad de datos mediante múltiples mecanismos:

Restricciones de base de datos

  • Restricciones UNIQUE con soporte de borrado suave (índices parciales WHERE deleted_at IS NULL)

  • Restricciones CHECK (por ejemplo, device_relation asegura master_idslave_id)

  • Restricciones NOT NULL en campos requeridos

  • Valores DEFAULT para marcas de tiempo y banderas booleanas

Validación a nivel de aplicación

  • Validación de tipo de entidad para referencias polimórficas

  • Validación de catálogo para referencias de campos personalizados

  • Validación de tipo de campo personalizado

  • Gestión de arreglos para campos de valores múltiples

Optimización de consultas

Las tablas están organizadas con estrategias de indexación específicas:

Índices estándar:

  • Todas las claves foráneas tienen índices dedicados

  • Índices basados en tiempo en created_at, updated_at, deleted_at

  • Índices compuestos para columnas que se unen frecuentemente

Índices especializados:

  • Índices GiST en rutas ltree para consultas jerárquicas

  • Índices únicos parciales que soportan borrado suave

  • Índices de valores de campos personalizados para filtrado y ordenación

  • Índices de eventos de auditoría por tiempo + entidad para búsquedas eficientes

Consideraciones de rendimiento:

  • Se recomienda pool de conexiones (PgBouncer)

  • Mantenimiento VACUUM regular para tablas grandes

  • Particionado futuro posible para device tabla por organization_id

  • Vistas materializadas para cálculos complejos de control de acceso

Última actualización

¿Te fue útil?