Skip to content

Base de Dados e Migrações

A estrutura da base de dados PostgreSQL é gerida através das migrações do Laravel. O esquema foi desenhado para suportar a flexibilidade de dados de APIs externas (através do formato JSONB) e a indexação nativa para o motor de IA.

1. Catálogo de Produtos (A Evolução da Base)

A tabela central wake_products foi criada e expandida de forma modular para não comprometer os dados existentes:

  • Estrutura Base: A migração de criação define o produto_variante_id como identificador único e indexa o sku e a brand para consultas rápidas locais. O grande diferencial arquitetural é a utilização de uma coluna jsonb nativa do PostgreSQL para o campo raw_data. Isso permite que a aplicação guarde o payload original completo da Wake sem necessidade de criar dezenas de colunas físicas.
  • Evolução de Navegação: Uma migração posterior adicionou o campo url logo a seguir ao sku para suportar as regras de indexação (o "Porteiro" do Meilisearch).
  • Preparação para a Inteligência Artificial: A migração final da tabela preparou o terreno para o hardware local, adicionando a coluna de texto tags_ia (para guardar os sinónimos gerados pelo modelo LLaMA) e a coluna vector_embedding do tipo json para guardar as matrizes matemáticas geradas pelo modelo Mxbai.

2. Auditoria e Telemetria

Os dados operacionais e de utilização têm as suas próprias tabelas otimizadas:

  • Tabela de Webhooks (webhook_logs): Criada para suportar a rastreabilidade das integrações com o n8n e a Wake. Utiliza uma coluna payload também estruturada em jsonb, permitindo consultas complexas sobre o histórico de dados recebidos no formato original.
  • Tabela de Telemetria (logs_busca): Armazena o comportamento dos utilizadores, registando o termo procurado, a url_origem, o total_encontrado e o motivo da falha de conversão. Não possui a coluna nativa updated_at, visando maximizar a velocidade de escrita (Insert) em momentos de pico.

3. Infraestrutura Assíncrona e Cache

Para suportar o Laravel Horizon, o Redis e o sistema de "Debounce" (evitar sobrecarga de webhooks idênticos), as migrações nativas do Laravel foram implementadas:

  • Filas (Queues): A criação das tabelas jobs, job_batches e failed_jobs estrutura a persistência e rastreio de tarefas assíncronas que falharam, capturando a exception ocorrida para posterior análise.
  • Cache e Locks: As tabelas cache e cache_locks foram construídas para garantir atomicidade. São elas que permitem ao Job ProcessWakeWebhook colocar um bloqueio (lock) temporário num ID de produto que já está a ser atualizado, evitando concorrência.

4. Segurança e Acessos

O alicerce de segurança do painel administrativo conta com: * As tabelas padrão do Laravel: users (credenciais e tokens de lembrete), password_reset_tokens e sessions (onde é registado o endereço de IP e o User-Agent de quem efetua o login). * A tabela personal_access_tokens implementada para futuras emissões de tokens de API (ex: integração com serviços de terceiros), suportando um sistema polimórfico (tokenable) com rastreio de expiração (expires_at) e última utilização (last_used_at).