|
@@ -1,6 +1,16 @@
|
|
|
|
|
+# Ambiente. Só "development" expõe a mensagem de erros 500 (mysql2, Ollama...) na resposta
|
|
|
|
|
+# HTTP; qualquer outro valor (ou vazio) responde "internal_error". "production" também
|
|
|
|
|
+# bloqueia o WHATSAPP_WEBHOOK_SKIP_SIGNATURE.
|
|
|
|
|
+NODE_ENV=development
|
|
|
|
|
+
|
|
|
# Servidor (valores abaixo já são o padrão do código — só setar para sobrescrever)
|
|
# Servidor (valores abaixo já são o padrão do código — só setar para sobrescrever)
|
|
|
# PORT=3001
|
|
# PORT=3001
|
|
|
# CORS_ORIGIN=http://localhost:5173
|
|
# CORS_ORIGIN=http://localhost:5173
|
|
|
|
|
+# Atrás de proxy reverso (nginx, etc.): número de saltos confiáveis (ex.: 1). Sem isso o
|
|
|
|
|
+# rate limit e o bloqueio de login veem o IP do proxy para todo mundo. Padrão: desligado.
|
|
|
|
|
+# TRUST_PROXY=1
|
|
|
|
|
+# Timeout padrão (ms) de chamadas HTTP de saída (WhatsApp, download de áudio do ifbot...)
|
|
|
|
|
+# HTTP_DEFAULT_TIMEOUT_MS=15000
|
|
|
|
|
|
|
|
# Autenticação. AUTH_MODE=jwt precisa ficar explícito: o padrão do código é "none"
|
|
# Autenticação. AUTH_MODE=jwt precisa ficar explícito: o padrão do código é "none"
|
|
|
# (sem autenticação nenhuma) — não deixar essa linha comentada em produção.
|
|
# (sem autenticação nenhuma) — não deixar essa linha comentada em produção.
|
|
@@ -32,6 +42,7 @@ DB_SSL_CA=
|
|
|
# Qdrant (vector DB) — valores abaixo já são o padrão do código
|
|
# Qdrant (vector DB) — valores abaixo já são o padrão do código
|
|
|
# QDRANT_URL=http://localhost:6333
|
|
# QDRANT_URL=http://localhost:6333
|
|
|
# QDRANT_COLLECTION=oraculo_docs
|
|
# QDRANT_COLLECTION=oraculo_docs
|
|
|
|
|
+# QDRANT_TIMEOUT_MS=120000
|
|
|
QDRANT_API_KEY=
|
|
QDRANT_API_KEY=
|
|
|
|
|
|
|
|
# Ollama — valores abaixo já são o padrão do código
|
|
# Ollama — valores abaixo já são o padrão do código
|
|
@@ -43,6 +54,8 @@ QDRANT_API_KEY=
|
|
|
# já é "star-atendente" no código mesmo sem essa variável — só setar se publicar
|
|
# já é "star-atendente" no código mesmo sem essa variável — só setar se publicar
|
|
|
# o modelo fine-tuned com outro nome no Ollama.
|
|
# o modelo fine-tuned com outro nome no Ollama.
|
|
|
# OLLAMA_ATENDENTE_MODEL=star-atendente
|
|
# OLLAMA_ATENDENTE_MODEL=star-atendente
|
|
|
|
|
+# Modelo usado como juiz na avaliação de atendimentos; vazio = OLLAMA_CHAT_MODEL.
|
|
|
|
|
+# OLLAMA_JUDGE_MODEL=
|
|
|
# Timeout (ms) para chamadas não-streaming ao Ollama (chat/embeddings) — já é o padrão do
|
|
# Timeout (ms) para chamadas não-streaming ao Ollama (chat/embeddings) — já é o padrão do
|
|
|
# código. Sem esse limite, uma chamada travada (modelo sobrecarregado, processo do Ollama
|
|
# código. Sem esse limite, uma chamada travada (modelo sobrecarregado, processo do Ollama
|
|
|
# pendurado) nunca resolve nem rejeita — trava indefinidamente locks como o de avaliação
|
|
# pendurado) nunca resolve nem rejeita — trava indefinidamente locks como o de avaliação
|
|
@@ -81,6 +94,11 @@ RATE_LIMIT_PER_MINUTE=60
|
|
|
# LLM_TOP_P=0.9
|
|
# LLM_TOP_P=0.9
|
|
|
LLM_NUM_PREDICT=2048
|
|
LLM_NUM_PREDICT=2048
|
|
|
# LLM_REPEAT_PENALTY=1.1
|
|
# LLM_REPEAT_PENALTY=1.1
|
|
|
|
|
+# Janela de contexto (tokens) do chat e do modo atendimentos (prompts bem maiores)
|
|
|
|
|
+# LLM_NUM_CTX=8192
|
|
|
|
|
+# LLM_ATENDIMENTOS_NUM_CTX=32768
|
|
|
|
|
+# Limite de tokens das chamadas auxiliares (rewrite, HyDE, rerank, roteamento)
|
|
|
|
|
+# LLM_AUX_NUM_PREDICT=400
|
|
|
|
|
|
|
|
# RAG avançado — valores abaixo já são o padrão do código (tudo desligado)
|
|
# RAG avançado — valores abaixo já são o padrão do código (tudo desligado)
|
|
|
# RAG_QUERY_REWRITE=false
|
|
# RAG_QUERY_REWRITE=false
|
|
@@ -114,6 +132,22 @@ IFBOT_TOKEN=
|
|
|
# habilita a busca vetorial no modo "atendimentos" do chat — deixar false até calibrar
|
|
# habilita a busca vetorial no modo "atendimentos" do chat — deixar false até calibrar
|
|
|
# ATENDIMENTOS_RAG_MIN_SCORE com perguntas reais após o backfill inicial
|
|
# ATENDIMENTOS_RAG_MIN_SCORE com perguntas reais após o backfill inicial
|
|
|
# ATENDIMENTOS_RAG_SEARCH_ENABLED=false
|
|
# ATENDIMENTOS_RAG_SEARCH_ENABLED=false
|
|
|
|
|
+# HyDE e rerank na busca do modo atendimentos (rerank ligado por padrão)
|
|
|
|
|
+# ATENDIMENTOS_RAG_HYDE=false
|
|
|
|
|
+# ATENDIMENTOS_RAG_RERANK=true
|
|
|
|
|
+# ATENDIMENTOS_RAG_RERANK_TOP_N=10
|
|
|
|
|
+
|
|
|
|
|
+# Sugestão de resposta ao atendente (ConversasWhatsapp) — valores abaixo já são o padrão do código
|
|
|
|
|
+# ATENDENTE_SUGESTAO_HISTORY_LIMIT=20
|
|
|
|
|
+# ATENDENTE_SUGESTAO_MAX_CHARS=8000
|
|
|
|
|
+# ATENDENTE_SUGESTAO_GUARDRAIL=true
|
|
|
|
|
+# ATENDENTE_SUGESTAO_RAG_ENABLED=true
|
|
|
|
|
+# "nenhum" (padrão), "avaliacao" (resumos de avaliações) ou "conversa" (trechos anonimizados)
|
|
|
|
|
+# ATENDENTE_SUGESTAO_RAG_TIPO=nenhum
|
|
|
|
|
+# ATENDENTE_SUGESTAO_RAG_TOP_K=3
|
|
|
|
|
+# ATENDENTE_SUGESTAO_RAG_MIN_SCORE=0.5
|
|
|
|
|
+# ATENDENTE_SUGESTAO_RAG_MAX_CHARS_POR_HIT=600
|
|
|
|
|
+# ATENDENTE_SUGESTAO_RAG_MAX_CHARS_POR_HIT_CONVERSA=900
|
|
|
|
|
|
|
|
# WhatsApp Cloud API (Meta) — usada pelo chat de Atendimentos (/api/conversas) e pelo
|
|
# WhatsApp Cloud API (Meta) — usada pelo chat de Atendimentos (/api/conversas) e pelo
|
|
|
# webhook em /webhooks/whatsapp (fora de /api, sem JWT — protegido por hub.verify_token
|
|
# webhook em /webhooks/whatsapp (fora de /api, sem JWT — protegido por hub.verify_token
|
|
@@ -125,7 +159,9 @@ IFBOT_TOKEN=
|
|
|
# - WHATSAPP_VERIFY_TOKEN: valor arbitrário definido por você — cole o mesmo valor no
|
|
# - WHATSAPP_VERIFY_TOKEN: valor arbitrário definido por você — cole o mesmo valor no
|
|
|
# painel da Meta em WhatsApp → Configuration → Webhook → "Verify token"
|
|
# painel da Meta em WhatsApp → Configuration → Webhook → "Verify token"
|
|
|
# - WHATSAPP_APP_SECRET: aba "App settings → Basic", campo "App Secret" — valida a
|
|
# - WHATSAPP_APP_SECRET: aba "App settings → Basic", campo "App Secret" — valida a
|
|
|
-# assinatura X-Hub-Signature-256 dos eventos recebidos; vazio desativa a validação
|
|
|
|
|
|
|
+# assinatura X-Hub-Signature-256 dos eventos recebidos. Vazio = o webhook RECUSA todos os
|
|
|
|
|
+# eventos (401), a menos que WHATSAPP_WEBHOOK_SKIP_SIGNATURE=true e NODE_ENV != production
|
|
|
|
|
+# (só para testar localmente sem o App Secret)
|
|
|
# - WHATSAPP_BUSINESS_ACCOUNT_ID (opcional, não usado ainda): mesma tela do API Setup,
|
|
# - WHATSAPP_BUSINESS_ACCOUNT_ID (opcional, não usado ainda): mesma tela do API Setup,
|
|
|
# reservado para gestão de templates/perfil de negócio no futuro
|
|
# reservado para gestão de templates/perfil de negócio no futuro
|
|
|
# WHATSAPP_API_VERSION já é o padrão do código
|
|
# WHATSAPP_API_VERSION já é o padrão do código
|
|
@@ -134,6 +170,7 @@ WHATSAPP_PHONE_NUMBER_ID=
|
|
|
WHATSAPP_TOKEN=
|
|
WHATSAPP_TOKEN=
|
|
|
WHATSAPP_VERIFY_TOKEN=
|
|
WHATSAPP_VERIFY_TOKEN=
|
|
|
WHATSAPP_APP_SECRET=
|
|
WHATSAPP_APP_SECRET=
|
|
|
|
|
+# WHATSAPP_WEBHOOK_SKIP_SIGNATURE=false
|
|
|
# WHATSAPP_BUSINESS_ACCOUNT_ID=
|
|
# WHATSAPP_BUSINESS_ACCOUNT_ID=
|
|
|
|
|
|
|
|
# Integrador IXC (Alfred) — usadas só pelo seed (npm run seed:run), que provisiona a
|
|
# Integrador IXC (Alfred) — usadas só pelo seed (npm run seed:run), que provisiona a
|
|
@@ -162,6 +199,7 @@ WHISPER_TRANSCRICAO_ENABLED=false
|
|
|
# WHISPER_BINARY_PATH=whisper-cli
|
|
# WHISPER_BINARY_PATH=whisper-cli
|
|
|
# WHISPER_FFMPEG_PATH=ffmpeg
|
|
# WHISPER_FFMPEG_PATH=ffmpeg
|
|
|
# WHISPER_MODEL_PATH=whisper_models/ggml-small.bin
|
|
# WHISPER_MODEL_PATH=whisper_models/ggml-small.bin
|
|
|
|
|
+# WHISPER_VAD_MODEL_PATH=whisper_models/ggml-silero-vad.bin
|
|
|
# WHISPER_TIMEOUT_MS=60000
|
|
# WHISPER_TIMEOUT_MS=60000
|
|
|
# WHISPER_THREADS=4
|
|
# WHISPER_THREADS=4
|
|
|
|
|
|
|
@@ -170,8 +208,11 @@ WHISPER_TRANSCRICAO_ENABLED=false
|
|
|
# e travam um Mac de 16GB — prefira lotes pequenos e espaçados para deixar o backend ligado.
|
|
# e travam um Mac de 16GB — prefira lotes pequenos e espaçados para deixar o backend ligado.
|
|
|
# ATENDIMENTOS_AVALIACAO_BATCH=20
|
|
# ATENDIMENTOS_AVALIACAO_BATCH=20
|
|
|
# ATENDIMENTOS_AVALIACAO_INTERVAL_MINUTES=30
|
|
# ATENDIMENTOS_AVALIACAO_INTERVAL_MINUTES=30
|
|
|
|
|
+# Máximo de caracteres da conversa enviados ao juiz
|
|
|
|
|
+# ATENDIMENTOS_AVALIACAO_MAX_CHARS=12000
|
|
|
# Janela "HH-HH" (fuso de São Paulo) em que esses jobs podem rodar; vazio = sempre.
|
|
# Janela "HH-HH" (fuso de São Paulo) em que esses jobs podem rodar; vazio = sempre.
|
|
|
-# Ex.: 19-07 só roda à noite. Disparos manuais pela UI/API não são afetados.
|
|
|
|
|
|
|
+# Ex.: 19-07 só roda à noite. Disparos manuais pela UI/API ignoram a janela, mas recebem
|
|
|
|
|
+# 409 se outro job pesado estiver rodando naquele momento.
|
|
|
# JOBS_PESADOS_JANELA=
|
|
# JOBS_PESADOS_JANELA=
|
|
|
# Pausa (ms) entre itens do lote, para a máquina e o chat interativo respirarem.
|
|
# Pausa (ms) entre itens do lote, para a máquina e o chat interativo respirarem.
|
|
|
# JOBS_PESADOS_PAUSA_MS=3000
|
|
# JOBS_PESADOS_PAUSA_MS=3000
|