← story.propek
STORY 3.4
Bot Phase 4: Handoff Improvement
Epic: Bot WhatsApp Propek
DONE
2026-03-12
Implementar lock atomico PostgreSQL-based para prevenir que dois atendentes humanos peguem a mesma conversa simultaneamente, e adicionar endpoint de monitoramento de handoffs ativos.
ACCEPTANCE CRITERIA (11/11)
HandoffLockService criado com PostgreSQL-based atomic locking (INSERT ON CONFLICT)
acquireLock, releaseLock, getLockHolder, extendLock implementados
Fallback para pg_advisory_lock quando tabela nao existe
Lock TTL padrao de 24 horas com possibilidade de extensao
Apenas o agente que possui o lock pode libera-lo
HandoffService.executeHandoff integrado com lock (non-blocking)
HandoffService.releaseHandoff adicionado para liberar lock
Endpoint GET /api/handoff-status retorna handoffs ativos (protegido por CRON_SECRET)
cleanupExpiredLocks disponivel para limpeza de locks expirados
Migration 017 cria tabela handoff_locks
Compilacao TypeScript limpa (npx tsc --noEmit)
ARQUIVOS (5)
src/services/handoff-lock.service.ts Created
src/services/handoff.service.ts Modified (lock integration + releaseHandoff)
src/handlers/analytics.handler.ts Created (handoff-status endpoint)
src/migrations/017_create_handoff_locks_and_analytics_views.sql Created
src/index.ts Modified (new endpoint registration)
RETROSPECTIVA
Qualidade: ★★★☆☆
Incluir @qa no proximo ciclo
Rodar @cyber-chief antes do push