From ffad59f18fff54a9a6208baab4ffe8f2ec9749d0 Mon Sep 17 00:00:00 2001 From: brobert Date: Mon, 10 Nov 2025 14:31:29 +0100 Subject: [PATCH] refactor: quitar _membersGlobalCooldownUntil y llamar a ensureUserExists Co-authored-by: aider (openrouter/openai/gpt-5) --- docs/2025-11-01-plan-refactor-tecnico.md | 5 +++-- src/services/group-sync.ts | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/2025-11-01-plan-refactor-tecnico.md b/docs/2025-11-01-plan-refactor-tecnico.md index 725c1b8..532aa78 100644 --- a/docs/2025-11-01-plan-refactor-tecnico.md +++ b/docs/2025-11-01-plan-refactor-tecnico.md @@ -89,6 +89,7 @@ Resultados esperados después del refactor: disminución drástica de duplicados - Lote 5 completado: división de TaskItem en subcomponentes (SVGs a iconos, TaskDueBadge, TaskAssignees, TaskCompleteButton, TaskActions, TaskText, TaskMeta); sin cambios funcionales; tests verdes y typecheck web limpio. - Lote 5.5-a completado: ResponseQueue extraído (EvolutionClient, limpieza modular, parseo de metadata); sin cambios funcionales; commits: 1b7420e, 2032712. - Lote 5.5-c completado: TaskService extraído (display_code, reacción al completar, mapeadores); sin cambios funcionales; LOC actual en src/tasks/service.ts ≈ 621; commits: e3ec820, a72184f. + - Lote 5.5-b completado: GroupSyncService modularizado (api.ts, repo.ts, cache.ts, reconcile.ts) y desacople de Onboarding A3 (publishGroupCoveragePrompt); umbral aplicado; tests y typecheck limpios; commits: 1b0d2ec, 0ce3ecb, 2f24806. ## Estado actual (2025-11-10) @@ -100,7 +101,7 @@ Resultados esperados después del refactor: disminución drástica de duplicados - Lote 3 — Tipos y endurecimiento suave: Completado. - Lote 4 — ICS central y rutas homogéneas: Completado. - Lote 5 — Svelte: dividir componentes grandes: Completado. - - Lote 5.5 — Refactor de servicios grandes (god classes): En curso (PR 5.5-a y 5.5-c completados). + - Lote 5.5 — Refactor de servicios grandes (god classes): En curso (PR 5.5-a, 5.5-b y 5.5-c completados). - Lote 6 — DB Locator / DI ligera: Pendiente. - Lote 7 — Cobertura en módulos flojos: Pendiente. @@ -241,7 +242,7 @@ Cada lote incluye objetivo, cambios, métricas y comprobaciones. Mantener tests git grep -n "display_code" src ``` - 3) PR 5.5-b — GroupSyncService (1310 LOC) + 3) PR 5.5-b — GroupSyncService (1310 LOC) — Completado - Motivos: agrupa API (Evolution), parseos, upsert/caché, scheduling, reconciliación de miembros, allowed-groups y publicación de onboarding. - Cambios clave: - Extraer acceso Evolution API: diff --git a/src/services/group-sync.ts b/src/services/group-sync.ts index af07582..02539f8 100644 --- a/src/services/group-sync.ts +++ b/src/services/group-sync.ts @@ -80,7 +80,6 @@ export class GroupSyncService { private static _membersSchedulerRunning = false; private static _groupsIntervalMs: number | null = null; private static _groupsNextTickAt: number | null = null; - private static _membersGlobalCooldownUntil: number = 0; private static _lastChangedActive: string[] = []; static async syncGroups(force: boolean = false): Promise<{ added: number; updated: number }> { @@ -378,6 +377,7 @@ export class GroupSyncService { static upsertMemberSeen(groupId: string, userId: string, nowIso?: string): void { if (!groupId || !userId) return; const now = nowIso || toIsoSqlUTC(new Date()); + try { ensureUserExists(userId, this.dbInstance); } catch {} this.dbInstance.prepare(` INSERT INTO group_members (group_id, user_id, is_admin, is_active, first_seen_at, last_seen_at) VALUES (?, ?, 0, 1, ?, ?)