From dd0ba41830ded3004996baa4e58a0099d0d4e9c0 Mon Sep 17 00:00:00 2001 From: borja Date: Sun, 7 Sep 2025 00:42:57 +0200 Subject: [PATCH] docs: actualiza README.md y STATUS.md para reflejar la fase completada Co-authored-by: aider (openrouter/openai/gpt-5) --- README.md | 14 ++++++++------ STATUS.md | 14 ++++++-------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 5704a7a..acf4f2d 100644 --- a/README.md +++ b/README.md @@ -125,6 +125,7 @@ Estado: la tabla response_queue ya está creada e incluida en los tests de DB. - 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`). +- Rate limiting per user: 15 commands/min (configurable via RATE_LIMIT_PER_MIN and RATE_LIMIT_BURST); disabled under NODE_ENV=test; polite DM notice throttled to 1/min. - **Database isolation in unit tests**: Using in-memory instances to avoid conflicts. ### Incomplete / Missing Core Functionality @@ -160,6 +161,8 @@ TZ=Europe/Madrid # Default timezone used for "hoy/mañana" parsing and date disp # Optional # GROUP_SYNC_INTERVAL_MS=3600000 # Sync interval in ms (default: 24h) # NOTIFY_GROUP_ON_CREATE=false # If 'true', also post a brief summary with mentions to the group +# RATE_LIMIT_PER_MIN=15 # Commands per minute per user (token refill rate) +# RATE_LIMIT_BURST=15 # Bucket capacity (defaults to RATE_LIMIT_PER_MIN) ``` ### Development Setup @@ -180,11 +183,10 @@ bun test ## 📅 Roadmap & Priorities (Updated Plan) ### MVP — Próximos pasos (prioridad actual) -1) Rate limiting básico: bucket en memoria por remitente (p. ej., 10/min), respuesta amable al exceder, desactivado en NODE_ENV=test. -2) Recordatorios diarios por DM: preferencia por usuario (daily|off, por defecto off), hora fija local (p. ej., 08:30 TZ), un DM con resumen compacto de “tus tareas”. -3) Refinar ContactsService: mejorar heurística de nombre, invalidación temprana en CHATS_UPDATE/CONTACTS_UPDATE, TTL configurable, robustez ante fallos, sin llamadas de red en tests. -4) Sincronización mínima de miembros: obtener y cachear miembros de grupos activos con TTL, uso no bloqueante; base para futuras validaciones/UX. -5) Ampliar test suite: cubrir recordatorios, rate limiting, actualización de nombres, sync de miembros y casos extremos de ResponseQueue. +1) Recordatorios diarios por DM: preferencia por usuario (daily|off, por defecto off), hora fija local (p. ej., 08:30 TZ), un DM con resumen compacto de “tus tareas”. +2) Refinar ContactsService: mejorar heurística de nombre, invalidación temprana en CHATS_UPDATE/CONTACTS_UPDATE, TTL configurable, robustez ante fallos, sin llamadas de red en tests. +3) Sincronización mínima de miembros: obtener y cachear miembros de grupos activos con TTL, uso no bloqueante; base para futuras validaciones/UX. +4) Ampliar test suite: cubrir recordatorios, actualización de nombres, sync de miembros y casos extremos de ResponseQueue. ### Phase 1: User & Group Foundation (Highest Priority - In Progress) - [x] **Create WhatsApp ID Normalization Utility:** (`src/utils/whatsapp.ts`) Handle different ID formats. @@ -219,7 +221,7 @@ bun test ### Phase 5: Advanced Features (Low Priority) - [ ] Add task reminders system. - [ ] Implement user permissions system. -- [ ] Add rate limiting. +- [x] Add rate limiting. - [ ] Create task history tracking. ### Etapas siguientes (priorización propuesta) diff --git a/STATUS.md b/STATUS.md index ebbc464..df86d04 100644 --- a/STATUS.md +++ b/STATUS.md @@ -53,11 +53,10 @@ - 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. Rate limiting básico (bucket en memoria por remitente; desactivado en tests). -2. Recordatorios diarios por DM (opt-in daily|off; hora fija local; resumen compacto). -3. Refinar ContactsService (caché/nombres; TTL configurable; robustez ante fallos; sin red en tests). -4. Sincronización mínima de miembros (cacheada; no bloqueante). -5. Ampliar test suite (recordatorios, rate limiting, contactos, sync de miembros, ResponseQueue). +1. Recordatorios diarios por DM (opt-in daily|off; hora fija local; resumen compacto). +2. Refinar ContactsService (caché/nombres; TTL configurable; robustez ante fallos; sin red en tests). +3. Sincronización mínima de miembros (cacheada; no bloqueante). +4. Ampliar test suite (recordatorios, contactos, sync de miembros, ResponseQueue). ## 🐞 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. @@ -75,15 +74,14 @@ - Etapa 4 — Limpieza/retención: COMPLETADA. ## Commit history and status -- 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. +- 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; rate limiting básico por usuario (15/min, configurable por env; desactivado en tests) implementado. ## ▶️ Para continuar ahora Propuesta inmediata: -- Rate limiting básico (bucket en memoria por remitente; desactivado en tests). - Recordatorios diarios por DM (opt-in daily|off; hora fija local; resumen compacto). - Refinar ContactsService (caché y nombres; TTL configurable; robustez ante fallos; sin red en tests). - Sincronización mínima de miembros (cacheada; no bloqueante). -- Ampliar test suite (recordatorios, rate limiting, contactos, sync de miembros, ResponseQueue). +- Ampliar test suite (recordatorios, contactos, sync de miembros, ResponseQueue). Para que pueda proponer cambios de código, añade estos archivos a este chat: - `src/services/command.ts`