Voltar para Dashboard
Event Tracking System

Sistema de Timeline Cliente

Arquitetura completa de rastreamento de eventos que registra toda a jornada do cliente no CRM. De transferências entre corretores até fechamento de negócios, cada ação é capturada com metadados detalhados em português.

Arquitetura Centralizada

Sistema construído com RegisterTimelineEvent como ponto único de criação de eventos. Integrado em 9 use cases diferentes, garantindo que nenhuma ação importante passe despercebida.

  • Query inteligente com $or: busca por contactId OU clientId
  • Claiming automático de eventos órfãos após sincronização
  • Metadata 100% em português (modalidade, valor, operadora)
  • Try/catch em todos eventos - nunca quebra o fluxo principal
MongoDBTypeScriptMongoose

interface IClientTimeline {

clientId?: ObjectId;

contactId?: Number;

queueId?: ObjectId;

brokerId?: ObjectId;

type: TimelineType;

content: string;

metadata?: Mixed;

// valor, modalidade, operadora...

}

9 Tipos de Eventos Rastreados

ATTENDANCE_START

Início Atendimento

DEAL_WON

Negócio Ganho

DEAL_LOST

Negócio Perdido

TRANSFER

Transferência

MANUAL_CHANGE

Mudança Manual

INTERACTION

Interação

OTHER

Reabertura

const types = ['ATTENDANCE_START', 'DEAL_WON', 'DEAL_LOST', 'TRANSFER', 'MANUAL_CHANGE', 'INTERACTION', 'OTHER']

Claiming de Órfãos

Problema: Quando cliente chega, só temos contactId (Ploomes). O clientId (MongoDB) só existe após sincronização.

Solução: Todos os 9 use cases fazem claiming automático, vinculando eventos órfãos ao clientId criado. Timeline completa mesmo antes da sync.

// Orphan Claiming

await ClientTimeline.updateMany(

{ contactId, clientId: { $exists: false } },

{ $set: { clientId } }

);

Query com $or

Busca eventos antes e depois da sincronização Ploomes usando operador lógico $or.

ClientTimeline.find({

$or: [

{ contactId },

{ clientId }

]

}).sort({ createdAt: 1 })

  • Popula brokerId com nome do usuário
  • Ordena cronologicamente (ASC)
  • Retorna array formatado

Metadata Localizada

Todos os eventos capturam metadata específica 100% em português para análise e auditoria completa.

metadata: {

modalidade: 'MEI',

operadora: 'Unimed',

valor: 5000,

stageAntigo: 'Proposta',

stageNovo: 'Fechado'

}

Interface Visual

ClientTimelineTree renderiza eventos em design de skill tree com layout alternado, 20+ ícones mapeados, gradientes e animações.

Início Atendimento
Transferência
Negócio Ganho

Integração em 9 Use Cases

take-client.ts
start-attendance.ts
deal-win.ts
deal-lose.ts
update-queue-stage.ts
redirect-to-broker-or-partner.ts
deal-reopen.ts
register-interaction.ts
+ claiming em todos