feat: implementar tomar/soltar end-to-end y parser de fechas hoy/mañana

Co-authored-by: aider (openrouter/openai/gpt-5) <aider@aider.chat>
pull/1/head
borja 2 months ago
parent 9fb4a0d03a
commit 5ad4ff34cb

@ -13,6 +13,7 @@ This service provides a WhatsApp interface for task management within WhatsApp g
- DM-only responses: the bot does not post messages in groups; all outputs are sent via DM to the author (except the optional creation summary below).
- Advanced listings: "/t ver" supports scopes "grupo", "mis", "sin" and "todos" with pagination ("… y X más").
- Complete tasks: "/t x <id>" (aliases: hecho, completar, done) with compact DM feedback.
- Claim/unassign tasks: "/t tomar <id>" and "/t soltar <id>" with compact DM feedback.
- Optional: group notification on task creation controlled by NOTIFY_GROUP_ON_CREATE (default false), including proper mentions for visibility.
## 🔐 Security Model
@ -110,7 +111,7 @@ Estado: la tabla response_queue ya está creada e incluida en los tests de DB.
- Cleans description to remove @mentions tokens.
- Persists task and assignments atomically via `TaskService`.
- Builds response with assignment list and includes Evolution API “mentioned” JIDs via `ResponseQueue`.
- Command handling for listings and completion:
- Command handling for listings, completion and assignment (tomar/soltar):
- `/t ver` with scopes `grupo`, `mis`, `sin` and `todos` with top-N and “… y X más”; DM-only policy enforced.
- `/t x <id>` to complete tasks (aliases: `hecho`, `completar`, `done`) with compact feedback.
- Task persistence service (`src/tasks/service.ts`) with `created_by` and assignment inserts in a transaction; supports DB injection for tests.
@ -187,6 +188,7 @@ bun test
- [x] Implementar `/tarea mostrar [group|mine]` para listar pendientes.
- [x] Implementar `/tarea completar <task_id>` con validaciones básicas.
- [x] Soportar mensajes de texto extendido y captions de media (además de conversation).
- [x] Implementar tomar/soltar (claim/unassign) con feedback por DM.
### Phase 4: Fiabilidad de la cola (Media; observabilidad pospuesta post-MVP)
- [x] Añadir reintentos con backoff exponencial y jitter.

@ -27,7 +27,7 @@
- `/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.
- Listados: `/t ver` con `grupo`, `mis`, `sin` y `todos`, con tope y resumen “… y X más”, siempre por DM.
- Completar: `/t x <id>` (alias: `hecho`, `completar`, `done`) con feedback compacto por DM.
- Alias añadidos para gestión de asignación: `tomar` (`claim`, `asumir`, `asumo`) y `soltar` (`unassign`, `dejar`, `liberar`, `renunciar`) — mapeados en el parser (acciones aún no implementadas).
- Tomar/Soltar: `/t tomar <id>` y `/t soltar <id>` implementados end-to-end con feedback compacto por DM (idempotentes).
- **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**
@ -42,7 +42,6 @@
## ⚠️ Funcionalidades Pendientes
- **Gestión de Tareas**
- Implementar comandos “tomar” y “soltar” (claim/unassign) con validaciones.
- Eliminación opcional de tareas y mejoras de edición.
- **Fechas y parsing**
- Parser de fechas naturales “hoy/mañana” en creación.
@ -54,9 +53,8 @@
- 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).
## ➡️ Próximos Pasos Prioritarios
1. Implementar “tomar” y “soltar” end-to-end (TaskService + CommandService), con feedback por DM.
2. Añadir parser “hoy/mañana” en creación y unificar formato de fechas (dd/MM) en todos los mensajes.
3. Ayuda por DM: guía corta con ejemplos cuando el usuario escribe “/t” o “ayuda”.
1. Añadir parser “hoy/mañana” en creación y unificar formato de fechas (dd/MM) en todos los mensajes.
2. Ayuda por DM: guía corta con ejemplos cuando el usuario escribe “/t” o “ayuda”.
## 🐞 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.
@ -78,9 +76,8 @@
## ▶️ Para continuar ahora
Propuesta inmediata:
- Implementar comandos: `/t tomar <id>` y `/t soltar <id>` (claim/unassign), con validaciones y mensajes compactos.
- Añadir parser de fechas “hoy/mañana” en creación y ayuda “/t ayuda” por DM.
- Afinar `ResponseQueue` con métricas básicas y mantener metadata de menciones.
- Añadir parser de fechas “hoy/mañana” en creación.
- Ayuda “/t ayuda” por DM, guía breve y ejemplos.
Para que pueda proponer cambios de código, añade estos archivos a este chat:
- `src/services/command.ts`

Loading…
Cancel
Save