You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.1 KiB
2.1 KiB
Visión general
Qué hace el sistema
- Ingesta de webhooks de WhatsApp (Evolution API) y ruteo de eventos.
- Parsing de comandos de texto y operaciones sobre tareas.
- Sincronización periódica de grupos y miembros.
- Control de acceso por grupos (allowed_groups) con modos off/discover/enforce y comandos /admin.
- Recordatorios a usuarios según preferencias.
- Cola de respuestas con reintentos/backoff.
- Métricas y health para operación.
Flujos principales
- Mensaje entrante
- src/server.ts recibe webhook → extrae texto → delega en src/services/command.ts (CommandService).
- CommandService puede interactuar con src/tasks/service.ts (crear/actualizar/consultar tareas) y encolar respuestas en src/services/response-queue.ts.
- Schedulers
- src/services/group-sync.ts sincroniza grupos activos y sus miembros.
- src/services/reminders.ts consulta preferencias y encola recordatorios.
- src/services/maintenance.ts aplica retención de miembros inactivos.
- Persistencia
- src/db.ts abre SQLite (data/tasks.db por defecto), aplica PRAGMAs (WAL, FK, etc.) y migraciones (src/db/migrations).
- Observabilidad
- src/services/metrics.ts expone contadores/gauges; /metrics en src/server.ts.
Glosario
- JID: identificador completo de WhatsApp (p.ej., 12345@s.whatsapp.net, 999@g.us).
- user_id: número normalizado (solo dígitos) sin dominio.
- groupId: JID de grupo, termina en @g.us.
- Alias: identificador alternativo que mapea a user_id real (src/services/identity.ts).
Mapa rápido
- Entrada HTTP: src/server.ts
- DB y migraciones: src/db.ts, src/db/migrations/index.ts
- Servicios: src/services/*.ts (command, contacts, group-sync, identity, maintenance, metrics, rate-limit, reminders, response-queue, webhook-manager)
- Utilidades: src/utils/*.ts (whatsapp, formatting, etc.)
- Tareas: src/tasks/*.ts (modelo y servicio)
- Tests: tests/unit/**/*.test.ts
Siguientes lecturas
- architecture.md para responsabilidades por módulo.
- database.md para entender tablas y PRAGMAs.
- operations.md para variables de entorno, métricas y schedulers.
- tests-map.md para ver qué se valida y dónde extender cobertura.