Camada de dados brutos

Veja os conjuntos de dados de origem para entidades de negócio, telemetria de dispositivos e ativo/inventário, além das tabelas principais e o timing de atualização.

A camada Raw data contém 3 esquemas de dados distintos, cada um servindo a diferentes aspectos da plataforma de telemática e inteligência de negócios:

  • raw_business_data - contendo tabelas, atributos e valores relacionados a informações de negócios, como veículos, funcionários, geofences adicionados por usuários, etc.

  • raw_telematics_data - contendo tabelas, atributos e valores relacionados aos dados telemáticos transmitidos por dispositivos sob monitoramento, como localizações, entradas, saídas e eventos.

  • repo - contendo tabelas para gerenciamento de ativos e inventário, incluindo tipos de ativos configuráveis, campos personalizados, relacionamentos entre ativos e dados geoespaciais para rastreamento de recursos organizacionais.

Cada esquema é otimizado para seu domínio de dados específico e padrões de acesso, fornecendo cobertura abrangente das necessidades operacionais, telemáticas e de gerenciamento de ativos.

raw_business_data structure

Este esquema contém mais de 40 tabelas cuidadosamente selecionadas para cobrir vários aspectos de negócios e casos de uso. Essas tabelas representam suas entidades principais de negócios, estrutura organizacional e dados operacionais.

circle-info

O diagrama interativo do esquema raw_business_data está disponível em dbdiagram.io: https://dbdiagram.io/d/V3-bronze-layer-68ecfd1c2e68d21b4131089aarrow-up-right

Encontre os detalhes do esquema raw business data abaixo.

Frequência de atualização

Os dados neste esquema são sincronizados com o DB principal. As atualizações ocorrem incrementalmente conforme mudanças acontecem no banco de dados MySQL de origem, tipicamente em menos de 5 minutos após a alteração na fonte.

description_parameters

O sistema inclui dados de referência para padronizar valores em todo o banco de dados:

Tipo de referência
Descrição
Valores exemplares

Definições de tipo

Tipos de entidade padrão

vehicle_type: car, truck, bus

Códigos de status

Valores de status de tarefas e do sistema

tasks_status: unassigned, assigned, done

Definições de unidade

Unidades de medição para sensores

units_type: liter, gallon, celsius

Classificações de entidade

Categorias de entidade de negócio

entities_type: place, task, customer

Tabelas-chave por categoria

As tabelas no raw_business_data esquema estão organizadas em categorias funcionais para facilitar a navegação. A tabela abaixo resume as tabelas-chave por seu propósito de negócio:

Entidades principais de negócio

chevron-rightusershashtag

Descrição: Contas de usuário contendo informações de perfil, filiação à empresa, configurações de localização (fuso horário, localidade) e relacionamentos hierárquicos via master_id para estruturas de conta em vários níveis

Atributo
Detalhes

Campos-chave

- user_id - Identificador único do usuário - company_label - Nome da empresa associada ao usuário - first_name - Nome de usuário - last_name - Sobrenome do usuário - middle_name - Nome do meio (patronímico) do usuário - locale - Configurações de idioma do usuário - timezone_label - Fuso horário em formato IANA - master_id - ID primário do usuário (se o atual for subordinado) - registration_datetime - Data de registro no sistema - birth_date - Data de nascimento do usuário

Relacionamentos

Usuário pai via master_id, vinculado a employees, departments, places, tasks através de user_id

Notas especiais

Entidade central que conecta dados organizacionais; master_id habilita hierarquias de usuários para estruturas de conta em vários níveis

chevron-rightemployeeshashtag

Descrição: Registros de funcionários e motoristas usados para representar pessoas que trabalham para a organização, incluindo informações pessoais, detalhes de habilitação, atribuições departamentais, chaves de hardware para identificação iButton/RFID e dados de localização com suporte a geofencing

Atributo
Detalhes

Campos-chave

- employee_id - Identificador da entidade funcionário - user_id - Identificador da entidade usuário - object_id - Identificador da entidade objeto - department_id - ID do departamento ao qual o funcionário está atribuído - first_name - O atributo first_name da tabela employees - last_name - O atributo last_name da tabela employees - middle_name - O atributo middle_name da tabela employees - driver_license_number - Número da carteira de motorista - driver_license_categories - Categorias da carteira de motorista - driver_license_issue_date - Data de emissão da carteira de motorista - driver_license_valid_till - Data até a qual a carteira de motorista é válida - hardware_key - Chave de hardware - email - Email do funcionário - phone_number - Telefone do funcionário sem o sinal "+" - address - Endereço da localização - personnel_number - Número de pessoal do funcionário/motorista - citizen_id_number - Número de identificação civil (Social Security number) - latitude - Localização associada a este funcionário - longitude - Localização associada a este funcionário - radius - Localização associada a este funcionário em metros - fuel_consumption - O atributo fuel_consumption da tabela employees - fuel_cost - O atributo fuel_cost da tabela employees - is_deleted - O atributo is_deleted da tabela employees

Relacionamentos

Vínculos com users, departments, objects (rastreado pelo tracker atribuído), rastreado em driver_history e checkins

Notas especiais

A chave de hardware permite identificação do motorista via iButton ou RFID; suporta geofencing com latitude, longitude, radius campos

chevron-rightdepartmentshashtag

Descrição: Unidades organizacionais com dados de localização geográfica (latitude, longitude, radius) permitindo análises baseadas em geofence para relatórios por departamento e associação de localização do funcionário

Atributo
Detalhes

Campos-chave

- department_id - Identificador da entidade departamento - user_id - Identificador da entidade usuário - department_label - O atributo department_label da tabela departments - latitude - Localização associada a este departamento - longitude - Localização associada a este departamento - radius - Tamanho da geolocalização em metros - address - O atributo address da tabela departments

Relacionamentos

Vincula funcionários à estrutura organizacional através de department_id

Notas especiais

Campos de localização suportam análises baseadas em geofence para relatórios por departamento

Rastreamento e monitoramento

chevron-rightdeviceshashtag

Descrição: Registro físico de dispositivos de rastreamento com identificadores de hardware (IMEI), informações do cartão SIM, status de conectividade de rede (força do sinal, roaming, operadora) e listagem de status para gerenciamento do ciclo de vida do dispositivo

Atributo
Detalhes

Campos-chave

- device_id - ID do dispositivo - owner_id - ID do proprietário do dispositivo na cuja conta o beacon foi adicionado - device_imei - IMEI do dispositivo - phone - Número do cartão SIM do dispositivo - status_listing_id - ID do status do dispositivo - network_label - Nome da rede à qual o cartão SIM está conectado - signal_level - Nível de sinal do dispositivo - has_roaming - Indicador de disponibilidade de roaming - is_sim_blocked - Indicador de bloqueio do cartão SIM - created_at - Data e hora em que a entrada foi criada

Relacionamentos

Entidade principal vinculada a objects, models, sensor_description, counters; owner_id references users.user_id

Notas especiais

Todos os dados telemáticos em raw_telematics_data esquema fazem referência a esta tabela via device_id

chevron-rightobjectshashtag

Descrição: Registro central de entidades monitoradas (veículos, ativos, pessoal) vinculando dispositivos físicos à estrutura organizacional por meio de client_id e group_id, representando a "unidade rastreável" com um objeto ativo por dispositivo

Atributo
Detalhes

Campos-chave

- object_id - Identificador da entidade objeto - client_id - Identificador da entidade cliente - device_id - Identificador da entidade dispositivo - object_label - Nome do objeto - model - Modelo do dispositivo - group_id - ID do grupo de entidade - create_datetime - Data e hora de criação de uma nova linha no servidor - is_deleted - O atributo is_deleted da tabela objects - is_clone - Indicador de clone

Relacionamentos

Centro central conectando dispositivos a usuários (client_id), detalhes do veículo, histórico de rastreamento, tarefas e regras

Notas especiais

Representa a "unidade rastreável" no sistema; um objeto por dispositivo em uso ativo

chevron-rightmodelshashtag

Descrição: Registro central de entidades monitoradas (veículos, ativos, pessoal) vinculando dispositivos físicos à estrutura organizacional por meio de client_id e group_id, representando a "unidade rastreável" com um objeto ativo por dispositivo

Atributo
Detalhes

Campos-chave

- model_id - Identificador do modelo da entidade - model - O atributo model da tabela models - vendor - Nome da empresa que lançou o rastreador - alternative_label - O atributo alternative_label da tabela models - analog_amount - Número de entradas analógicas do rastreador - digital_amount - Número de entradas discretas do rastreador - outputs_amount - Número de saídas discretas do rastreador - has_battery_level - Determina se o rastreador transmite leituras de carga da bateria - has_altitude - Determina se o rastreador transmite altitude - has_phone - Existe um cartão SIM? - has_gsm_level - Um rastreador pode transmitir a força do sinal GSM? - has_gsm_name - O rastreador pode transmitir o nome da rede GSM ou o código da operadora (MCC + MNC)? - has_gsm_roaming - O rastreador pode transmitir o status de roaming? - has_detach_button - O rastreador possui um sensor de destacamento? - type_output_control - Perfil de controle de saída do rastreador - type_special_control - Contém configurações especializadas e módulos funcionais para modelos individuais de dispositivos, como o modo de direção perigosa (hbm_telfm) para equipamentos Teltonika - is_clone - O modelo é um clone de outro modelo?

Conteúdo

Bandeiras booleanas de capacidade indicam quais campos de dados estão disponíveis a partir deste tipo de dispositivo

Notas especiais

Use as bandeiras de capacidade para determinar sensores e entradas válidas ao consultar dados telemáticos

chevron-rightsensor_descriptionhashtag

Descrição: Configuração abrangente de sensores vinculando entradas do dispositivo à lógica de negócio, incluindo mapeamentos de entradas, unidades de medida, fatores de conversão (multiplicador/divisor), tabelas de calibração para sensores de combustível, limites de precisão e lógica de agrupamento para leituras agregadas de sensores

Atributo
Detalhes

Campos-chave

- sensor_id - Identificador da entidade sensor - device_id - Identificador da entidade dispositivo - sensor_label - Nome do sensor para a IU - input_label - O nome do campo da mensagem (atributo) de onde os dados do sensor são obtidos. Se igual a "input_status", é um sensor discreto - sensor_type - Tipo de sensor - units_type - Unidades de medida - multiplier - Multiplicador - o número pelo qual multiplicar o valor do campo. Apenas para sensores de medição - divider - Divisor - o número pelo qual dividir o valor do campo. Apenas para sensores de medição - accuracy - Uma porcentagem especificada para calcular o erro absoluto do volume do tanque. Esse erro é usado para determinar quando ocorrem reabastecimentos ou drenagens. Isso é usado apenas para sensores de combustível - calibration_data - O atributo calibration_data da tabela sensor_description - input_id - Número de entrada para sensor discreto - group_id - Sensores do mesmo tipo com o mesmo group_id e source_id são considerados pertencentes ao mesmo grupo. Seus dados são somados ou promediados, dependendo do valor de group_type. Isto é necessário para sensores agregados. É usado em sensores de medição - group_type - 0 - soma os valores dos sensores dentro de um grupo, 1 - média - sensor_units - Nome da unidade inserida pelo usuário se units_type=0 (personalizado) - parameters - Objeto opcional com parâmetros adicionais parent_ids - array opcional de parent_ids para sensor composto. volume - double. Opcional. Volume para sensor composto. parent_ids - opcional. array de int. Array de parent_ids para sensor composto. volume - opcional. Double. Volume para sensor composto. min - opcional. Double. Valor bruto mínimo aceitável para um sensor. max - opcional. Double. Valor bruto máximo aceitável para um sensor. max_lowering_by_time - opcional. Double. Valor máximo legal de redução por hora. max_lowering_by_mileage - opcional. Double. Valor máximo legal de redução por 100 km. ignore_drains_in_move - opcional. Boolean. Padrão é false. Se true, as drenagens de combustível não serão detectadas durante movimento. ignore_refuels_in_move - opcional. Boolean. Padrão é false. Se true, os reabastecimentos não serão detectados durante movimento. refuel_gap_minutes - opcional. Integer. Padrão é 5. O tempo em minutos após o início do movimento em que reabastecimentos serão detectados durante o movimento. custom_field_name - opcional. Boolean. Padrão false. O parâmetro determina se o campo input_name é um valor personalizado inserido pelo usuário. Isso faz sentido apenas se o modelo do rastreador tiver o recurso has_custom_fields

Relacionamentos

Vincula entradas do dispositivo (de raw_telematics_data.inputs) à lógica de negócio através de device_id e input_label matching

Notas especiais

calibration_data (JSONB) armazena tabelas de calibração específicas do sensor para sensores de nível de combustível; multiplier e divider converter valores brutos para unidades

Gestão de ativos

chevron-rightvehicleshashtag

Descrição: Registro abrangente de veículos contendo especificações (dimensões, peso, capacidade), documentação (VIN, registro, seguro), parâmetros operacionais (consumo de combustível, volume do tanque) e atribuição atual do rastreador via object_id para gestão de frota e monitoramento de conformidade

Atributo
Detalhes

Campos-chave

- vehicle_id - Identificador da entidade veículo - user_id - Identificador da entidade usuário - object_id - Identificador da entidade objeto - garage_id - Identificador da entidade garagem - vehicle_label - O atributo vehicle_label da tabela vehicles - registration_number - Número de registro/placa do veículo - vin - O atributo vin da tabela vehicles - manufacture_year - O atributo manufacture_year da tabela vehicles - fuel_type - O atributo fuel_type da tabela vehicles - fuel_cost - O atributo fuel_cost da tabela vehicles - fuel_tank_volume - O atributo fuel_tank_volume da tabela vehicles - max_speed - O atributo max_speed da tabela vehicles - model - O atributo model da tabela vehicles - color - O atributo color da tabela vehicles - trailer - O atributo trailer da tabela vehicles - additional_info - O atributo additional_info da tabela vehicles - vehicle_type - O atributo vehicle_type da tabela vehicles - vehicle_subtype - O atributo vehicle_subtype da tabela vehicles - vehicle_status_id - Identificador da entidade status do veículo - chassis_number - O atributo chassis_number da tabela vehicles - frame_number - O atributo frame_number da tabela vehicles - trailer_reg_number - O atributo trailer_reg_number da tabela vehicles - payload_weight - O atributo payload_weight da tabela vehicles - payload_height - O atributo payload_height da tabela vehicles - payload_length - O atributo payload_length da tabela vehicles - payload_width - O atributo payload_width da tabela vehicles - passenger_capacity - Número máximo de passageiros - gross_weight - O atributo gross_weight da tabela vehicles - standard_fuel_consumption - Consumo médio normal de combustível em litros por 100 km - fuel_grade - O atributo fuel_grade da tabela vehicles - wheel_arrangement - O atributo wheel_arrangement da tabela vehicles - tyre_size - Tamanho do veículo: dimensões e tamanho das rodas - tyres_number - Número de rodas - liability_insurance_policy_number - O atributo liability_insurance_policy_number da tabela vehicles - liability_insurance_valid_till - Data até a qual o seguro de responsabilidade é válido - free_insurance_policy_number - O atributo free_insurance_policy_number da tabela vehicles - free_insurance_valid_till_date - Data até a qual o seguro gratuito é válido

Relacionamentos

Vínculos com objects (rastreador atual), garages (local de serviço), vehicle_service_tasks; rastreado em vehicle_trackers_history

Notas especiais

Campos de dimensão física (payload_length, payload_width, payload_height, gross_weight) suportam análises de planejamento de carga; datas de seguro permitem monitoramento de conformidade

chevron-rightgarageshashtag

Descrição: Localizações de serviço e manutenção com coordenadas geográficas (latitude, longitude, radius), informações de contato de mecânicos e despachantes, possibilitando detecção de visitas de serviço baseada em geofence e análise de proximidade

Atributo
Detalhes

Campos-chave

- garage_id - Identificador da entidade garagem - user_id - Identificador da entidade usuário - latitude - Objeto de localização - longitude - Objeto de localização - radius - Tamanho da geolocalização em metros - address - Objeto de localização - organization_label - ID do depósito - mechanic_name - Nome do mecânico - dispatcher_name - Nome do despachante

Relacionamentos

Referenciado por vehicles.garage_id para atribuição de local de serviço

Notas especiais

Campos de localização habilitam detecção de visitas de serviço baseada em geofence e análise de proximidade

chevron-rightvehicle_service_taskshashtag

Descrição: Agendamento de manutenção e acompanhamento de histórico de serviço com múltiplos tipos de gatilho (baseado em data, baseado em quilometragem, baseado em horas de motor), intervalos recorrentes de tarefas, notificações multicanal (email, SMS, push) e distinção entre eventos de manutenção planejados (is_repeat) e não planejados

Atributo
Detalhes

Campos-chave

- service_task_id - Identificador da entidade tarefa de serviço - vehicle_id - Identificador da entidade veículo - description - O atributo description da tabela vehicle_service_tasks - status - O valor do atributo status - cost - O atributo cost da tabela vehicle_service_tasks - start_date - A data e hora associadas ao atributo start_date - end_date - A data e hora associadas ao atributo end_date - completion_date - A data e hora associadas ao atributo completion_date - predicted_datetime - A data e hora associadas ao atributo predicted_datetime - mileage_limit - O atributo mileage_limit da tabela vehicle_service_tasks - engine_hours_limit - O atributo engine_hours_limit da tabela vehicle_service_tasks - start_mileage - O atributo start_mileage da tabela vehicle_service_tasks - start_engine_hours - O atributo start_engine_hours da tabela vehicle_service_tasks - mileage_notification_interval - O atributo mileage_notification_interval da tabela vehicle_service_tasks - engine_hours_notification_interval - O atributo engine_hours_notification_interval da tabela vehicle_service_tasks - date_notification_interval - Converter um inteiro N para N dias - mileage_repeat_interval - O atributo mileage_repeat_interval da tabela vehicle_service_tasks - engine_hours_repeat_interval - O atributo engine_hours_repeat_interval da tabela vehicle_service_tasks - date_repeat_interval - Converter um inteiro N para N dias - notification_emails - O atributo notification_emails da tabela vehicle_service_tasks - notification_sms_phone_numbers - O atributo notification_sms_phone_numbers da tabela vehicle_service_tasks - is_notification_push_enabled - O atributo is_notification_push_enabled da tabela vehicle_service_tasks - completion_mileage - O atributo completion_mileage da tabela vehicle_service_tasks - completion_engine_hours - O atributo completion_engine_hours da tabela vehicle_service_tasks - is_repeat - O atributo is_repeat da tabela vehicle_service_tasks - is_unplanned - O atributo is_unplanned da tabela vehicle_service_tasks - comment - O atributo comment da tabela vehicle_service_tasks

Conteúdo

Suporta três tipos de gatilho: baseado em data, baseado em quilometragem, baseado em horas de motor; configurações de notificação para email, SMS, push

Notas especiais

is_repeat e campos de intervalo habilitam cronogramas de manutenção recorrentes; is_unplanned distingue manutenção programada vs. reativa

Localização e roteamento

chevron-rightzoneshashtag

Descrição: Áreas geofenced definindo perímetros virtuais usando círculos ou polígonos para monitoramento de eventos de entrada e saída de veículos/ativos, suportando automação baseada em regras e análises de localização com codificação de cores para diferenciação visual

Atributo
Detalhes

Campos-chave

- zone_id - Identificador da entidade zona - client_id - Identificador da entidade cliente - zone_label - O atributo zone_label da tabela zones - zone_type - O atributo zone_type da tabela zones - latitude - Objeto opcional, o bounding box que pode conter totalmente o resultado retornado - longitude - Objeto opcional, o bounding box que pode conter totalmente o resultado retornado - circle_center_latitude - O atributo circle_center_latitude da tabela zones - circle_center_longitude - O atributo circle_center_longitude da tabela zones - radius - Tamanho da geolocalização em metros - address - O atributo address da tabela zones - color - O atributo color da tabela zones

Conteúdo

Tipos de zona incluem circle, polygon (definido via geofence_points), e classificações de áreas especiais

Relacionamentos

Referenciado por rules2zones, users2zones; vértices do polígono armazenados em geofence_points

Notas especiais

Funções PostGIS podem ser usadas para verificar ponto-em-polígono para análise complexa de geofences

chevron-rightplaceshashtag

Descrição: Pontos de interesse com coordenadas geográficas, definições de raio e suporte extensível a campos personalizados para armazenar informações de contato do cliente e dados específicos do negócio, possibilitando integração CRM/ERP via external_id e relatórios baseados em localização

Atributo
Detalhes

Campos-chave

- place_id - Identificador da entidade Place - user_id - Identificador da entidade usuário - place_label - O atributo place_label da tabela places - latitude - Objeto de localização - longitude - Objeto de localização - radius - Tamanho da geolocalização em metros - address - O atributo address da tabela places - description - O atributo description da tabela places - external_id - ID para integração com sistemas externos (CRM) - custom_fields - Campos adicionais - assigned_datetime - Data e hora da atribuição do ponto de interesse ao usuário

Relacionamentos

Estendido com valores de campos personalizados através de places_text_fields, places_decimal_fields, places_bigint_fields, places_longtext_fields, places_linked_entity_fields

Notas especiais

custom_fields JSONB fornece acesso rápido; tabelas relacionadas permitem filtragem e ordenação por atributos personalizados

chevron-rightgeofence_pointshashtag

Descrição: Coordenadas de vértices ordenadas (campo number determina a sequência) definindo limites do polígono para formas de geofence complexas, possibilitando perímetros geográficos precisos além de zonas circulares simples, usado com PostGIS ST_MakePolygon para operações geométricas

Atributo
Detalhes

Campos-chave

- zone_id - Um ID da zona à qual este formulário está anexado - number - Número sequencial - latitude - Localização - longitude - Localização

Relacionamentos

Múltiplos registros por zone_id definir limites do polígono; number campo determina a ordem dos vértices

Notas especiais

Consultar com ORDER BY number para reconstruir o caminho do polígono; usar com PostGIS ST_MakePolygon para operações geométricas

Gestão de tarefas e fluxo de trabalho

chevron-righttaskshashtag

Descrição: Atribuições de ordens de serviço com validação de localização (latitude, longitude, radius), janelas de tempo (time_from, time_to), requisitos de duração de visita (stay_duration_minutes, arrival_duration_minutes), estrutura hierárquica via parent_task_id e rastreamento de status para gerenciamento de serviços de campo e operações de entrega

Atributo
Detalhes

Campos-chave

- task_id - Identificador da entidade Task - user_id - Identificador da entidade usuário - object_id - Identificador da entidade objeto - parent_task_id - Identificador da entidade Parent task - task_label - O atributo task_label da tabela tasks - status - O valor do atributo status - task_type - Tipo de tarefa: task, route ou checkpoint - latitude - O atributo latitude da tabela tasks - longitude - O atributo longitude da tabela tasks - radius - Tamanho da geolocalização em metros - arrival_datetime - Quando o rastreador chega na área da tarefa. IGNORADO ao criar/atualizar - created_at - O atributo created_at da tabela tasks - status_change_datetime - Data e hora da atualização da tarefa - time_from - A data e hora associadas ao atributo time_from - time_to - A data e hora associadas ao atributo time_to - stay_duration - O atributo stay_duration da tabela tasks - stay_duration_minutes - Duração da visita. O tempo que um trabalhador móvel deve permanecer no local da tarefa para concluir com sucesso a tarefa. Visitas múltiplas são cumulativas - arrival_duration_minutes - Ignorar visitas aleatórias mais curtas que a duração especificada. Ao calcular a duração mínima, visitas mais curtas que a duração especificada serão ignoradas - max_delay_minuts - Atraso aceitável. A quantidade máxima de tempo que um funcionário pode se atrasar. Qualquer tarefa concluída durante esse tempo será marcada como "late" - is_stay_control_enabled - O atributo is_stay_control_enabled da tabela tasks - address - O atributo address da tabela tasks - description - Atributo description da tabela tasks - custom_fields - O atributo custom_fields da tabela tasks - external_id - Identificador de entidade externa - order_sort - O atributo order_sort da tabela tasks - created_by - Fonte da tarefa criada

Conteúdo

Suporta tarefas hierárquicas via parent_task_id; janelas de tempo definidas por time_from/time_to; validação de geofence com localização e radius

Relacionamentos

Vínculos com forms (coleta de dados), task_history (alterações de status), objects (rastreadores atribuídos)

Notas especiais

stay_duration e arrival_duration_minutes habilitam monitoramento de conformidade para tarefas de entrega e serviço

chevron-rightformshashtag

Descrição: Formulários configuráveis de coleta de dados para capturar informações estruturadas durante a conclusão da tarefa ou check-ins no aplicativo móvel, com campos e valores armazenados como JSON, validação opcional de localização (is_submission_in_zone) e requisitos de submissão obrigatória quando anexados a tarefas

Atributo
Detalhes

Campos-chave

- form_id - Identificador da entidade Form - task_id - Um ID da tarefa à qual este formulário está anexado - object_id - Identificador da entidade objeto - form_label - Rótulo do formulário definido pelo usuário - campos - Se true, o formulário só pode ser submetido na zona da tarefa - values - Um mapa com IDs de campo como chaves e objetos field_value como valores. Chave usada para vincular o campo ao seu valor correspondente - submitted_at - Data em que os valores do formulário foram submetidos pela última vez - submission_latitude - Localização na qual os valores do formulário foram submetidos pela última vez - submission_longitude - Localização na qual os valores do formulário foram submetidos pela última vez - submission_address - Localização na qual os valores do formulário foram submetidos pela última vez - is_submission_in_zone - Se true, o formulário só pode ser submetido na zona da tarefa - description - Data em que este formulário foi criado (ou anexado à tarefa) - created_at - Data em que este formulário foi criado (ou anexado à tarefa)

Conteúdo

campos define a estrutura do formulário (JSON); values contém os dados submetidos (JSON)

Relacionamentos

Vínculos com tasks (ordem de serviço associada), objects (remetente), referenciado em checkins

Notas especiais

Flag de validação de localização is_submission_in_zone habilita regras de submissão de formulários baseadas em geofence

chevron-rightcheckinshashtag

Descrição: Registros de presença e atividade baseados em localização submetidos via aplicativo móvel, rastreando horários planejados versus reais de chegada (planned_datetime vs actual_datetime) com coordenadas geográficas e medições de precisão de localização (radius) para relatórios de pontualidade

Atributo
Detalhes

Campos-chave

- checkin_id - Identificador da entidade Checkin - employee_id - O identificador da entidade employee também é o identificador para drivers - object_id - Dispositivo do employee - form_id - Identificador da entidade Form - user_id - Usuário employee - planned_datetime - Horário do dispositivo quando o check-in foi realizado - actual_datetime - Horário do servidor quando a requisição/mensagem foi processada - latitude - Localização na qual os checkins foram submetidos - longitude - Localização na qual os checkins foram submetidos - radius - Erro de posicionamento em um ponto em metros - address - Endereço do check-in - comment - O atributo comment da tabela checkins

Relacionamentos

Conecta empregados a formulários e locais; rastreia desvios do cronograma planejado

Notas especiais

Variação de tempo entre planned_datetime e actual_datetime habilita relatórios de pontualidade; radius define tolerância de localização aceitável

chevron-righttask_historyhashtag

Descrição: Trilha completa de auditoria dos eventos do ciclo de vida da tarefa capturando todas as mudanças de status, atribuições, atualizações e modificações de campo com timestamps (event_datetime), atribuição de usuário e tipos de atividade (create, update, assign, status_change) armazenados no campo payload para conformidade e análise de fluxo de trabalho

Atributo
Detalhes

Campos-chave

- task_history_id - Identificador da entidade Task history - task_id - Identificador da entidade Task - user_id - Identificador da entidade usuário - activity - Operação que ocorreu. Pode ser "create", "update", "assign" ou "status_change" - event_datetime - Data e hora do evento - payload - Depende da operação. Tipicamente, contém campos que foram alterados durante a operação

Conteúdo

Tipos de atividade definidos em description_parameters; payload armazena detalhes específicos do evento (texto)

Notas especiais

Essencial para análise de conclusão de tarefas, relatórios de transição de status e rastreamento de atividade de usuários

Regras e automação

chevron-rightruleshashtag

Descrição: Regras de detecção de eventos com condições de gatilho configuráveis (excesso de velocidade, violações de geofence, limites de sensores, tempo ocioso) armazenadas em parameters (JSONB), e configurações de notificação multicanal (alert_email, alert_sms, alert_phone, is_push_enabled) para monitoramento automatizado e alerta baseado em dados de dispositivo e servidor

Atributo
Detalhes

Campos-chave

- rule_id - Identificador da entidade Rule - object_id - Identificador da entidade objeto - client_id - Identificador da entidade cliente - event_type - O atributo event_type da tabela rules - event_label - O atributo event_label da tabela rules - event_group - O atributo event_group da tabela rules - description - Atributo description da tabela rules - parameters - Parâmetros do evento. Para mais detalhes sobre parâmetros disponíveis, veja Navixy API docsarrow-up-right. - alert_email - E-mail para notificações - alert_sms - Números de telefone para notificações por SMS - alert_phone - Telefones para chamadas de voz - is_push_enabled - Se true, notificações push estão disponíveis - created_at - O atributo created_at da tabela rules - is_deleted - O atributo is_deleted da tabela rules - maximum - Limites aplicados a várias regras. Por exemplo, para a regra de tempo ocioso com o motor ligado em minutos - event_comment1 - O atributo event_comment1 da tabela rules - event_comment2 - O atributo event_comment2 da tabela rules

Conteúdo

Parâmetros da regra (JSONB) definem condições de gatilho; suporta notificações por email, SMS, telefone e push

Relacionamentos

Vincula a objetos via rules2objects, zonas via rules2zones

Notas especiais

event_type define cenário específico de monitoramento (excesso de velocidade, violação de geofence, limite de sensor); maximum campo permite agregação de eventos para alerta baseado em limites

chevron-rightrules2objectshashtag

Descrição: Relação muitos-para-muitos ligando regras a objetos monitorados com customização de parâmetros por objeto via object_params (JSONB), permitindo valores de limite diferentes (por exemplo, limites de velocidade) para cada veículo ou ativo dentro da mesma regra

Atributo
Detalhes

Campos-chave

- rule_id - Identificador da entidade Rule - object_id - Identificador da entidade objeto - param_group_number - O atributo param_group_number da tabela rules2objects - object_params - O atributo object_params da tabela rules2objects

Conteúdo

object_params (JSONB) permite personalização de regras por objeto (por exemplo, limites de velocidade diferentes por veículo)

Notas especiais

Relação muitos-para-muitos permite que uma regra monitore múltiplos objetos com parâmetros diferentes

chevron-rightrules2zoneshashtag

Descrição: Relação muitos-para-muitos associando regras a zonas geofenceadas, permitindo que uma única regra monitore eventos de entrada/saída em múltiplas áreas geográficas para cenários complexos de monitoramento espacial

Atributo
Detalhes

Campos-chave

- rule_id - Identificador da entidade Rule - zone_id - Identificador da entidade Zone

Notas especiais

Relação muitos-para-muitos permite monitoramento multi-zona para uma única regra (por exemplo, alertar ao entrar em qualquer uma de várias áreas restritas)

Status e categorização

chevron-rightstatuseshashtag

Descrição: Definições de status personalizadas dentro de listagens de status, incluindo propriedades de exibição (color para exibição no site, order_sort para posicionamento) usadas para representar estados de trabalho de dispositivo ou empregado com suporte a exclusão lógica via flag is_deleted

Atributo
Detalhes

Campos-chave

- status_id - Identificador da entidade Status - listing_id - Identificador da entidade Listing - status_label - Valor de status do atributo status_label - color - Cor usada para exibição no site - order_sort - Posição de ordenação dentro da listagem de status - is_deleted - O atributo is_deleted da tabela statuses

Relacionamentos

Grupos de status organizados por listing_id (referências status_listings); usado em status_history

Notas especiais

order_sort define sequência de exibição; color permite diferenciação visual em relatórios

chevron-rightstatus_listingshashtag

Descrição: Definições de conjuntos de status controlando quais valores de status estão disponíveis para dispositivos ou empregados, com flags de permissão (is_supervisor_controlled, is_employee_controlled) determinando se supervisores, empregados ou ambos podem alterar valores de status

Atributo
Detalhes

Campos-chave

- status_listing_id - Identificador da entidade Status listing - user_id - Identificador da entidade usuário - status_listing_label - Valor de status do atributo status_listing_label - is_supervisor_controlled - Se true, supervisores podem alterar o status de trabalho, por exemplo usando o aplicativo móvel de monitoramento - is_employee_controlled - Se true, empregados podem alterar seu próprio status de trabalho, por exemplo usando o aplicativo móvel de rastreamento - is_deleted - O atributo is_deleted da tabela status_listings

Relacionamentos

Referenciado por devices.status_listing_id e statuses.listing_id

Notas especiais

Flags de controle determinam quem pode alterar status: somente supervisor, autoatendimento do empregado ou ambos

chevron-rightstatus_historyhashtag

Descrição: Trilha de auditoria de todas as transições de status de dispositivo com timestamps (changed_datetime no dispositivo, server_datetime no servidor), atribuição de usuário (updated_by) e captura de localização (latitude, longitude, address) permitindo análise geográfica de mudanças de status e relatórios de local de início/fim do dia de trabalho

Atributo
Detalhes

Campos-chave

- status_history_id - Identificador da entidade Status history - device_id - Identificador da entidade dispositivo - old_status_id - Identificador da entidade Old status - new_status_id - Identificador da entidade New status - updated_by - A data e hora associadas ao atributo updated_by - changed_datetime - Data e hora de atribuição de um novo status no dispositivo - server_datetime - Data e hora de atribuição do novo status no servidor - latitude - Localização dos dispositivos durante mudanças de status - longitude - Localização dos dispositivos durante mudanças de status - address - Localização dos dispositivos durante mudanças de status

Relacionamentos

Vínculos com devices, statuses (antigo e novo), description_parameters (para updated_by role)

Notas especiais

Captura de localização permite análise geográfica de transições de status; útil para relatórios de local de início/fim do dia de trabalho

chevron-righttagshashtag

Descrição: Rótulos de categorização definidos pelo usuário com codificação de cores que permitem filtragem e busca rápida através de múltiplos tipos de entidade (places, geofences, employees, tasks, trackers, vehicles) para organização flexível

Atributo
Detalhes

Campos-chave

- tag_id - ID da entidade Tag - user_id - Identificador da entidade usuário - tag_label - O atributo tag_label da tabela tags - color - O atributo color da tabela tags

Relacionamentos

Aplicado a entidades via tag_links; escopo definido pelo usuário

Notas especiais

Sistema de categorização flexível suportando múltiplas tags por entidade

Grupos e hierarquia

chevron-rightgroupshashtag

Descrição: Estrutura de agrupamento organizacional para trackers permitindo organização visual na interface do usuário com cores personalizáveis (group_color) e gerenciamento hierárquico em formato de pastas, atualmente servindo função puramente visual

Atributo
Detalhes

Campos-chave

- group_id - Grupo de trackers (ligado por objects.group_id). A divisão em grupos pode ser vista na lista de beacons, por exemplo - client_id - Identificador da entidade cliente - group_label - Título do grupo especificado pelo usuário, 1 a 60 caracteres imprimíveis, ex: "Employees" - group_color - Cor do grupo em formato web (sem #), ex: "FF6DDC". Determina a cor dos marcadores dos trackers no mapa

Relacionamentos

Referenciado por objects.group_id; propriedade do cliente via client_id (referências users)

Notas especiais

Permite organização em formato de pastas de entidades de monitoramento para relatórios e permissões

chevron-rightgroups_objectshashtag

Descrição: Relação muitos-para-muitos entre groups e objects usando chave primária composta (groups_client_id, objects_client_id), permitindo que objetos pertençam a múltiplos grupos simultaneamente para estruturas organizacionais flexíveis

Atributo
Detalhes

Campos-chave

- groups_client_id - Identificador da entidade Client para groups - objects_client_id - Identificador da entidade Client para objects

Notas especiais

Permite que objetos pertençam a múltiplos grupos simultaneamente; consultar com ambos client_id valores para associação ao grupo

Campos personalizados e entidades

chevron-rightentitieshashtag

Descrição: Registro de tipos de entidade definindo quais entidades de negócio suportam campos personalizados e sua estrutura de layout de campos (sections, field_order) armazenada em entity_label (JSONB), permitindo extensão dinâmica de esquema em places, tasks e outras entidades sem mudanças no banco de dados

Atributo
Detalhes

Campos-chave

- entity_id - Identificador da entidade - user_id - Identificador da entidade usuário - entity_label - id - int. Identificador da entidade. type - enum. Atualmente, apenas "place" é suportado. layout - objeto que descreve o layout dos campos para a entidade. sections - array de objetos. Cada seção pode conter um ou mais campos. Deve existir pelo menos uma seção em um layout. label - string. Nome da seção. field_order - array de strings. Campos internos e IDs de campos personalizados (como strings) - builtin_type - O atributo builtin_type da tabela entities

Relacionamentos

Referenciado por custom_fields para definir quais campos personalizados se aplicam a quais tipos de entidade

Notas especiais

builtin_type vincula a description_parameters para classificações de entidade definidas pelo sistema

chevron-rightcustom_fieldshashtag

Descrição: Definições de campos personalizados permitindo extensão dinâmica de esquema para tipos de entidade, com tipos de campo configuráveis (custom_field_type), regras de validação e opções em parameters (JSONB), e flags de obrigatoriedade (is_required) para captura flexível de dados em places, tasks e outras entidades

Atributo
Detalhes

Campos-chave

- custom_field_id - Identificador da entidade Custom field - entity_id - Identificador da entidade - custom_field_label - Nome do campo - custom_field_type - Tipo de dado no campo - description - Descrição do campo - is_required - Isso é obrigatório ou não? - parameters - Parâmetros do campo

Conteúdo

parameters (JSONB) armazena configuração específica do tipo de campo (regras de validação, opções de dropdown, etc.)

Relacionamentos

Define atributos personalizados disponíveis para entidades; o tipo de campo vincula a description_parameters

Notas especiais

Permite extensão dinâmica de esquema sem mudanças no banco de dados; usado extensivamente em places e tasks

Rastreamento histórico

chevron-rightdriver_historyhashtag

Descrição: Trilha completa de auditoria de atribuições de empregado a veículo ao longo do tempo rastreando transições de old_employee_id para new_employee_id com timestamps (changed_datetime, server_datetime), dados de localização (latitude, longitude, address), informações de chave de hardware e atribuição de usuário (updated_by) possibilitando análises específicas por motorista quando motoristas trocam de veículo

Atributo
Detalhes

Campos-chave

- driver_history_id - Identificador da entidade Driver history - object_id - Identificador da entidade objeto - old_employee_id - Identificador da entidade Old employee - new_employee_id - Identificador da entidade New employee - hardware_key - O atributo hardware_key da tabela driver_history - changed_datetime - Data e hora em que as alterações foram feitas no dispositivo - server_datetime - Data e hora das alterações feitas no servidor - updated_by - A data e hora associadas ao atributo updated_by - latitude - O atributo latitude da tabela driver_history - longitude - O atributo longitude da tabela driver_history - address - O atributo address da tabela driver_history

Relacionamentos

Rastreia atribuições de motoristas a veículos ao longo do tempo; vincula a employees e objects

Notas especiais

Essencial para relatórios específicos por motorista quando motoristas trocam de veículos; captura de localização permite análise de local de mudança de atribuição

chevron-rightvehicle_trackers_historyhashtag

Descrição: Trilha de auditoria rastreando quais dispositivos GPS (object_id) foram instalados em quais veículos (vehicle_id) ao longo do tempo com timestamps de mudança (changed_datetime), possibilitando atribuição histórica precisa de dados e cálculo de quilometragem quando trackers são movidos entre veículos

Atributo
Detalhes

Campos-chave

- vehicle_tracker_history_id - Identificador da entidade Vehicle tracker history - vehicle_id - Identificador da entidade veículo - object_id - Identificador da entidade objeto - changed_datetime - A data e hora associadas ao atributo changed_datetime

Relacionamentos

Rastreia qual dispositivo GPS foi instalado em qual veículo ao longo do tempo

Notas especiais

Crítico para análise histórica de dados quando trackers são movidos entre veículos; possibilita atribuição precisa de quilometragem e uso

Dados de referência e consulta

chevron-rightdescription_parametershashtag

Descrição: Dados de referência em todo o sistema fornecendo rótulos legíveis por humanos (description) para valores inteiros enumerados (key) usados em todo o banco de dados, organizados pelo campo type (ex.: task_status, fuel_type, counter_type, entity_classification) para tradução consistente de valores em relatórios e exibição na UI

Atributo
Detalhes

Campos-chave

- key - Valor possível no atributo - type - Um atributo composto consistindo do nome da tabela seguido por um underscore e o nome de um atributo na tabela - description - Valor implícito de um atributo

Conteúdo

Fornece rótulos legíveis por humanos para valores codificados em todo o banco de dados (status de tarefa, tipos de combustível, tipos de contador, etc.)

Relacionamentos

Referenciado via chaves estrangeiras de múltiplas tabelas para categorização padronizada

Notas especiais

Essencial para traduzir códigos inteiros em valores legíveis em relatórios; type grupo de campos relacionados a enumerações

chevron-rightcountershashtag

Descrição: Configurações de odômetro e contador de horas do motor vinculando leituras de sensores do dispositivo (sensor_id) a medições de distância ou tempo com coeficientes multiplicadores para conversão de unidades (km, miles, hours) e counter_type de description_parameters definindo o tipo de medição

Atributo
Detalhes

Campos-chave

- counter_id - ID interno - device_id - Identificador da entidade dispositivo - counter_type - Tipo de contador - sensor_id - Identificador da entidade sensor - multiplier - Coeficiente para converter valores em uma das métricas (km, l, etc.)

Relacionamentos

Vincula dispositivos a leituras de sensores que representam contadores de distância ou tempo

Notas especiais

multiplier converte pulsos de sensores em unidades reais (km, miles, hours); counter_type from description_parameters define o tipo de medição

chevron-rightdevice_output_namehashtag

Descrição: Rótulos personalizados para canais de saída do dispositivo mapeando identificadores numéricos de saída (number) para nomes definidos pelo usuário (label) como "Door Lock" ou "Engine Block" para relatórios legíveis e análise de comandos e estados de saída do dispositivo

Atributo
Detalhes

Campos-chave

- device_id - Identificador da entidade dispositivo - number - O atributo number da tabela device_output_name - label - O atributo label da tabela device_output_name

Conteúdo

Mapeia números de canais de saída para nomes definidos pelo usuário (por exemplo, "Door Lock", "Engine Block")

Notas especiais

Permite relatórios legíveis ao analisar comandos e estados de saída do dispositivo

raw_telematics_data structure

O raw_telematics_data schema contém três tipos principais de tabela que trabalham juntos para fornecer dados abrangentes do dispositivo.

Bronze layer raw telematics data ERD
ERD de dados telemáticos brutos da camada Bronze
circle-info

O diagrama interativo do schema raw_telematics_data está disponível em dbdiagram.io: https://dbdiagram.io/d/v1-schema-telematics-bd-67a0acef263d6cf9a0d8e750arrow-up-right

Encontre detalhes do schema raw telematics data abaixo.

Tabelas-chave por categoria

Cada tabela serve a um propósito específico na captura de diferentes aspectos da informação do dispositivo:

chevron-righttracking_data_corehashtag

Propósito: Dados centrais de localização e movimento

Atributo
Detalhes

Campos-chave

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

Indexação

Otimizado com índice em (device_id, device_time)

Notas especiais

Dados de localização (latitude e longitude) usam formato inteiro com precisão de 10⁷ para desempenho ideal no TimescaleDB A velocidade também é armazenada em inteiro, portanto é necessário dividi-la por 100

chevron-rightinputshashtag

Propósito: Leituras de sensores dos dispositivos

Atributo
Detalhes

Campos-chave

input_id, device_id, device_time, sensor_name, value

Conteúdo

Leituras analógicas (nível de combustível, temperatura, tensão), valores calculados (RPM do motor)

Relacionamentos

chevron-rightstateshashtag

Propósito: Indicadores de status do dispositivo e modos operacionais

Atributo
Detalhes

Campos principais

state_id, device_id, device_time, state_name, value

Conteúdo

Indicadores de modo de operação (trabalhando, inativo, desligado), status de componentes (ignição, portas)

Formato do valor

Valores Booleanos (1/0) ou códigos de status específicos

Os dados neste esquema são ingeridos diretamente dos dispositivos, com latência mínima (tipicamente segundos). O esquema é otimizado para dados de séries temporais usando TimescaleDB para armazenamento e recuperação eficientes.

Informações adicionais

Validação de dados

O banco de dados aplica integridade dos dados por meio de vários mecanismos:

  • Restrições CHECK validam que os valores estejam dentro de intervalos aceitáveis

  • Chaves estrangeiras asseguram que os relacionamentos entre tabelas permaneçam consistentes

  • Restrições NOT NULL garantem que campos obrigatórios sempre tenham valores

  • Valores DEFAULT fornecem um valor de fallback quando os dados não são fornecidos explicitamente

Otimização de consultas

As tabelas são organizadas com estratégias específicas de indexação:

  • Todas as tabelas incluem índices baseados em tempo em record_added_at

  • Colunas de chave estrangeira têm índices dedicados para desempenho em joins

  • Combinações de colunas usadas com frequência possuem índices compostos

  • TimescaleDB fornece índices especializados para consultas de séries temporais

repo estrutura de dados

circle-exclamation

O repo schema fornece um framework abrangente para gerenciar estruturas organizacionais, ativos, dispositivos e seus relacionamentos em ambientes multi-tenant. Construído sobre PostgreSQL 14+ com a extensão ltree, o esquema suporta organizações hierárquicas, definições de campos personalizados para qualquer tipo de entidade, controle de acesso baseado em função com restrições a nível de objeto e trilhas completas de auditoria com rastreamento de alterações a nível de campo. Todas as entidades podem ser estendidas sem modificações no esquema, localizadas para implantações internacionais e vinculadas por meio de relacionamentos polimórficos flexíveis.

O esquema atende cenários complexos de gerenciamento de dados incluindo hierarquias de ativos de frota através de níveis organizacionais, plataformas SaaS multi-tenant que exigem isolamento de dados, operações orientadas por conformidade com requisitos detalhados de auditoria e sistemas que necessitam de modelos de dados dinâmicos adaptáveis por meio de campos personalizados em vez de migrações de banco de dados.

circle-info

O diagrama interativo derepo o esquema de dados está disponível em dbdiagram.io: https://dbdiagram.io/d/Navixy-Repo-data-schema-68ad788c1e7a611967a0930earrow-up-right

Encontre os repo detalhes do esquema abaixo.

Frequência de atualização

Os dados no repo esquema são sincronizados em tempo real com os sistemas de origem. As atualizações ocorrem imediatamente conforme as mudanças acontecem, com trilhas de auditoria capturando todas as modificações para conformidade e análise histórica.

ci_base

O repo esquema usa um padrão Single Table Inheritance para todos os dados de referência por meio do ci_base tabela:

O repo esquema usa um Single Table Inheritance padrão para todos os dados de referência por meio do ci_base tabela. Este design consolida dicionários do sistema, classificações e itens de referência definidos pelo usuário em uma estrutura unificada, oferecendo consistência e flexibilidade em todo o esquema.

Arquitetura:

O ci_base tabela serve como base para todos os dados de referência, usando um discriminator campo para identificar o tipo de referência específico. Cada tipo de referência tem uma tabela correspondente (como ci_device_type, ci_asset_type) que compartilha o mesmo id como ci_base, criando uma relação de herança segura por tipo.

Como as entidades de negócio se conectam ao ci_base:

Todas as entidades de negócio no repo esquema referenciam ci_base subtipos para definir sua classificação e comportamento:

  • organization → referencia ci_organization_type (que herda de ci_entity_typeci_base)

  • user → referencia ci_user_type (que herda de ci_entity_typeci_base)

  • device → referencia ci_device_type e ci_device_status (ambos herdam de ci_base)

  • asset → referencia ci_asset_type (que herda de ci_entity_typeci_base)

  • inventory → referencia ci_inventory_type (que herda de ci_entity_typeci_base)

  • asset_group → referencia ci_asset_group_type (que herda de ci_entity_typeci_base)

Categorias de tipo de referência:

Categoria
Tabelas
Propósito

Configuração do sistema

ci_module, ci_country, ci_role

Defina módulos do sistema, referências geográficas e funções de usuário

Definições de tipo de entidade

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

Classificar todas as entidades de negócio por tipo

Status e classificação

ci_device_status, ci_asset_type_category

Acompanhar estados de entidade e agrupar tipos em categorias

Controle de acesso

ci_permission_scope

Definir quais permissões podem ser concedidas (conectado a ci_module e ci_entity_type)

Relacionamentos

ci_device_relation_type

Definir tipos de relacionamento entre dispositivos (master-slave, backup, etc.)

Categorização

ci_tag, ci_catalog_category

Habilitar marcação flexível e organização de catálogo

chevron-rightPadrões de consulta de exemplohashtag

Tabelas-chave por categoria

As tabelas no repo os schemas são organizados em categorias funcionais. As descrições abaixo resumem as tabelas mais importantes segundo seu propósito de negócio.

chevron-rightorganizationhashtag

Propósito: Gerenciamento de organização hierárquica

Atributo
Detalhes

Campos-chave

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

Indexação

Índice GiST em path para consultas hierárquicas, índices em parent_id e organization_type_id

Notas especiais

Usa ltree para hierarquias multinível, herda de customizable_entity para suporte a campos personalizados

chevron-rightuserhashtag

Propósito: Contas de usuário e autenticação

Atributo
Detalhes

Campos-chave

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

Indexação

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

Notas especiais

Integração com provedores de identidade externos (Keycloak, Auth0, Okta), herda de customizable_entity

chevron-rightdevicehashtag

Propósito: Dispositivos físicos de rastreamento

Atributo
Detalhes

Campos-chave

id, organization_id, device_type_id, status_id, hw_id, label

Indexação

Índices em organization_id, device_type_id, status_id, hw_id

Notas especiais

Identificador de hardware para rastreamento de dispositivo, herda de customizable_entity para campos personalizados

chevron-rightassethashtag

Propósito: Ativos físicos ou virtuais

Atributo
Detalhes

Campos-chave

id, organization_id, asset_type_id, label, description

Indexação

Índices em organization_id e asset_type_id

Notas especiais

Herda de customizable_entity, vinculado a dispositivos via device_asset_link

chevron-rightinventoryhashtag

Propósito: Registros de inventário e armazém

Atributo
Detalhes

Campos-chave

id, organization_id, inventory_type_id, code

Indexação

Índice único em (organization_id, code)

Notas especiais

Códigos únicos dentro da organização, vinculados a dispositivos via device_inventory_link

chevron-rightasset_grouphashtag

Propósito: Agrupamento de ativos com histórico

Atributo
Detalhes

Campos-chave

id, organization_id, group_type_id, title_en, description

Relacionamentos

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 especiais

Membros baseados em tempo via asset_group_item, consultar membros atuais com WHERE detached_at IS NULL

chevron-rightcustom_field_defhashtag

Propósito: Definições de campo personalizado e metadados

Atributo
Detalhes

Campos-chave

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

Conteúdo

Tipos de campo incluem text, number, boolean, date, datetime, entity_ref, catalog_item_ref

Notas especiais

Permite campos personalizados flexíveis para qualquer tipo de entidade, valores armazenados em tabelas específicas por tipo custom_field_value_* tabelas

chevron-rightacl_role_permissionhashtag

Propósito: Gerenciamento de permissões baseado em função

Atributo
Detalhes

Campos-chave

id, role_id, permission_scope_id, target_entity_id, actions

Conteúdo

Máscara de ação (READ=1, UPDATE=2, DELETE=4, CREATE=8), permissões específicas por alvo ou por tipo de entidade

Relacionamentos

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 especiais

Funciona com user_role e acl_user_scope para determinar permissões finais do usuário

chevron-rightaudit_eventhashtag

Propósito: Registro unificado de auditoria para todas as mudanças do sistema

Atributo
Detalhes

Campos-chave

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

Indexação

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

Notas especiais

Particionado por occurred_at (mensal), duas categorias: auth (autenticação) e domain (eventos de negócio), armazena deltas de alteração ao nível de campo em event_data JSONB

Relacionamentos de dados

O repo o schema implementa padrões de relacionamento sofisticados para modelagem de dados flexível:

Estruturas hierárquicas

  • Organizações usam caminhos ltree para consultas de árvore eficientes

  • Itens de referência (ci_base) suportam hierarquias opcionais

  • Manutenção automática de path via triggers do banco de dados

Padrões de herança

  • Herança de tabela: customizable_entity → entidades de negócio (organization, user, device, asset, inventory, asset_group)

  • Herança de ID: ci_base → tabelas de tipo de referência

  • Discriminação de tipo via entity_type_id e discriminator campos

Relacionamentos polimórficos

Certas tabelas usam referências polimórficas sem restrições de chave estrangeira para máxima flexibilidade:

  • acl_role_permission.target_entity_id → qualquer customizable_entity

  • acl_user_scope.target_entity_id → qualquer customizable_entity

  • entity_tag.entity_id → qualquer customizable_entity

Esses relacionamentos são validados no nível da aplicação.

Informações adicionais

Validação de dados

O repo o schema aplica integridade de dados através de múltiplos mecanismos:

Restrições do banco de dados

  • Restrições UNIQUE com suporte a exclusão suave (índices parciais WHERE deleted_at IS NULL)

  • Restrições CHECK (por exemplo, device_relation garante master_idslave_id)

  • Restrições NOT NULL em campos obrigatórios

  • Valores DEFAULT para timestamps e flags booleanos

Validação no nível da aplicação

  • Validação de tipo de entidade para referências polimórficas

  • Validação de catálogo para referências de campo personalizado

  • Validação de tipo de campo personalizado

  • Gerenciamento de arrays para campos multi-valor

Otimização de consultas

As tabelas são organizadas com estratégias específicas de indexação:

Índices padrão:

  • Todas as chaves estrangeiras têm índices dedicados

  • Índices baseados em tempo em created_at, updated_at, deleted_at

  • Índices compostos para colunas frequentemente unidas

Índices especializados:

  • Índices GiST em caminhos ltree para consultas hierárquicas

  • Índices únicos parciais suportando exclusão suave

  • Índices de valor de campo personalizado para filtragem e ordenação

  • Índices de evento de auditoria por tempo + entidade para pesquisas eficientes

Considerações de desempenho:

  • Pool de conexões recomendado (PgBouncer)

  • Manutenção regular VACUUM para tabelas grandes

  • Possível particionamento futuro para device tabela por organization_id

  • Views materializadas para cálculos complexos de controle de acesso

Atualizado

Isto foi útil?