From 79133d6e782c113b7fe52a752bc875eeb28b53e4 Mon Sep 17 00:00:00 2001 From: borja Date: Sat, 6 Sep 2025 19:38:53 +0200 Subject: [PATCH] docs: actualizar STATUS.md y README con estado Phase 4 y plan Co-authored-by: aider (openrouter/openai/gpt-5) --- README.md | 45 +++++++++++++++++++++++++++++++++++++++++++-- STATUS.md | 2 +- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index de17744..a21ca37 100644 --- a/README.md +++ b/README.md @@ -184,7 +184,7 @@ bun test ### Phase 4: Fiabilidad de la cola y observabilidad (Media) - [x] Añadir reintentos con backoff exponencial y jitter. -- [ ] Recuperar ítems en estado `processing` tras reinicios (lease o expiración y requeue). +- [x] Recuperar ítems en estado `processing` tras reinicios (lease o expiración y requeue). - [ ] Métricas y logging mejorado (contadores de enviados/fallidos, tiempos). - [ ] Limpieza/retención de historiales. @@ -192,7 +192,7 @@ bun test - Etapa 1 — Reintentos con backoff exponencial + jitter (Completada) - Parámetros: RQ_MAX_ATTEMPTS (6), RQ_BASE_BACKOFF_MS (5000), RQ_MAX_BACKOFF_MS (3600000). - Lógica: 2xx → sent; 4xx → failed definitivo; 5xx/red → reintento con `next_attempt_at` hasta MAX_ATTEMPTS. -- Etapa 2 — Recuperación de items en `processing` mediante lease/expiración (Pendiente) +- Etapa 2 — Recuperación de items en `processing` mediante lease/expiración (Completada) - Etapa 3 — Métricas y observabilidad (Pendiente) - Etapa 4 — Limpieza/retención (Pendiente) @@ -202,6 +202,47 @@ bun test - [ ] Add rate limiting. - [ ] Create task history tracking. +### Etapas siguientes (priorización propuesta) +1) Phase 4 — Etapa 4: Limpieza y retención +- Objetivo: evitar crecimiento indefinido y mantener la BD sana. +- Implica: retención/archivado de response_queue, posible VACUUM, config RQ_RETENTION_DAYS y job periódico. + +2) Fiabilidad avanzada de ResponseQueue +- Objetivo: mejorar entrega y evitar duplicados/ruido. +- Implica: orden por destinatario, idempotency_key con índice único, límites de inflight/backpressure. + +3) UX Iteración A (MVP centrado en valor) +- Objetivo: fluidez de uso y silencio en grupos. +- Implica: alias y sinónimos, “solo DM”, soporte “hoy/mañana”, comandos tomar/soltar, ayuda breve. + +4) UX Iteración B (listas y completar) +- Objetivo: visibilidad y cierre rápido. +- Implica: “ver grupo” y “ver mis” con tope y “y X más…”, completar (x/hecho/done) robusto, formatos compactos. + +5) Recordatorios (Phase 5) +- Objetivo: nudge suave por DM. +- Implica: tabla user_preferences, comando “configurar”, job diario de resumen. + +6) Permisos y pertenencia a grupos +- Objetivo: control de quién puede qué, y pertenencia válida. +- Implica: roles y/o verificación de pertenencia; posibles migraciones y sincronización de miembros. + +7) Historial de tareas (auditoría ligera) +- Objetivo: trazabilidad de cambios. +- Implica: tabla task_events; eventos en crear/asignar/tomar/soltar/completar; consulta “historial”. + +8) Rate limiting (operación segura) +- Objetivo: proteger ante abuso o loops. +- Implica: token bucket por usuario/grupo; configuración de límites. + +9) Sincronización de miembros (opcional) +- Objetivo: conocer miembros activos por grupo para features avanzadas. +- Implica: endpoints Evolution API para miembros; cache/migraciones. + +10) Métricas y observabilidad (deferido del MVP) +- Objetivo: visibilidad con bajo coste. +- Implica: counters/gauges/histograms y endpoint /metrics; logging estructurado. Se pospone al final de esta lista. + ## 🔑 Key Considerations & Caveats * **WhatsApp ID Normalization:** Crucial for consistently identifying users and groups. Needs careful implementation to handle edge cases. (Utility function exists). * **Response Latency:** Sending responses requires an API call back to Evolution. Ensure the `ResponseQueue` processing is efficient. diff --git a/STATUS.md b/STATUS.md index 6e0ceea..e420fbd 100644 --- a/STATUS.md +++ b/STATUS.md @@ -66,7 +66,7 @@ ## Phase 4 — Desglose y estado - Etapa 1 — Reintentos con backoff exponencial + jitter: COMPLETADA. -- Etapa 2 — Recuperación de items en `processing` (lease/expiración): PENDIENTE. +- Etapa 2 — Recuperación de items en `processing` (lease/expiración): COMPLETADA. - Etapa 3 — Métricas y observabilidad: PENDIENTE. - Etapa 4 — Limpieza/retención: PENDIENTE.