Files
FRASA-CAS/.env.example
Consult AS Technology 04941e9f80 feat(api): webhooks Monday en tiempo real + alertas de inventario cableadas
- Webhook Oportunidades: cambio de etapa dispara escaneo (Aparto→Apartado,
  Ganado→Venta) además del round-robin de leads por create_item
- Acepta los nombres reales de los eventos de Monday: create_pulse/pulseId
  y update_column_value (verificados en vivo)
- Token interno (X-Internal-Token) para que los syncs locales llamen
  POST /cotizaciones/alertas-inventario sin JWT de usuario
- sync-estatus-maestro.py notifica los cambios aplicados al endpoint de
  alertas (actividad al vendedor con cotizaciones recientes)
- Fix P1008 SQLite: escaneos del poll cron secuenciales +
  connection_limit=1 en DATABASE_URL
- Webhooks registrados en Monday sobre https://frasa.consultoria-as.com
  (Leads create_item, Oportunidades change_column_value); crons quedan
  como red de seguridad
- Docs: sección 0 en AUTOMATIZACIONES-MONDAY.md con la matriz de eventos
  y los quirks de Monday
2026-08-28 16:46:08 +00:00

83 lines
3.1 KiB
Plaintext

# ============================================
# MONDAY.COM
# ============================================
MONDAY_API_KEY="PONER_API_KEY_DE_MONDAY"
MONDAY_API_URL="https://api.monday.com/v2"
MONDAY_WORKSPACE="Frasa-CAS"
# Board IDs del workspace Frasa-CAS (ya creados)
MONDAY_BOARD_CONTACTOS="18427678476"
MONDAY_BOARD_DESARROLLOS="18427678485"
MONDAY_BOARD_UNIDADES="18427678487"
MONDAY_BOARD_LEADS="18427678493"
MONDAY_BOARD_OPORTUNIDADES="18427678497"
MONDAY_BOARD_APARTADO="18427678515"
MONDAY_BOARD_VENTAS="18427678520"
# Tableros creados por api-gateway/scripts/setup-crm.ts (npm run setup:crm)
MONDAY_BOARD_MOTIVOS="18427702505"
MONDAY_BOARD_ACTIVIDADES="18427702517"
# 'false' desactiva la creación de actividades en Monday (default true)
ACTIVIDADES_ENABLED="true"
# Automatizaciones del tablero Leads (api-gateway)
# IDs de usuario Monday separados por coma para el round-robin;
# vacío = auto-detectar usuarios no-guest del workspace
MONDAY_RR_USER_IDS=""
# Días sin actividad para recordar un lead (update automático en el item)
INACTIVIDAD_DIAS="10"
# Cron de polling de respaldo (asigna vendedor a leads nuevos sin asignar)
POLL_CRON="*/5 * * * *"
# 'false' desactiva los crons (los endpoints /api/automatizaciones siguen vivos)
MONDAY_AUTOMATIONS_ENABLED="true"
# ============================================
# BASE DE DATOS (fase API Gateway)
# ============================================
DATABASE_URL="postgresql://frasa_user:CAMBIAR@postgres:5432/frasa_db?schema=public"
POSTGRES_USER=frasa_user
POSTGRES_PASSWORD=CAMBIAR
POSTGRES_DB=frasa_db
REDIS_URL="redis://redis:6379"
# ============================================
# SEGURIDAD
# ============================================
JWT_SECRET="cambiar_por_secreto_largo_y_aleatorio"
JWT_EXPIRES_IN="7d"
# 'false' desactiva la exigencia de token en /api (tests/arranque temprano)
AUTH_ENABLED=true
# Password inicial del usuario 'admin' sembrado por npm run seed:usuarios
ADMIN_PASSWORD="Frasa2026"
# Token compartido script→API en este host (sync de estatus → alertas de
# inventario). Generar con: openssl rand -hex 24
INTERNAL_SYNC_TOKEN=""
# ============================================
# APP CONFIG
# ============================================
NODE_ENV=development
PORT=3000
# ============================================
# AGENTE IA (proveedor NAN, OpenAI-compatible)
# ============================================
NAN_API_KEY="PONER_API_KEY_DE_NAN"
NAN_BASE_URL="https://api.nan.builders/v1"
NAN_CHAT_MODEL="qwen3.6"
NAN_EMBED_MODEL="qwen3-embedding"
# Umbral mínimo de similitud coseno para recuperar contexto (0-1)
AI_MIN_SCORE="0.3"
# Ronda 2: horas antes de escalar un lead asignado que sigue en NUEVO/Intento de contacto
LEAD_ESCALADO_HORAS=48
# User ID Monday del coordinador para escalados; vacio = actividad al vendedor asignado
MONDAY_COORDINADOR_USER_ID=
# Recordatorios de cobranza (pagos por vencer / vencidos)
# Cron del escaneo diario (default "30 9 * * *")
RECORDATORIOS_CRON="30 9 * * *"
# Días de anticipación para el recordatorio "próximo a vencer" (default 3)
RECORDATORIO_DIAS_ANTES=3
# Cada cuántos días se re-recuerda un pago que sigue vencido (default 7)
RECORDATORIO_REVOLVER_DIAS=7