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_idcomo identificador único e indexa oskue abrandpara consultas rápidas locais. O grande diferencial arquitetural é a utilização de uma colunajsonbnativa do PostgreSQL para o camporaw_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
urllogo a seguir aoskupara 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 colunavector_embeddingdo tipojsonpara 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 colunapayloadtambém estruturada emjsonb, permitindo consultas complexas sobre o histórico de dados recebidos no formato original. - Tabela de Telemetria (
logs_busca): Armazena o comportamento dos utilizadores, registando otermoprocurado, aurl_origem, ototal_encontradoe omotivoda falha de conversão. Não possui a coluna nativaupdated_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_batchesefailed_jobsestrutura a persistência e rastreio de tarefas assíncronas que falharam, capturando aexceptionocorrida para posterior análise. - Cache e Locks: As tabelas
cacheecache_locksforam construídas para garantir atomicidade. São elas que permitem ao JobProcessWakeWebhookcolocar 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).