Files
leadcast/backend/.env.example
T
2026-07-26 21:17:57 -03:00

71 lines
2.5 KiB
Bash

# Servidor
SERVER_HOST=127.0.0.1
SERVER_PORT=8080
FRONTEND_ORIGIN=http://localhost:5173
DATABASE_URL=postgres://leads:leads@127.0.0.1:5432/leads_extractor
MEDIA_DIR=../data/media
RUST_LOG=backend=info
# Autenticação. Defina uma senha forte no backend/.env local.
AUTH_USERNAME=
AUTH_PASSWORD=
AUTH_SESSION_TTL_SECS=43200
AUTH_COOKIE_SECURE=false
AUTH_COOKIE_SAME_SITE=strict
# Rate limiting (proteção contra abuso/DoS/força bruta), aplicado por IP.
# Limite geral: rajada de RATE_LIMIT_BURST_SIZE requisições, repondo 1 a cada
# RATE_LIMIT_PERIOD_MS. Padrão: rajada de 120, repõe 1 a cada 200ms (~5 req/s
# sustentado por IP).
RATE_LIMIT_ENABLED=true
RATE_LIMIT_BURST_SIZE=120
RATE_LIMIT_PERIOD_MS=200
# Limite adicional e mais restrito, aplicado somente a /api/auth/login, para
# dificultar força bruta de credenciais. Padrão: rajada de 5, repõe 1 a cada 30s.
RATE_LIMIT_LOGIN_BURST_SIZE=5
RATE_LIMIT_LOGIN_PERIOD_SECS=30
# OpenAI
OPENAI_API_KEY=
OPENAI_MODEL=gpt-5.6-luna
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_TIMEOUT_SECS=120
OPENAI_MAX_RETRIES=6
# Custo em dólares por 1.000.000 de tokens (consulte a tabela de preços do modelo).
OPENAI_INPUT_COST_PER_1M_USD=0.15
OPENAI_OUTPUT_COST_PER_1M_USD=0.60
# Teto de gasto mensal em dólares. Ao ser atingido, novas execuções são
# bloqueadas e execuções em andamento são canceladas automaticamente.
OPENAI_MONTHLY_BUDGET_USD=50.00
# DataImpulse. Nunca comite valores reais.
DATAIMPULSE_PROXY_ENABLED=true
DATAIMPULSE_PROXY_SCHEME=http
DATAIMPULSE_PROXY_HOST=gw.dataimpulse.com
DATAIMPULSE_PROXY_PORT=823
DATAIMPULSE_PROXY_USERNAME=
DATAIMPULSE_PROXY_PASSWORD=
DATAIMPULSE_PROXY_COUNTRY=br
# O gateway sempre opera com IP rotativo; sessão fixa não é suportada.
# Concorrência, retry e limites de segurança operacional
WORKER_CONCURRENCY=8
BROWSER_CONCURRENCY=4
JOB_POLL_INTERVAL_MS=750
REQUEST_TIMEOUT_SECS=45
BROWSER_TIMEOUT_SECS=75
# Use true somente em container isolado que não ofereça user namespaces.
BROWSER_NO_SANDBOX=false
# Pacing do Chromium: cada sessão usa um perfil limpo, aquece a origem e
# espera um intervalo aleatório. As macro-pausas evitam rajadas em crawls longos.
BROWSER_MIN_NAVIGATION_DELAY_MS=2500
BROWSER_MAX_NAVIGATION_DELAY_MS=15000
BROWSER_MACRO_PAUSE_EVERY_MIN=15
BROWSER_MACRO_PAUSE_EVERY_MAX=20
BROWSER_MACRO_PAUSE_MIN_SECS=30
BROWSER_MACRO_PAUSE_MAX_SECS=90
CRAWL_MAX_DEPTH=5
CRAWL_MAX_PAGES_PER_INTERVIEWEE=250
# 0 processa todos; use 100 para uma execução externa controlada.
MAX_INTERVIEWEES_PER_RUN=0