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_dataevector_embeddingpara arrays nativos do PHP, além de trataravailabilitycomo booleano eapi_updated_atcomo data. - Cache em Memória (Anti Full-Table-Scan): Possui o método estático
carregarVoltagens()que realiza uma única consulta ao banco comselectRaw, buscando apenas as chavesprodutoIdeatributos. 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 chaveexibirSiteouvalidoseja 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 propriedadeinformacoes_tecnicas_full. - Calcula o
percentual_descontodinamicamente se o preço antigo for maior que o preço atual. - Injeta os dados da inteligência artificial: transfere
tags_iapara o índice e mapeia o vetor de contexto para_vectors['default'].
- Remove as tags HTML das descrições utilizando
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 colunasprovider,event_typeepayload. - Converte automaticamente a coluna
payloadpara 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 comonull), mantendo apenas a data de criação. - Registra informações como
termo,motivo,total_encontradoeurl_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.