docs: documentar fechas naturales, formato dd/MM y TZ en README/STATUS

Co-authored-by: aider (openrouter/openai/gpt-5) <aider@aider.chat>
pull/1/head
borja 2 months ago
parent 67da92b619
commit 28e7b2b865

@ -14,6 +14,8 @@ This service provides a WhatsApp interface for task management within WhatsApp g
- 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.
- Natural date parsing: supports "hoy"/"mañana" with TZ (env TZ; default Europe/Madrid).
- Unified date display: all dates are rendered as dd/MM; help available via DM with "/t" or "ayuda".
- Optional: group notification on task creation controlled by NOTIFY_GROUP_ON_CREATE (default false), including proper mentions for visibility.
## 🔐 Security Model
@ -118,6 +120,9 @@ Estado: la tabla response_queue ya está creada e incluida en los tests de DB.
- Response queue persistente con workers en background y envío vía Evolution API (`src/services/response-queue.ts`), persistiendo metadata `{ mentioned: [...] }` y enviándola como `mentioned` en el payload, con reintentos (backoff exponencial + jitter), recuperación de `processing` y limpieza/retención.
- Contacts service and friendly names: `ContactsService` resolves display names via webhooks (CONTACTS_UPDATE/CHATS_UPDATE) and Evolution API fallback; used to render names in outgoing texts (falls back to numbers). Skips network calls under NODE_ENV=test for fast and isolated unit tests.
- Notification UX: Always send DM acknowledgment to the creator in a single line (format: ✅ Tarea <id> creada: "description"), DM to each assignee (excluding the creator); optional group notification controlled by `NOTIFY_GROUP_ON_CREATE` (default false) with proper mentions.
- Natural date tokens support (“hoy”/“mañana”) with TZ configurable (env TZ; default Europe/Madrid) in task creation.
- Unified dd/MM date formatting across outgoing texts.
- Help by DM for "/t" and "/t ayuda" with a concise guide and examples.
- Environment variable validation (`src/server.ts`, `src/services/webhook-manager.ts`).
- Health check endpoint (`/health`).
- **Database isolation in unit tests**: Using in-memory instances to avoid conflicts.
@ -150,6 +155,7 @@ PORT=3007 # Port this service listens on
# Runtime Environment
NODE_ENV=production # Or development
TZ=Europe/Madrid # Default timezone used for "hoy/mañana" parsing and date displays
# Optional
# GROUP_SYNC_INTERVAL_MS=3600000 # Sync interval in ms (default: 24h)
@ -274,7 +280,7 @@ bun test
- WhatsApp ID normalization (`whatsapp.test.ts`).
- Group sync operations (`group-sync.test.ts`).
- **Needed:** Tests for `ensureUserExists` integration, `isGroupActive` integration, `CommandService` logic, `ResponseQueue` processing (mocking API), `TaskService` operations.
- All unit tests passing.
- All unit tests passing. Added unit tests for CommandService (date parsing "hoy/mañana", DM help, dd/MM formatting, default assignment rules).
## 🧑‍💻 Contributing
1. Fork the repository
@ -337,10 +343,10 @@ Este apartado documenta las decisiones de UX aprobadas para el MVP y su evoluci
### Mensajes: plantillas compactas
- Confirmación al crear (DM al creador):
- ✅ 26 “*Acta de la reunión*”
- 📅 2025-09-12
- 📅 12/09
- 👥 sin dueño (Junta AMPA) — o — 👤 @Juan
- DM a asignados:
- 🔔 Tarea 26 — 📅 2025-09-12
- 🔔 Tarea 26 — 📅 12/09
- “*Acta de la reunión*”
- Grupo: Junta AMPA
- Completar: /t x 26

@ -28,6 +28,8 @@
- 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.
- Tomar/Soltar: `/t tomar <id>` y `/t soltar <id>` implementados end-to-end con feedback compacto por DM (idempotentes).
- Fechas naturales: soporte de “hoy/mañana” en creación con TZ configurable (env TZ; por defecto Europe/Madrid).
- Ayuda por DM: “/t” y “/t ayuda” devuelven una guía breve; el bot no publica en grupos.
- **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**
@ -43,8 +45,6 @@
## ⚠️ Funcionalidades Pendientes
- **Gestión de Tareas**
- Eliminación opcional de tareas y mejoras de edición.
- **Fechas y parsing**
- Parser de fechas naturales “hoy/mañana” en creación.
- **Cola de Respuestas**
- (Post-MVP) Observabilidad y métricas: contadores, latencias, tamaño de cola, endpoint /metrics.
- **Validaciones**
@ -53,8 +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. 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”.
1. Métricas y observabilidad de ResponseQueue (/metrics).
2. Gestión de tareas: eliminación y mejoras de edición.
## 🐞 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.
@ -72,12 +72,12 @@
- Etapa 4 — Limpieza/retención: COMPLETADA.
## Commit history and status
- Latest status: All unit tests passing; UX Iteración A (parcial) con listados ver grupo/mis/sin/todos y política solo DM; ACK al creador en una línea; notificación al grupo opcional desactivada por defecto; ContactsService evita llamadas de red en tests; nombres amigables integrados.
- Latest status: All unit tests passing; soporte de fechas naturales “hoy/mañana” con TZ configurable (por defecto Europe/Madrid) y formato unificado dd/MM en mensajes; ayuda por DM (“/t”, “/t ayuda”); listados ver grupo/mis/sin/todos; política solo DM; ACK al creador en una línea; notificación al grupo opcional desactivada; ContactsService evita llamadas de red en tests; nombres amigables integrados.
## ▶️ Para continuar ahora
Propuesta inmediata:
- Añadir parser de fechas “hoy/mañana” en creación.
- Ayuda “/t ayuda” por DM, guía breve y ejemplos.
- Métricas y observabilidad de ResponseQueue (contadores, latencias, tamaño de cola) y endpoint /metrics.
- Gestión de tareas: eliminación y edición básica.
Para que pueda proponer cambios de código, añade estos archivos a este chat:
- `src/services/command.ts`

Loading…
Cancel
Save