From b7b4f0aabe1bd6dd280b38c8e8ae8dd4943b45a3 Mon Sep 17 00:00:00 2001 From: borja Date: Sun, 7 Sep 2025 18:13:37 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20actualizar=20documentaci=C3=B3n=20Evolu?= =?UTF-8?q?tion=20API=20y=20webhooks=20incrementales?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: aider (openrouter/openai/gpt-5) --- README.md | 3 ++- STATUS.md | 3 ++- docs/plan-sincronizacion-miembros.md | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 90a0bf6..0401b4e 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Un chatbot de WhatsApp para gestionar tareas en grupos, integrado con Evolution - Recordatorios por DM (daily/weekly) por usuario; evita duplicados y respeta TZ. - Cola de respuestas persistente con reintentos (backoff exponencial + jitter) y recuperación tras reinicios. - Nombres amigables vía caché de contactos (sin llamadas de red en tests). -- Sincronización de miembros de grupos (snapshot periódica; tolerante a fallos en webhooks). +- Sincronización de miembros de grupos (snapshot periódica + webhooks incrementales; tolerante a fallos). - Mensajes compactos con emojis y cursiva; fechas dd/MM; vencidas con ⚠️. ## Requisitos @@ -136,6 +136,7 @@ bun test - Basic error handling (`server.test.ts`). - WhatsApp ID normalization (`whatsapp.test.ts`). - Group sync operations (`group-sync.test.ts`). +- Webhook handlers de membresías (alta/baja/cambio de rol) (`group-sync.*.test.ts`). - **Needed:** Tests for `ensureUserExists` integration, `isGroupActive` integration, `CommandService` logic, `ResponseQueue` processing (mocking API), `TaskService` operations. - All 170 unit tests passing. Added unit tests for CommandService (date parsing "hoy/mañana", DM help, dd/MM formatting, default assignment rules) y para RemindersService (daily/weekly, duplicados por día, hora/TZ, “… y X más”) y configuración de recordatorios. diff --git a/STATUS.md b/STATUS.md index 1e35acc..a3306d5 100644 --- a/STATUS.md +++ b/STATUS.md @@ -6,7 +6,7 @@ Estado general: listo para piloto con la junta directiva; 170 tests pasando. Rie - Servidor webhook - Endpoint /health, validación de entorno, extracción robusta de texto (conversation/extended/captions). - Detección DM vs grupo y política “solo DM”. - - Registro/verificación de webhooks y sincronización de grupos activos con caché; sincronización periódica de miembros. + - Registro/verificación de webhooks y sincronización de grupos activos con caché; sincronización periódica de miembros y handlers incrementales (alta/baja/rol) idempotentes. - Rate limiting por usuario (15/min por defecto; desactivado en tests; aviso con cooldown). - Base de datos y migraciones - Inicialización con PRAGMA FK y timestamps de alta precisión. @@ -86,4 +86,5 @@ Estado general: listo para piloto con la junta directiva; 170 tests pasando. Rie - Recordatorios por DM (daily/weekly) con preferencias: completado. - Rate limiting por usuario: completado. - Ayuda por DM y formato de mensajes unificado: completado. +- Sincronización de miembros (full sync + webhooks incrementales): completado. - Limpieza/retención de historiales de cola: completado. diff --git a/docs/plan-sincronizacion-miembros.md b/docs/plan-sincronizacion-miembros.md index ead88d3..e9cba73 100644 --- a/docs/plan-sincronizacion-miembros.md +++ b/docs/plan-sincronizacion-miembros.md @@ -75,7 +75,7 @@ Este documento define el plan para implementar una sincronización robusta de mi - Webhook y full sync preferiblemente en red interna; si no, proteger con allowlist/proxy. ## Plan por etapas -Etapa 1 — Esquema + servicio +Etapa 1 — Esquema + servicio — COMPLETADA - Migración: crear groups y group_members + índices. - Servicio GroupSync: - syncGroups(): lista grupos + reconcilia miembros. @@ -85,7 +85,7 @@ Etapa 1 — Esquema + servicio - Migración up-only. - Reconciliación: de [A,B,C] a [A,C,D] → B inactivo, D añadido; tiempos/roles actualizados. -Etapa 2 — Integración con Evolution API +Etapa 2 — Integración con Evolution API — COMPLETADA - Full sync: llamadas reales a endpoints (respetando paginación y límites). - Webhooks: registro y handlers idempotentes (alta/baja/rol/rename). - Tests: