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.

3.8 KiB

Estado del Proyecto - Task Manager para WhatsApp

Funcionalidades Completadas

  • Infraestructura Principal
    • Servidor webhook con health checks
    • Dockerización y despliegue CapRover
    • Gestión de dependencias con Bun
  • Base de Datos
    • Modelo de tareas y asignaciones
    • Normalización de IDs de WhatsApp
    • Transacciones atómicas
    • Esquema de response_queue extendido con columna metadata (migración ligera al inicio)
  • Sincronización de Grupos
    • Caché de grupos activos y validación en el servidor
    • Sync periódico con Evolution API
  • Webhooks
    • Registro/verificación con Evolution API
    • Manejo de eventos (MESSAGES_UPSERT) con normalización del nombre del evento
  • Cola de Respuestas
    • Persistencia en DB y envío real a Evolution API
    • Workers en background activos
    • Soporte de menciones: persistencia en metadata y envío como mentioned en el payload
  • Comandos
    • /tarea nueva end-to-end: parseo de descripción y última fecha futura, extracción de asignados desde menciones y tokens @..., limpieza de la descripción, persistencia de tarea y asignaciones, y respuesta con menciones.
  • Contactos y Nombres
    • Servicio ContactsService con caché en memoria (TTL) y actualización por webhooks (CONTACTS_UPDATE/CHATS_UPDATE); fallback a Evolution API para obtener nombres. Se usa para mostrar nombres en los textos (con fallback a números). En entorno de test evita llamadas de red para acelerar y aislar la suite.
  • UX de Notificaciones
    • Confirmación por DM al creador siempre (en una sola línea con id y descripción) y DM a cada asignado (excluyendo al creador).
    • Notificación opcional al grupo controlada por NOTIFY_GROUP_ON_CREATE (false por defecto), incluyendo menciones para visibilidad.
  • Validaciones de Usuario
    • Integración completa de normalización y ensureUserExists en el flujo principal de mensajes
    • Tests de integración para validaciones de usuarios
  • Testing
    • Suite de tests unitarios con DB en memoria para aislamiento

⚠️ Funcionalidades Pendientes

  • Gestión de Tareas
    • Listar (/tarea mostrar) y completar (/tarea completar) tareas; eliminación opcional
  • Cola de Respuestas
    • Reintentos con backoff y jitter
    • Recuperación de ítems en estado processing tras caídas
    • Métricas/observabilidad y limpieza/retención
  • Validaciones
    • Permisos de usuario (roles) y pertenencia a grupos (si se requiere política estricta)
  • Menciones y nombres
    • Refinar políticas de caché (TTL, invalidación) y ampliar compatibilidad de endpoints; en DM, WhatsApp no pinta chips de mención de terceros (limitación del cliente).
  • Migraciones
    • Sistema de migraciones de esquema

➡️ Próximos Pasos Prioritarios

  1. Implementar /tarea mostrar y /tarea completar.
  2. Mejorar UX de menciones: resolver nombres y formateo de “asignados”.
  3. Extender soporte de entrada: extendedTextMessage y captions de media.
  4. Mejoras de fiabilidad de la cola: reintentos con backoff y recuperación de processing.
  5. Métricas/observabilidad básicas y plan de migraciones de DB.

🐞 Problemas conocidos

  • En chats privados, WhatsApp no renderiza chips de mención para terceros; en grupos sí se resuelven al nombre local de cada receptor. El bot incluye nombres en el texto cuando los conoce y números como @dígitos para acción rápida; no hay reescritura por receptor.

🔧 Archivos Clave a Modificar

  • src/services/response-queue.ts
  • src/services/command.ts
  • src/tasks/service.ts
  • src/server.ts

Commit history and status

  • Latest status: All unit tests passing; ACK to creator always in single-line format; optional group notify disabled by default; ContactsService avoids network calls under tests; basic name resolution via ContactsService integrated.