| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- # Servidor
- PORT=3001
- CORS_ORIGIN=http://localhost:5173
- # Autenticação (jwt ou none)
- AUTH_MODE=jwt
- JWT_SECRET=coloque-um-segredo-longo-e-aleatorio-aqui
- JWT_ISSUER=oraculo-api
- JWT_ACCESS_TTL_SECONDS=900
- JWT_REFRESH_TTL_SECONDS=2592000
- # TTL do refresh token quando rememberMe=false/ausente no login (default 1 dia).
- JWT_REFRESH_TTL_SHORT_SECONDS=86400
- # API Key alternativa (opcional, deixar vazio para usar só JWT)
- API_KEY=
- # Banco de dados MySQL
- DB_HOST=localhost
- DB_PORT=3306
- DB_USER=usuario
- DB_PASS=senha
- DB_SCHEMA=oraculo
- # SSL para conexão MySQL (recomendado em produção). Deixe ambos vazios para desativar
- # SSL (comportamento padrão em dev local). DB_SSL_REJECT_UNAUTHORIZED=true valida o
- # certificado do servidor; DB_SSL_CA aponta para um arquivo de certificado CA (ex.:
- # ./certs/rds-ca.pem) se o servidor usar um certificado não confiável publicamente.
- DB_SSL_REJECT_UNAUTHORIZED=true
- DB_SSL_CA=
- # Qdrant (vector DB)
- QDRANT_URL=http://localhost:6333
- QDRANT_COLLECTION=oraculo_docs
- QDRANT_API_KEY=
- # Ollama
- OLLAMA_URL=http://localhost:11434
- OLLAMA_EMBEDDINGS_MODEL=nomic-embed-text
- OLLAMA_CHAT_MODEL=llama3
- OLLAMA_VISION_MODEL=llava
- # Timeout (ms) para chamadas não-streaming ao Ollama (chat/embeddings). Sem isso, uma
- # chamada travada (modelo sobrecarregado, processo do Ollama pendurado) nunca resolve
- # nem rejeita — trava indefinidamente locks como o de avaliação em lote de atendimentos.
- OLLAMA_TIMEOUT_MS=180000
- # Prefixos opcionais prependados ao texto antes de gerar embedding (útil para modelos
- # assimétricos que recomendam prefixo diferente para query de busca e passagem indexada,
- # ex.: "search_query: "/"search_document: " no nomic-embed-text, "query: "/"passage: " em
- # modelos da família e5). Deixe vazio se o modelo não precisar. Validar empiricamente com
- # backend/scripts/evalRetrieval.mjs antes de habilitar em produção.
- OLLAMA_EMBED_QUERY_PREFIX=
- OLLAMA_EMBED_PASSAGE_PREFIX=
- # RAG (valores padrão se não definidos)
- RAG_TOP_K=8
- RAG_CHUNK_SIZE=900
- RAG_CHUNK_OVERLAP=150
- # Quantidade de mensagens recentes do histórico incluídas no prompt de rewrite/chat.
- RAG_HISTORY_LIMIT=6
- # Rate limiting por IP (0 = desativado). Recomendado manter >0 em produção — sem isso
- # o middleware de rate limit vira um no-op e o /api fica sem proteção contra abuso.
- RATE_LIMIT_PER_MINUTE=60
- # Ajuste fino das respostas do LLM
- LLM_TEMPERATURE=0.2
- LLM_TOP_P=0.9
- LLM_NUM_PREDICT=2048
- LLM_REPEAT_PENALTY=1.1
- # RAG avançado
- RAG_QUERY_REWRITE=false
- RAG_MIN_SCORE=0.40
- RAG_RERANK=false
- RAG_RERANK_TOP_N=8
- # HyDE (Hypothetical Document Embeddings): gera um trecho hipotético de resposta via LLM
- # e usa ele (em vez da query crua) para o embedding de busca, o que tende a elevar o score
- # de similaridade porque vira matching passagem-passagem. Custa uma chamada LLM extra por
- # pergunta. Validar com backend/scripts/evalRetrieval.mjs antes de habilitar em produção.
- RAG_HYDE=false
- # Chatbot ifbot (sincronização de atendimentos)
- IFBOT_BASE_URL=https://star.ifbot.com.br/api
- IFBOT_TOKEN=
- # IFBOT_AUTH_HEADER=Authorization
- ATENDIMENTOS_SYNC_INTERVAL_MINUTES=30
|