# Operación y configuración Variables de entorno (principales) - EVOLUTION_API_URL: base URL de Evolution API. - EVOLUTION_API_INSTANCE: nombre/ID de instancia en Evolution. - EVOLUTION_API_KEY: API key para peticiones salientes (contacts, etc.). - WEBHOOK_URL: URL pública del webhook (puede usarse para auto-registro/config). - WHATSAPP_COMMUNITY_ID: comunidad cuyos grupos se sincronizan. - PORT: puerto HTTP (por defecto 3007). - NODE_ENV: 'development' | 'test' | 'production'. - METRICS_ENABLED: 'true'|'false'|'1'|'0' (por defecto habilitado salvo en test). - RATE_LIMIT_PER_MIN: tokens por minuto por usuario (default 15). - RATE_LIMIT_BURST: capacidad del bucket (default = RATE_LIMIT_PER_MIN). - GROUP_SYNC_INTERVAL_MS: intervalo de sync de grupos (default 24h; min 10s en dev). - GROUP_MEMBERS_SYNC_INTERVAL_MS: intervalo de sync de miembros (default 6h; min 10s en dev). - GROUP_MEMBERS_INACTIVE_RETENTION_DAYS: días para borrar miembros inactivos (default 180). - TZ: zona horaria para recordatorios (default Europe/Madrid). Endpoints operativos - GET /metrics - 200 si Metrics.enabled() y formato Prometheus por defecto. - 404 si métricas deshabilitadas; 405 si método no permitido. Arranque y servicios - src/server.ts::start() - Valida entorno (logs de variables presentes/faltantes). - Aplica migraciones up-only. - Inicia HTTP y (según entorno) schedulers. Schedulers - GroupSyncService.startGroupsScheduler() y .startMembersScheduler() - Saltan en test; intervalos controlados por env. - RemindersService.start() - Tick cada minuto, filtra por zona horaria y preferencias. - MaintenanceService.start() - Tarea diaria; borra miembros inactivos según retención. Datos y backups - Data path: data/tasks.db (por defecto). - Migraciones con backup opcional (withBackup=false por defecto en initializeDatabase). - Recomendación: planificar copia de seguridad periódica del directorio data/ y retención externa. Métricas de referencia - sync_runs_total, identity_alias_resolved_total, contadores/gauges específicos de colas y limpieza. - Añadir nuevas métricas usando Metrics.inc/set y documentarlas aquí. Buenas prácticas - No arrancar schedulers en test salvo que FORCE_SCHEDULERS='true'. - Validar nuevas env en src/server.ts::validateEnv() y documentarlas aquí.