Banco de Dados
PostgreSQL no Supabase, acessado via pg.Pool direto (sem ORM) em backend/src/services/database.ts. Quatro tabelas, definidas em backend/src/database/init.sql:
documentos_rag (especialidade, titulo, conteudo, embedding vector(768)) é uma base de conhecimento independente — não referencia sessão nenhuma. Veja RAG vetorial.
Tabelas
sessoes— estado da triagem em andamento: qual agente/especialidade está atendendo, os dados já coletados e os pendentes. Só existe uma sessãoPENDENTEpor profissional por vez; quando o caso fecha (FINALIZADO/NAO_ELEGIVEL), a próxima mensagem cria uma sessão nova.mensagens— histórico completo da conversa, com telemetria (modelo usado, tokens de prompt e de resposta) e a colunafontes_rag, que guarda quais trechos da Nota Técnica embasaram cada resposta do bot.encaminhamentos— o produto final: o registro estruturado do encaminhamento, pronto para ser usado no SISREG.documentos_rag— a base vetorial das Notas Técnicas, populada pelo script de ingestão (veja RAG vetorial).
Índices
- Índice HNSW (
vector_cosine_ops) emdocumentos_rag.embeddingpara busca vetorial rápida. - Índices GIN em colunas JSONB (
dados_coletados,dados_estruturados) para consultas dentro do JSON. - Índices B-Tree comuns em chaves estrangeiras e em
sessoes.status/sessoes.profissional_id.