Files
botino/env.example
Lucas Tettamanti f784ddd62d Tier 1: chat quality — fuzzy aliases, reply templates, dedup, rewriter
Foco: matar repetición y adaptar respuestas. Los handlers tenían ~30 strings
hardcodeadas (3-7 lugares cada una). Aliases hacían substring exacto.

- pg_trgm + GIN indexes en product_aliases / alias_product_mappings.
  Captura plurales, diminutivos, typos sin reglas. catalogRetrieval re-busca
  el snapshot con normalized_alias cuando el query original no rinde
  (vasio→vacio→Vacío).
- reply_templates table + replyTemplates.js. 20 keys, 2-3 variantes c/u
  con DEFAULTS hardcodeados como fallback. pickVariant excluye las usadas
  en context.recent_replies (FIFO cap 8). Wired en idle/cart/cartHelpers/
  shipping/payment/waiting.
- failed_searches counter en context. count>=3 escala via humanFallback.
  Reset en cada add_to_cart exitoso.
- storeContext.js: vars derivadas de getStoreConfig (delivery_zones, hours,
  zonas) listas para inyectar en templates cuando los datos se carguen.
- replyRewriter.js: LLM call opcional (REPLY_REWRITER=1) que adapta el
  template al hilo conversacional. 1.5s timeout, fallback al template puro.
  Sólo activo en 8 slots semánticamente importantes.
- 12 unit tests para replyTemplates (rotation, recency, FIFO, vars).
  208 tests totales pasando.

Plan completo: ~/.claude/plans/ok-creo-que-tiene-humming-sutton.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-01 19:29:02 -03:00

67 lines
1.6 KiB
Plaintext

# Botino - Example Environment Variables
# Copy this file to .env and fill in the values
# ===================
# Core
# ===================
PORT=3000
TENANT_KEY=piaf
DATABASE_URL=postgresql://user:password@localhost:5432/botino
PG_POOL_MAX=10
PG_IDLE_TIMEOUT_MS=30000
PG_CONN_TIMEOUT_MS=5000
APP_ENCRYPTION_KEY=your-32-char-encryption-key-here
# ===================
# OpenAI
# ===================
OPENAI_API_KEY=sk-xxx
OPENAI_MODEL=gpt-4o-mini
# ===================
# Turn Engine
# ===================
# v1 = pipeline actual (heurísticas + guardrails + LLM plan final)
# v2 = LLM-first NLU, deterministic core (nuevo motor)
TURN_ENGINE=v1
# ===================
# WooCommerce (usado por seed y fallback)
# Estas variables son leídas por scripts/seed-tenant.mjs para crear
# la configuración inicial del tenant en la base de datos.
# ===================
WOO_BASE_URL=https://tu-tienda.com
WOO_CONSUMER_KEY=ck_xxx
WOO_CONSUMER_SECRET=cs_xxx
# ===================
# Evolution API - WhatsApp
# ===================
EVOLUTION_API_URL=https://api.evolution.com
EVOLUTION_API_KEY=your-api-key
EVOLUTION_INSTANCE_NAME=piaf
EVOLUTION_SEND_ENABLED=0 # 0=solo BD (pruebas), 1=envía a WhatsApp (producción)
# ===================
# Limits
# ===================
LIMIT_CONVERSATIONS=100
MAX_CHARS_PER_MESSAGE=4000
# ===================
# Reply Rewriter (LLM adapta templates al contexto)
# ===================
REPLY_REWRITER=0
REPLY_REWRITER_TIMEOUT_MS=1500
# ===================
# Debug Flags (1/true/yes/on para activar)
# ===================
DEBUG_PERF=0
DEBUG_WOO_HTTP=0
DEBUG_WOO_PRODUCTS=0
DEBUG_LLM=0
DEBUG_EVOLUTION=0
DEBUG_DB=0
DEBUG_RESOLVE=0