Setup — Backend
Pré-requisitos
Variáveis de ambiente
Crie o arquivo backend/.env com base nas variáveis abaixo:
Servidor
| Variável |
Descrição |
Exemplo |
PORT |
Porta HTTP da API |
3001 |
CORS_ORIGIN |
Origem permitida pelo CORS |
http://localhost:5173 |
API_KEY |
Chave de API opcional |
— |
RATE_LIMIT_PER_MINUTE |
Limite de requisições por minuto (0 desativa) |
0 |
Banco de dados (MySQL)
| Variável |
Descrição |
Exemplo |
DB_HOST |
Host do MySQL |
localhost |
DB_PORT |
Porta do MySQL |
3306 |
DB_USER |
Usuário do banco |
root |
DB_PASS |
Senha do banco |
senha |
DB_SCHEMA |
Nome do schema/database |
oracle |
Qdrant (busca vetorial)
| Variável |
Descrição |
Exemplo |
QDRANT_URL |
URL do Qdrant |
http://localhost:6333 |
QDRANT_COLLECTION |
Nome da collection (default no código: oraculo_docs) |
empresa_docs |
QDRANT_API_KEY |
Chave de API do Qdrant (opcional) |
— |
Ollama (LLM local)
| Variável |
Descrição |
Exemplo |
OLLAMA_URL |
URL do Ollama |
http://localhost:11434 |
OLLAMA_EMBEDDINGS_MODEL |
Modelo para embeddings |
nomic-embed-text |
OLLAMA_CHAT_MODEL |
Modelo para chat |
llama3.1 |
OLLAMA_VISION_MODEL |
Modelo de visão (default llava:latest) |
llava:latest |
RAG
| Variável |
Descrição |
Exemplo |
RAG_QUERY_REWRITE |
Reescrever query antes da busca |
true |
RAG_HISTORY_TOKEN_BUDGET |
Tokens de histórico enviados ao LLM |
1500 |
RAG_TOP_K |
Número de chunks recuperados (default 8) |
8 |
RAG_MIN_SCORE |
Score mínimo de similaridade (default 0.40) |
0.40 |
RAG_CHUNK_SIZE |
Tamanho de cada chunk (caracteres) |
900 |
RAG_CHUNK_OVERLAP |
Sobreposição entre chunks |
150 |
LLM (parâmetros de geração)
| Variável |
Descrição |
Exemplo |
LLM_TEMPERATURE |
Criatividade das respostas (0–1); baixo = mais fiel à fonte (default 0.2) |
0.2 |
LLM_TOP_P |
Nucleus sampling |
0.9 |
LLM_NUM_PREDICT |
Máximo de tokens gerados |
2048 |
LLM_REPEAT_PENALTY |
Penalidade de repetição |
1.1 |
Autenticação (JWT)
| Variável |
Descrição |
Exemplo |
AUTH_MODE |
Modo de auth (jwt ou none) |
jwt |
JWT_SECRET |
Chave secreta para assinar tokens |
trocar-em-producao |
JWT_ISSUER |
Issuer do token |
oraculo-api |
JWT_ACCESS_TTL_SECONDS |
Duração do access token em segundos |
900 (15 min) |
JWT_REFRESH_TTL_SECONDS |
Duração do refresh token em segundos |
2592000 (30 dias) |
Atenção: AUTH_MODE=none desativa a autenticação completamente. Nunca usar em produção.
Rodando localmente
# Criar as tabelas no banco (rodar uma vez ou após novas migrations)
npm run migrate:latest
# Modo desenvolvimento (hot reload)
npm run dev
# Modo produção
npm start
A API estará disponível em http://localhost:3001.
Para verificar o status dos serviços:
GET http://localhost:3001/health
Comandos disponíveis
| Comando |
Descrição |
npm run dev |
Inicia com hot reload (node --watch) |
npm start |
Inicia sem hot reload |
npm run migrate:latest |
Aplica todas as migrations pendentes |
npm run migrate:rollback |
Reverte a última migration |
npm run seed:run |
Executa os seeds do banco |