docs: actualiza README.md y STATUS.md para reflejar la fase completada

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

@ -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)

@ -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`

Loading…
Cancel
Save