Colas (BullMQ)
Las 9 colas reales del sistema, sus processors, y cuáles están definidas pero no conectadas.
Valwisp usa BullMQ (@nestjs/bullmq) para trabajo en segundo plano — cada módulo
registra su propia cola vía BullModule.registerQueue({ name });
src/infrastructure/queues/queues.module.ts es solo un placeholder. Las constantes de
nombre viven en src/infrastructure/queues/queue.constants.ts.
Regla del proyecto: cada cola es exclusiva de un único processor — BullMQ reparte los jobs entre todos los listeners de una cola, así que compartirla entre processors distintos haría que un job caiga en el processor equivocado.
Colas y processors reales
| Cola | Processor | Jobs |
|---|---|---|
billing | billing/billing.processor.ts | GENERATE_INVOICES, AUTO_CUT, AUTO_ACTIVATE, SEND_REMINDERS — encolados por crons diarios (6am/8am/9am). |
accounting | accounting/ledger-posting.processor.ts | Posteo automático al libro diario, encolado desde billing/payments/invoices/cash-sessions. |
provisioning | internet-services/provisioning.processor.ts | Provisión masiva de servicios PPPoE (post-migración). |
speed-upgrade | internet-services/speed-upgrade.processor.ts | Cambios masivos de velocidad/plan. |
regularize-plans | internet-services/regularize-plans.processor.ts | Regularización masiva de planes. |
device-sync | internet-services/device-sync.processor.ts | Reintento de sync RouterOS/RADIUS que falló. |
migration | migration/migration.processor.ts | Importación/sincronización desde Mikrowisp. |
Colas definidas pero NO conectadas
NOTIFICATION_QUEUE y MONITORING_QUEUE existen como constantes (y así se documentan en
el CLAUDE.md raíz) pero no tienen ningún BullModule.registerQueue() ni
@Processor real:
- El módulo
notificationsenvía correo directo y síncrono víaMailService, sin encolar nada. - El módulo
monitoringusa cron jobs de@nestjs/schedule(@Cron) directamente enmonitoring.service.ts— polling de routers cada 5 min, métricas de radio cada 5 min, tráfico WAN cada 1 min — no pasa por BullMQ.
Si vas a trabajar en cualquiera de estos dos módulos, no asumas que existe una cola activa detrás.