Secao 01
O Modelo Pool
Em vez de atribuir tickets automaticamente a um agente individual (round-robin),
o novo modelo envia o ticket para um pool do time. O ticket fica no
stage "Aguardando atribuicao" com o hubspot_team_id setado.
Os agentes do time veem o ticket e pegam manualmente.
0
Deploys quando time muda
0
IDs hardcoded
11
Pipelines com pool
Pull
Modelo de atribuicao
Resultado: A Eduzz gerencia os times no HubSpot (Configuracoes > Usuarios e Times).
Quando alguem entra ou sai, o roteamento funciona normalmente no proximo ticket.
Zero chamados para EPIC. Zero deploys.
Como funciona
- Ticket chega no workflow de roteamento
- Codigo identifica o time correto (por belt, destino de escalacao, etc.)
- Seta
hubspot_team_idno ticket - Move o ticket para o stage "Aguardando atribuicao" (pool)
- Agentes do time veem o ticket no board/lista filtrada pelo time
- Agente pega o ticket e se auto-atribui como owner
Secao 02
Antes vs Depois
Modelo de Atribuicao
Antes (Round-Robin)
// Busca membros do time via API
const teams = await api.get('/settings/v3/users/teams');
const members = getMembers(teamId);
// Round-robin: ticketId % membros
const idx = ticketId % members.length;
const owner = members[idx];
// Atribui owner individual
PATCH ticket: hubspot_owner_id = owner
PATCH ticket: stage = "Em atendimento"
// Problemas:
// - Precisa de EPIC_TEAMS_TOKEN (scope extra)
// - Sub-times dedicados para roteamento
// - Se time muda, proximo ticket pode ir errado
Depois (Pool)
// Identifica time correto (belt, destino, etc.)
const teamId = TEAM_MAP[teamKey];
// Seta team + move para pool
PATCH ticket: hubspot_team_id = teamId
PATCH ticket: stage = "Aguardando atribuicao"
// Agente pega manualmente
// Owner setado quando agente se auto-atribui
// Vantagens:
// - Sem EPIC_TEAMS_TOKEN
// - Sem sub-times dedicados
// - Time muda? Proximo ticket ja funciona
Secao 03
Fluxo Tecnico
N1 Humano (Belt-Based)
Ticket N1 Criado Belt Lookup Team Assignment Pool
+--------------+ +-----------------+ +-----------------+ +--------------------+
| Novo | ---> | belt_elite? | ---> | hubspot_team_id | ---> | "Aguardando |
| (sem owner) | | | | | | atribuicao" |
+--------------+ | Black/Golden | | = N1 Black | | |
| White/Red/etc | | = N1 Lite e Pro | | Agente ve e pega |
| null | | = N1 Cross | +--------------------+
+-----------------+ +-----------------+
Escalacao N1 → N2/N3
N1 "Escalado" Resolve Destino Cria Ticket Filho Pool do Destino
+--------------+ +-----------------+ +-----------------+ +--------------------+
| escalonar_ | ---> | N2? sem team | ---> | hs_pipeline = | ---> | "Aguardando |
| para = ??? | | N3? + teamId | | destino | | atribuicao" |
+--------------+ +-----------------+ | hubspot_team_id | | |
| = team N3 | | Time pega ticket |
+-----------------+ +--------------------+
Secao 04
Pipelines e Stages Pool
| Pipeline | Pipeline ID | Stage Pool ID | Team ID | Modelo |
|---|---|---|---|---|
| N1 Humano | 824388612 |
A preencher |
Dinamico (por belt) | Pool + Belt |
| N2 | 824265268 |
A preencher |
Sem team | Pool Manual |
| N3 Tech | 824388613 |
A preencher |
77132526 |
Pool + Team |
| N3 Tech Incidentes | 881607732 |
A preencher |
77132526 |
Pool + Team |
| N3 Tech Requisicoes | 881607729 |
A preencher |
77132526 |
Pool + Team |
| N3 Tech Problemas | 881608743 |
A preencher |
77132526 |
Pool + Team |
| N3 Fraude | 865419938 |
A preencher |
56761888 |
Pool + Team |
| N3 Juridico | 865555876 |
A preencher |
77132473 |
Pool + Team |
| N3 Admin/Fin | 865557642 |
A preencher |
77132467 |
Pool + Team |
| N3 Ciber | 865556655 |
A preencher |
77132526 |
Pool + Team |
| N3 FinOps | 865602174 |
A preencher |
77132476 |
Pool + Team |
Stage IDs: Serao preenchidos apos criacao via API (script
create-pool-stages.js).
Os stages sao criados como primeiro stage (displayOrder=0) em cada pipeline.
Secao 05
Times e Team IDs
N1 — Roteamento por Belt
| Time | Team ID | Belts |
|---|---|---|
| N1 Black | 77417325 | Black Belt (todas variantes), Golden Belt (todas variantes) |
| N1 Lite e Pro | 77182082 | White Belt, Red Belt, Orange Belt, Green Belt |
| N1 Cross | 74324233 | null (cliente final, sem belt) — default |
N3 — Escalacao
| Pipeline N3 | Team ID | Time no HubSpot |
|---|---|---|
| Prev. Fraude | 56761888 | Prevencao a Fraude |
| Juridico | 77132473 | Juridico |
| Admin/Financeiro | 77132467 | Admin/Financeiro |
| Ciberseguranca | 77132526 | Fraudes (equipe tech) |
| FinOps | 77132476 | FinOps |
| N3 Tech (3 pipelines) | 77132526 | Fraudes (equipe tech) |
Sem sub-times dedicados! No modelo pool, nao e necessario criar sub-times
so para roteamento. O time existente no HubSpot e usado diretamente. Se um membro nao
deve receber tickets, basta nao o incluir no time.
Secao 06
Guia do Agente
Como pegar um ticket do pool
- Acesse o board/lista do seu pipeline
- Filtre pelo stage "Aguardando atribuicao"
- Os tickets visiveis sao do seu time
- Abra o ticket que deseja atender
- Clique em "Atribuir a mim" (ou selecione seu nome como owner)
- Mova o ticket para "Em atendimento"
Importante: Tickets no pool nao tem owner individual. Se ninguem pegar,
o ticket fica parado. Cada time e responsavel por monitorar seu pool regularmente.
Secao 07
Plano de Rollout
Rollout incremental, 1 pipeline por vez, do menor para o maior volume. WFs antigos permanecem intactos — rollback em menos de 2 minutos.
| Ordem | Pipeline | Volume | Risco |
|---|---|---|---|
| 1 | N3 FinOps | Baixo | Baixo |
| 2 | N3 Admin/Fin | Baixo | Baixo |
| 3 | N3 Juridico | Baixo | Baixo |
| 4 | N3 Ciber | Baixo | Baixo |
| 5 | N3 Fraude | Medio | Medio |
| 6 | N3 Tech (3) | Medio | Medio |
| 7 | N2 | Medio | Medio |
| 8 | N1 Humano | Alto | Alto |
Secao 08
Rollback
Tempo de rollback: < 2 minutos. WFs antigos permanecem intactos.
Procedimento
- Desabilitar WF novo (v6 pool)
- Reativar WF antigo (v4/v5) — codigo ainda esta la
- Rodar script
rollback-pool-to-novo.jspara mover tickets do pool de volta para "Novo"
Stages: Os stages "Aguardando atribuicao" podem ficar nos pipelines sem impacto.
Nao precisa deletar. Sao apenas stages inativos se nenhum WF direciona tickets para la.