Capa de datos sin procesar
Consulte los conjuntos de datos origen para entidades comerciales, telemetría de dispositivos y activos/inventario, además de las tablas clave y la periodicidad de actualización.
La capa de datos Raw contiene 3 esquemas de datos distintos, cada uno sirviendo a diferentes aspectos de la plataforma de telemática e inteligencia de negocio:
raw_business_data- que contiene tablas, atributos y valores relacionados con la información de negocio, como vehículos, empleados, geocercas añadidas por usuarios, etc.raw_telematics_data- que contiene tablas, atributos y valores relacionados con los datos telemáticos transmitidos desde los dispositivos bajo vigilancia, tales como ubicaciones, entradas, salidas y eventos.repo- que contiene tablas para la gestión de activos e inventario, incluidos tipos de activos configurables, campos personalizados, relaciones de activos y datos geoespaciales para el seguimiento de recursos organizacionales.
Cada esquema está optimizado para su dominio de datos específico y patrones de acceso, proporcionando una cobertura integral de las necesidades operativas, telemáticas y de gestión de activos.
raw_business_data structure
raw_business_data structureEste esquema contiene más de 40 tablas cuidadosamente seleccionadas para cubrir varios aspectos del negocio y casos de uso. Estas tablas representan sus entidades comerciales principales, la estructura organizativa y los datos operativos.
El diagrama interactivo del esquema raw_business_data está disponible en dbdiagram.io: https://dbdiagram.io/d/V3-bronze-layer-68ecfd1c2e68d21b4131089a
Encuentre los detalles del esquema de raw business data a continuación.
Frecuencia de actualización
Los datos en este esquema se sincronizan con la base de datos central. Las actualizaciones ocurren de forma incremental a medida que se producen cambios en la base de datos MySQL de origen, normalmente con menos de 5 minutos desde el cambio en la fuente.
description_parameters
description_parametersEl sistema incluye datos de referencia para estandarizar valores en toda la base de datos:
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 entidades
Categorías de entidad empresarial
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 siguiente resume las tablas clave según su propósito empresarial:
Entidades centrales del negocio
users
Descripción: Cuentas de usuario que contienen información de perfil, afiliación a la empresa, configuración de localización (zona horaria, locale) y relaciones jerárquicas a través de master_id para estructuras de cuentas multinivel
Campos clave
- user_id - Identificador único del usuario
- company_label - Nombre de la empresa asociada con el 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 de 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 cuentas multinivel
employees
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, claves de hardware para identificación iButton/RFID y datos de ubicación con soporte de geovallas
Campos clave
- employee_id - Identificador de la entidad empleado
- user_id - Identificador de la 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 licencia de conducir
- driver_license_issue_date - Fecha de emisión de la licencia de conducir
- driver_license_valid_till - Fecha hasta la cual la licencia de conducir es válida
- hardware_key - Una clave de 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 (tracker asignado), rastreado en driver_history y checkins
Notas especiales
La clave de hardware permite la identificación del conductor mediante iButton o RFID; soporta geovallas con latitude, longitude, radius campos
departments
Descripción: Unidades organizativas con datos de ubicación geográfica (latitud, longitud, radio) que permiten análisis basados en geovallas para informes a nivel de departamento y asociación de ubicación de empleados
Campos clave
- department_id - Identificador de la entidad departamento
- user_id - Identificador de la 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 geolocalización en metros
- address - El atributo address de la tabla departments
Relaciones
Vincula empleados a la estructura organizativa mediante department_id
Notas especiales
Los campos de ubicación admiten análisis basados en geovallas para informes a nivel de departamento
Seguimiento y monitorización
devices
Descripción: Registro de dispositivos de rastreo físicos con identificadores de hardware (IMEI), información de tarjeta SIM, estado de conectividad de la red (intensidad de señal, roaming, operador) y asignaciones de listado de estado para la gestión del ciclo de vida del dispositivo
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 - Número de la tarjeta SIM del dispositivo
- status_listing_id - ID de estado del dispositivo
- network_label - Nombre de la red a la que está conectada la tarjeta SIM
- signal_level - Intensidad 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 el raw_telematics_data esquema hacen referencia a esta tabla vía device_id
objects
Descripción: Registro central de entidades monitorizadas (vehículos, activos, personal) que vincula dispositivos físicos a la estructura organizativa mediante client_id y group_id, representando la "unidad rastreable" con un objeto activo por dispositivo
Campos clave
- object_id - Identificador de la entidad objeto
- client_id - Identificador de la entidad cliente
- device_id - Identificador de la entidad dispositivo
- object_label - Nombre del objeto
- model - Modelo del dispositivo
- group_id - ID del 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
models
Descripción: Registro central de entidades monitorizadas (vehículos, activos, personal) que vincula dispositivos físicos a la estructura organizativa mediante client_id y group_id, representando la "unidad rastreable" con un objeto activo por dispositivo
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 lanzó 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 - ¿Existe una tarjeta SIM?
- has_gsm_level - ¿Puede un rastreador transmitir la intensidad 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 salidas 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 capacidades indican qué campos de datos están disponibles para este tipo de dispositivo
Notas especiales
Utilice las banderas de capacidad para determinar sensores e entradas válidos al consultar datos telemáticos
sensor_description
Descripción: Configuración integral de sensores que vincula las entradas del dispositivo con la lógica empresarial, incluyendo asignaciones de entrada, 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
Campos clave
- sensor_id - Identificador de la entidad sensor
- device_id - Identificador de la entidad dispositivo
- sensor_label - Nombre del sensor para la interfaz de usuario
- input_label - El nombre del campo del mensaje (atributo) desde el cual se toman los datos 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. Solo para sensores de medición
- divider - Divisor: el número por el que dividir el valor del campo. Solo 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 rellenados o vaciados. Se usa solo 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 - 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 necesario para sensores agregados. Se utiliza 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 - array opcional de parent_ids para sensor compuesto. volume - double. Opcional. Volumen para sensor compuesto. parent_ids - opcional. array de int. Array de parent_ids para sensor compuesto. volume - opcional. Double. Volumen para sensor compuesto. min - opcional. Double. Valor mínimo bruto aceptable para un sensor. max - opcional. Double. Valor máximo bruto aceptable para un sensor. max_lowering_by_time - opcional. Double. Valor máximo legal de descenso por hora. max_lowering_by_mileage - opcional. Double. Valor máximo legal de descenso por 100 km. ignore_drains_in_move - opcional. Booleano. Por defecto es false. Si es true, no se detectarán los vaciados de combustible durante el movimiento. ignore_refuels_in_move - opcional. Booleano. Por defecto es false. Si es true, no se detectarán los repostajes durante el movimiento. refuel_gap_minutes - opcional. Entero. Por defecto es 5. El tiempo en minutos tras 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 solo 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 empresarial a través de 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 sin procesar a unidades
Gestión de activos
vehicles
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 del rastreador vía object_id para gestión de flotas y seguimiento de cumplimiento
Campos clave
- vehicle_id - Identificador de la entidad vehículo
- user_id - Identificador de la entidad usuario
- object_id - Identificador de la entidad objeto
- garage_id - Identificador de la entidad 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 la 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 medio normal de combustible 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
garages
Descripción: Ubicaciones de instalaciones de servicio y mantenimiento con coordenadas geográficas (latitud, longitud, radio), información de contacto para mecánicos y despachadores, que permiten la detección de visitas de servicio basada en geovallas y análisis de proximidad
Campos clave
- garage_id - Identificador de la entidad garaje
- user_id - Identificador de la entidad usuario
- latitude - Objeto de ubicación
- longitude - Objeto de ubicación
- radius - Tamaño de 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 basada en geovallas y análisis de proximidad
vehicle_service_tasks
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
Campos clave
- service_task_id - Identificador de la entidad tarea de servicio
- vehicle_id - Identificador de la 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
Admite tres tipos de disparadores: basados en fecha, basados en kilometraje, basados en horas de motor; configuraciones de notificación 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 frente a reactivo
Ubicación y enrutamiento
zones
Descripción: Áreas geovalladas que definen perímetros virtuales usando círculos o polígonos para monitorizar eventos de entrada y salida de vehículos/activos, admitiendo automatización basada en reglas y análisis de ubicación con codificación por colores para diferenciación visual
Campos clave
- zone_id - Identificador de la entidad zona
- client_id - Identificador de la 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 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 circle, polygon (definido vía geofence_points), y clasificaciones de áreas especiales
Relaciones
Referenciado por rules2zones, users2zones; los 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
places
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, habilitando la integración CRM/ERP mediante external_id e informes basados en la ubicación
Campos clave
- place_id - Identificador de la entidad Place
- user_id - Identificador de la 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 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; las tablas relacionadas permiten filtrar y ordenar por atributos personalizados
geofence_points
Descripción: Coordenadas ordenadas de vértices (el campo number determina la secuencia) que definen los límites del polígono para formas de geocerca complejas, permitiendo perímetros geográficos precisos más allá de zonas circulares simples, usado con PostGIS ST_MakePolygon para operaciones geométricas
Campos clave
- zone_id - Un ID de la zona a la que este formulario está adjunto
- number - Número de serie
- latitude - Ubicación
- longitude - Ubicación
Relaciones
Registros múltiples por zone_id definir límites de 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
tasks
Descripción: Asignaciones de órdenes de trabajo con validación de ubicación (latitude, longitude, radius), ventanas de tiempo (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 la gestión de servicio de campo y operaciones de entrega
Campos clave
- task_id - Identificador de la entidad Task
- user_id - Identificador de la entidad usuario
- object_id - Identificador de la entidad objeto
- parent_task_id - Identificador de la entidad task padre
- 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 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 la 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 la tarea con éxito. Varias visitas 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 - Tardanza aceptable. La cantidad máxima de tiempo que un empleado puede llegar tarde. Cualquier tarea completada durante este tiempo se marcará como "late"
- 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 de tiempo definidas por time_from/time_to; validación de geocerca con ubicación y radio
Relaciones
Enlaces a forms (recolección de datos), task_history (cambios de estado), objects (tracker asignado)
Notas especiales
stay_duration y arrival_duration_minutes habilitar monitoreo de cumplimiento para entregas y tareas de servicio
forms
Descripción: Formularios de recopilación de datos configurables para capturar información estructurada durante la finalización de tareas o check-ins en la aplicación móvil, con campos y valores almacenados como JSON, validación de ubicación opcional (is_submission_in_zone) y requisitos de envío obligatorios cuando están adjuntos a tareas
Campos clave
- form_id - Identificador de la entidad Form
- task_id - Un ID de la tarea a la que este formulario está adjunto
- object_id - Identificador de la entidad objeto
- form_label - Etiqueta de formulario definida por el usuario
- campos - Si es true, 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 cuando 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 true, el formulario solo puede enviarse en la zona de la tarea
- description - Fecha cuando este formulario fue creado (o adjuntado a la tarea)
- created_at - Fecha cuando 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 asociado), 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
checkins
Descripción: Registros de asistencia y actividad basados en la ubicación enviados a través de la aplicación móvil, rastreando horarios planificados frente a los reales (planned_datetime vs actual_datetime) con coordenadas geográficas y mediciones de precisión de la ubicación (radius) para informes de puntualidad
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 se procesó la petición/mensaje
- 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 la desviación del horario planificado
Notas especiales
Variación de tiempo entre planned_datetime y actual_datetime habilita informes de puntualidad; el radio define la tolerancia de ubicación aceptable
task_history
Descripción: Registro completo de auditoría del ciclo de vida de la tarea capturando todos los cambios de estado, asignaciones, actualizaciones y modificaciones de campo con marcas temporales (event_datetime), atribución de usuario y tipos de actividad (create, update, assign, status_change) almacenados en el campo payload para análisis de cumplimiento y flujos de trabajo
Campos clave
- task_history_id - Identificador de la entidad task_history
- task_id - Identificador de la entidad Task
- user_id - Identificador de la 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 transiciones de estado y seguimiento de actividad de usuarios
Reglas y automatización
rules
Descripción: Reglas de detección de eventos con condiciones de activación configurables (exceso de velocidad, violaciones de geocerca, umbrales de sensores, tiempo de inactividad) almacenadas en parameters (JSONB), y ajustes de notificación multicanal (alert_email, alert_sms, alert_phone, is_push_enabled) para monitoreo automatizado y alertas basadas en datos de dispositivos y del servidor
Campos clave
- rule_id - Identificador de la entidad Rule
- object_id - Identificador de la entidad objeto
- client_id - Identificador de la 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, vea Navixy API docs.
- 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 true, 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 encendido 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; admite email, SMS, teléfono y notificaciones push
Relaciones
Vínculos a objetos vía rules2objects, zonas vía rules2zones
Notas especiales
event_type define un escenario de monitoreo específico (exceso de velocidad, infracción de geocerca, umbral de sensor); maximum el campo habilita la agregación de eventos para alertas basadas en umbrales
rules2objects
Descripción: Relación muchos-a-muchos que vincula reglas con 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
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 la regla por objeto (p.ej., diferentes límites de velocidad por vehículo)
Notas especiales
La relación muchos-a-muchos permite que una regla monitoree múltiples objetos con diferentes parámetros
rules2zones
Descripción: Relación muchos-a-muchos que asocia reglas con zonas geofenceadas, permitiendo que una sola regla monitoree eventos de entrada/salida en múltiples áreas geográficas para escenarios complejos de monitoreo espacial
Campos clave
- rule_id - Identificador de la entidad Rule
- zone_id - Identificador de la entidad Zone
Notas especiales
La relación muchos-a-muchos habilita el monitoreo multi-zona para una sola regla (p.ej., alertar al entrar en cualquiera de varias áreas restringidas)
Estado y categorización
statuses
Descripción: Definiciones de estado personalizadas dentro de listados de estado, que incluyen propiedades de visualización (color para el despliegue 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
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 la visualización en el sitio web
- order_sort - Posición de orden dentro del listado status
- 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 la diferenciación visual en los informes
status_listings
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 supervisores, empleados o ambos pueden cambiar los valores de estado
Campos clave
- status_listing_id - Identificador de la entidad status listing
- user_id - Identificador de la entidad usuario
- status_listing_label - Valor de estado del atributo status_listing_label
- is_supervisor_controlled - Si es true, los supervisores pueden cambiar el estado de trabajo, p.ej. usando la aplicación móvil de monitoreo
- is_employee_controlled - Si es true, los empleados pueden cambiar su propio estado de trabajo, p.ej. usando la aplicación de seguimiento móvil
- 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
status_history
Descripción: Registro de auditoría de todas las transiciones de estado de dispositivos con marcas temporales (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 permite análisis geográficos de cambios de estado e informes de ubicación de inicio/fin de jornada
Campos clave
- status_history_id - Identificador de la entidad status_history
- device_id - Identificador de la entidad 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 asignar un nuevo estado en el dispositivo
- server_datetime - Fecha y hora de asignar el 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áficos de las transiciones de estado; útil para informes de ubicación de inicio/fin de jornada
tags
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
Campos clave
- tag_id - ID de la entidad tag
- user_id - Identificador de la 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 soporta múltiples etiquetas por entidad
tag_links
Descripción: Tabla de relación polimórfica que asocia tags con cualquier tipo de entidad vía entity_type y entity_id, con campo ordinal para gestionar el orden de visualización, habilitando etiquetado multi-entidad flexible
Campos clave
- tag_id - ID de la entidad tag
- entity_type - El atributo entity_type de la tabla tag_links
- entity_id - Identificador de la entidad
- ordinal - El atributo ordinal de la tabla tag_links
Contenido
entity_type identifica la tabla (vehicle, employee, task, etc.); ordinal define el orden de visualización
Notas especiales
La relación polimórfica permite etiquetado a través de diferentes tipos de entidad
Grupos y jerarquía
groups
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
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 la 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 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 entidades de monitoreo para informes y permisos
groups_objects
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
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 pertenencia a grupos
Campos y entidades personalizadas
entities
Descripción: Registro de tipos de entidad que define qué entidades de negocio soportan campos personalizados y su estructura de diseño de campos (sections, field_order) almacenada en entity_label (JSONB), permitiendo extensión dinámica del esquema para places, tasks y otras entidades sin cambios en la base de datos
Campos clave
- entity_id - Identificador de la entidad
- user_id - Identificador de la entidad usuario
- entity_label - id - int. Identificador de la entidad. type - enum. Actualmente, solo se soporta "place". layout - objeto que describe el diseño de campos para la entidad. sections - arreglo 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 - arreglo de strings. Campos incorporados 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
custom_fields
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 requisito (is_required) para captura de datos flexible en places, tasks y otras entidades
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 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 entidades; el tipo de campo enlaza con description_parameters
Notas especiales
Permite extensión dinámica del esquema sin cambios en la base de datos; usado extensamente en places y tasks
Seguimiento histórico
driver_history
Descripción: Registro de auditoría completo de asignaciones de empleado a vehículo a lo largo del tiempo, rastreando transiciones de old_employee_id a new_employee_id con marcas temporales (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
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 los cambios en el dispositivo
- server_datetime - Fecha y hora de los 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; vinculado 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 la ubicación del cambio de asignación
vehicle_trackers_history
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 temporales de cambio (changed_datetime), habilitando atribución histórica precisa de datos y cálculo de kilometraje cuando los trackers se mueven entre vehículos
Campos clave
- vehicle_tracker_history_id - Identificador de la entidad vehicle_tracker_history
- vehicle_id - Identificador de la 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 estaba instalado en qué vehículo a lo largo del tiempo
Notas especiales
Crítico para el análisis histórico de datos cuando los trackers se mueven entre vehículos; permite atribución precisa de kilometraje y uso
Datos de referencia y consulta
description_parameters
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 e interfaz de usuario
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 con enumeraciones
counters
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
Campos clave
- counter_id - ID interno
- device_id - Identificador de la entidad dispositivo
- counter_type - Tipo de contador
- sensor_id - Identificador de la 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
device_output_name
Descripción: Etiquetas personalizadas para canales de salida del dispositivo mapeando identificadores numéricos de salida (number) a nombres definidos por el usuario (label) tales como "Door Lock" o "Engine Block" para reportes legibles y análisis de comandos y estados de salida del dispositivo
Campos clave
- device_id - Identificador de la entidad dispositivo
- number - El atributo number de la tabla device_output_name
- label - El atributo label de la tabla device_output_name
Contenido
Mapa números de canales de salida a nombres definidos por el usuario (p.ej., "Door Lock", "Engine Block")
Notas especiales
Permite reportes legibles al analizar comandos y estados de salida del dispositivo
raw_telematics_data structure
raw_telematics_data structureEl raw_telematics_data esquema contiene tres tipos de tablas primarias que trabajan juntas para proporcionar datos completos del dispositivo.
El diagrama interactivo del esquema raw_telematics_data está disponible en dbdiagram.io: https://dbdiagram.io/d/v1-schema-telematics-bd-67a0acef263d6cf9a0d8e750
Encuentre los detalles del esquema de datos telemáticos en bruto a continuación.
Tablas clave por categoría
Cada tabla sirve un propósito específico en la captura de diferentes aspectos de la información del dispositivo:
tracking_data_core
Propósito: Datos centrales de ubicación y movimiento
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 (latitude y longitude) 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 por 100
inputs
Propósito: Lecturas de sensores de dispositivos
Campos clave
input_id, device_id, device_time, sensor_name, value
Contenido
Lecturas analógicas (nivel de combustible, temperatura, voltaje), valores calculados (RPM del motor)
Relaciones
states
Propósito: Indicadores de estado del dispositivo y modos de operación
Campos clave
state_id, device_id, device_time, state_name, value
Contenido
Indicadores de modo de operación (trabajando, inactivo, apagado), estados de componentes (encendido, puertas)
Formato de valor
Valores booleanos (1/0) o códigos de estado específicos
Los datos en este esquema se ingresan 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 garantiza la integridad de los datos mediante múltiples mecanismos:
Restricciones CHECK validar que los valores se encuentren 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 proporcionar un valor por defecto cuando los datos no se proporcionan explícitamente
Optimización de consultas
Las tablas están organizadas con estrategias específicas de indexación:
Todas las tablas incluyen índices basados en tiempo en
record_added_atLas columnas de clave foránea tienen índices dedicados para el rendimiento de las uniones
Combinaciones de columnas utilizadas con frecuencia tienen índices compuestos
TimescaleDB proporciona índices especializados para consultas de series temporales
repo estructura de datos
repo estructura de datosEste esquema está actualmente en desarrollo. Si está interesado en acceso temprano o tiene preguntas sobre esta funcionalidad, por favor contacte a iotquery@navixy.com.
El repo schema proporciona un marco integral para gestionar estructuras organizacionales, activos, dispositivos y sus relaciones en entornos multiinquilino. Construido sobre PostgreSQL 14+ con la extensión ltree, el esquema admite 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 registros de auditoría completos 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 multiinquilino que requieren aislamiento de datos, operaciones impulsadas 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.
El diagrama interactivo derepo el esquema de datos está disponible en dbdiagram.io: https://dbdiagram.io/d/Navixy-Repo-data-schema-68ad788c1e7a611967a0930e
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 de origen. Las actualizaciones ocurren inmediatamente a medida que suceden los cambios, con registros de auditoría que capturan todas las modificaciones para cumplimiento y análisis histórico.
ci_base
ci_baseEl repo el esquema utiliza un patrón de 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 coherencia 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 de negocio se conectan a ci_base:
Todas las entidades de negocio en el repo esquema hacen referencia a ci_base subtipos para definir su clasificación y comportamiento:
organization→ referenciaci_organization_type(que hereda deci_entity_type→ci_base)user→ referenciaci_user_type(que hereda deci_entity_type→ci_base)device→ referenciaci_device_typeyci_device_status(ambos heredan deci_base)asset→ referenciaci_asset_type(que hereda deci_entity_type→ci_base)inventory→ referenciaci_inventory_type(que hereda deci_entity_type→ci_base)asset_group→ referenciaci_asset_group_type(que hereda deci_entity_type→ci_base)
Categorías de tipos de referencia:
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 entidades 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álogo
Tablas clave por categoría
Las tablas en el repo el esquema está organizado en categorías funcionales. Las descripciones a continuación resumen las tablas más importantes según su propósito empresarial.
organization
Propósito: Gestión de organización jerárquica
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
Utiliza ltree para jerarquías multinivel, hereda de customizable_entity para soporte de campos personalizados
user
Propósito: Cuentas de usuario y autenticación
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
device
Propósito: Dispositivos de rastreo físicos
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
asset
Propósito: Activos físicos o virtuales
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 vía device_asset_link
inventory
Propósito: Registros de inventario y almacén
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 vía device_inventory_link
asset_group
Propósito: Agrupación de activos con seguimiento histórico
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
custom_field_def
Propósito: Definiciones y metadatos de campos personalizados
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 específicos por tipo custom_field_value_* tablas
acl_role_permission
Propósito: Gestión de permisos basada en roles
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 para todo un 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
audit_event
Propósito: Registro unificado de auditoría para todos los cambios del sistema
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 eficientes en árboles
Elementos de referencia (
ci_base) admiten jerarquías opcionalesMantenimiento 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 de referenciaDiscriminación de tipo vía
entity_type_idydiscriminatorcampos
Relaciones polimórficas
Ciertas tablas usan referencias polimórficas sin restricciones de clave foránea para máxima flexibilidad:
acl_role_permission.target_entity_id→ cualquiercustomizable_entityacl_user_scope.target_entity_id→ cualquiercustomizable_entityentity_tag.entity_id→ cualquiercustomizable_entity
Estas relaciones se validan a nivel de aplicación.
Información adicional
Validación de datos
El repo el esquema aplica la integridad de datos mediante múltiples mecanismos:
Restricciones de la base de datos
Restricciones UNIQUE con soporte de eliminación lógica (índices parciales WHERE
deleted_atIS NULL)Restricciones CHECK (por ejemplo,
device_relationaseguramaster_id≠slave_id)Restricciones NOT NULL en campos obligatorios
Valores DEFAULT para timestamps 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 arrays para campos de valor múltiple
Optimización de consultas
Las tablas están organizadas con estrategias específicas de indexación:
Í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 eliminación lógica
Í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 agrupación de conexiones (PgBouncer)
Mantenimiento VACUUM regular para tablas grandes
Posible particionado futuro para
devicetabla pororganization_idVistas materializadas para cálculos complejos de control de acceso
Última actualización
¿Te fue útil?