Reconciliador Temporal de Sessões Zumbis e Convergência de Notificações

1. Visão Geral

O módulo de reconciliação out-of-band do domínio yzex-conect orquestra a resolução determinística de instâncias com estados intermediários presos (zombie sessions) e assegura a propriedade de convergência idempotente no Hub de Notificações da aplicação.

2. Componentes da Solução

Componente Artefato Papel e Responsabilidade

Workflow

reconcileWhatsappZombieSessionsWorkflow

Orquestrador principal executado periodicamente. Coordena a reconciliação de lotes e aciona a rotina convergente de notificações.

Activity 1

reconcileWhatsappZombieSessionsActivity

Reserva atômica de lotes via connect.reserve_whatsapp_reconciliation_lease e transições de ciclo de vida (provisioning → provisioning_failed, deprovisioning → archived).

Activity 2

rebuildAllSystemNotificationsActivity

Invocação da RPC connect.rebuild_all_system_notifications() para assegurar convergência dos alertas ativos e resolução automática de incidentes sanados.

Cron Schedule

cron-conect-whatsapp-zombie-reconciliation

Gatilho temporal recorrente registrado no Temporal Server (*/5 * * * *, fuso horário America/Sao_Paulo, política SKIP).

Worker

conect.worker.ts

Worker dedicado ao namespace yzex-conect escutando a fila conect-whatsapp-reconciliation-queue.

3. Garantias Formais

  1. Lock Distribuído via Leases Efêmeros: Instâncias elegíveis são bloqueadas atomicamente no PostgreSQL com carimbo temporal (locked_until, locked_by). Caso o Worker venha a falhar, o lease expira sem necessidade de intervenção manual.

  2. Propriedade Idempotente do Hub de Notificações: rebuild(rebuild(State)) == rebuild(State) A reconstrução periódica garante que nenhuma anomalia permaneça no estado ativo após a normalização das condições físicas.

  3. Isolamento de Concorrência Multi-Tenant: As atividades e workflows executam no namespace isolado yzex-conect, garantindo que picos de carga ou incidentes na infraestrutura Conect não impactem as filas e rotinas operacionais de yzex-mse.