Skip to content

Modelagem de Dados (Models)

A camada de banco de dados do sistema utiliza o Eloquent ORM. Os models são divididos entre o núcleo do catálogo, telemetria de buscas e auditoria de integrações.

1. Catálogo e Motor de Busca

Arquivo: WakeProduct.php

Este é o model central do sistema, conectando o banco PostgreSQL ao Meilisearch através da trait Searchable do Laravel Scout. Ele implementa estratégias avançadas para evitar sobrecarga de memória no servidor:

  • Tipagem de Dados (Casts): Converte automaticamente o campo raw_data e vector_embedding para arrays nativos do PHP, além de tratar availability como booleano e api_updated_at como data.
  • Cache em Memória (Anti Full-Table-Scan): Possui o método estático carregarVoltagens() que realiza uma única consulta ao banco com selectRaw, buscando apenas as chaves produtoId e atributos. Isso monta um cache em memória estática ($voltagemCache) para agrupar as voltagens disponíveis sem estourar a memória RAM durante a indexação em massa.
  • Filtro de Indexação (shouldBeSearchable): Atua como o porteiro do Meilisearch. Exige que a URL contenha o segmento /produto/. Exige também que a chave exibirSite ou valido seja verdadeira no JSON original.
  • Mapeamento de Busca (toSearchableArray): * Extrai apenas o nome das categorias do array original.
    • Remove as tags HTML das descrições utilizando strip_tags() e concatena o texto na propriedade informacoes_tecnicas_full.
    • Calcula o percentual_desconto dinamicamente se o preço antigo for maior que o preço atual.
    • Injeta os dados da inteligência artificial: transfere tags_ia para o índice e mapeia o vetor de contexto para _vectors['default'].

2. Telemetria e Auditoria

Gravação de Webhooks

Arquivo: WebhookLog.php

  • Responsável por manter o histórico de cargas da API.
  • Permite preenchimento em massa (fillable) das colunas provider, event_type e payload.
  • Converte automaticamente a coluna payload para array através da propriedade $casts.

Gravação de Buscas dos Usuários

Arquivo: LogBusca.php

  • Model mapeado explicitamente para a tabela logs_busca.
  • Otimizado para inserções rápidas de log desabilitando a constante UPDATED_AT (definida como null), mantendo apenas a data de criação.
  • Registra informações como termo, motivo, total_encontrado e url_origem.

3. Autenticação

Arquivo: User.php

  • Model padrão do Laravel utilizado para acesso ao painel administrativo.
  • Aplica casting de hash para senhas e protege a exibição do token de lembrete nas serializações.