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.
69 lines
3.7 KiB
Markdown
69 lines
3.7 KiB
Markdown
# 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).
|
|
- **UX de Notificaciones**
|
|
- Confirmación por DM al creador (omitida si es el único asignado) y DM a cada asignado.
|
|
- 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.
|
|
- 1 test falla actualmente: “Database > Table Schemas > response_queue table should have required columns”.
|
|
|
|
## 🔧 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: One schema test still failing; DM notifications to creator/assignees implemented; optional group notify disabled by default; basic name resolution via ContactsService integrated.
|