Este material foi elaborado para facilitar o entendimento daqueles que desejarem consumir os dados históricos gerados pela plataforma cVortex e replicados para banco de dados externo à plataforma.
Visão geral do Banco de Dados
Engines SQL suportadas
Os dados históricos da plataforma são replicados para bancos de dados SQL. São suportadas as seguintes engines:
-
Microsoft SQL Server 2012 ou superior
-
Postgresql 8.0 ou superior
-
Oracle Database 11g ou superior
Como o dado é replicado
Os registros são gerados automaticamente no banco de dados histórico conforme ocorrem eventos referentes ao uso da plataforma.
Observação:
-
Os dados são replicados de forma automática, com delay mínimo (near real time) entre a gravação de dados na plataforma e a replicação no banco de dados de destino.
Relação das tabelas disponíveis
As tabelas aqui relacionadas representam entidades nativas da plataforma, catalogadas no Entity Manager e mapeadas como relevantes para a vertical Customer Service. Essas entidades são replicadas para o banco de dados relacional seguindo a mesma estrutura de dados visível pelo ambiente de administração.
|
Table |
Description |
|---|---|
|
|
Cadastro de agentes |
|
|
Cadastro de status de agente |
|
|
Detalhamento das mudanças de status dos agentes |
|
|
Consolidado de tempos operacionais dos agentes |
|
|
Cadastro de unidades de negócio |
|
|
Casos registrados na plataforma |
|
|
Cadastro de ações possíveis de execução sobre casos |
|
|
Lote de casos importados |
|
|
Relatório de importação de casos em lote |
|
|
Histórico de casos quanto às transições de status e ações realizadas em geral sobre os casos |
|
|
Motivos de abertura ou encerramento de casos |
|
|
Cadastro de status de casos |
|
|
Cadastro de empresas |
|
|
Cadastro de tipos de empresa |
|
|
Contato de pessoas |
|
|
Histórico de interações com o caso conforme o canal de atendimento utilizado |
|
|
Cadastro de definições de mailing |
|
|
Cadastro de pessoas |
|
|
Cadastro de canais de atendimento |
|
|
Cadastro de listas de casos |
|
|
Cadastro de equipes de agentes |
|
|
Associação entre equipes |
|
|
Cadastro de usuários da plataforma |
|
|
Relacionamento entre usuários e unidades de negócio |
|
|
Segue a mesma estrutura da entidade personalizada Case Detail no Entity Manager da plataforma. É dinâmica conforme necessidade da operação de Customer Service e pode ter sua estrutura alterada sempre que necessário. |
Detalhamento de atributos por tabela
Considerações gerais sobre atributos
|
Column/Type |
Description |
|---|---|
|
Identificadores como chaves alfanuméricas |
Os atributos identificadores nas tabelas são sempre chaves alfanuméricas extensas |
|
Datas em formato bigint |
Os campos de data representam Unix Timestamp, que é uma maneira de rastrear o tempo como um total de segundos em execução. Esta contagem começa no Unix Epoch em 1º de janeiro de 1970 no UTC. |
tb_agent
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Status corrente do agente |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Ramal do agente |
|
|
|
Identificador único do registro |
|
|
|
Identificador da Pessoa vinculada ao registro de agente |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
tb_agentstatus
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Ignorar |
|
|
|
Ignorar |
|
|
|
Indica se o status é nativo na plataforma ou criado pelo usuário. 0: PERSONALIZADO 1: NATIVO |
|
|
|
Identificador da unidade de negócio associada ao status |
|
|
|
Descrição do status |
|
|
|
Duração máxima em milisegundos |
|
|
|
Nome do status |
|
|
|
Tipo do status e o que ele representa na plataforma Valores possíveis: ACW NOT_READY BREAK IDLE UNAVAILABLE |
tb_agentstatuscontrol
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Identificador do Agente |
|
|
|
Identificador do Status do agente |
|
|
|
Data/hora da solicitação de cancelamento da requisição |
|
|
|
Id do caso vinculado ao Agente durante o status |
|
|
|
Duração em milissegundos do status |
|
|
|
Data/hora de finalização do status |
|
|
|
Nome do evento que iniciou o status |
|
|
|
|
|
|
|
Data/hora de solicitação do status |
|
|
|
Data/hora de início do status |
tb_agentstatussummary
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Tempo médio trabalhando em casos em milissegundos |
|
|
|
Id do último caso fechado |
|
|
|
Data de referência do registro |
|
|
|
Tempo total de ACW em milissegundos |
|
|
|
Tempo total de pausa em milissegundos |
|
|
|
Tempo total de atendimento em milissegundos |
|
|
|
Total de casos fechados |
|
|
|
Tempo total trabalhando em casos em milissegundos |
|
|
|
Tempo total ocioso em milissegundos |
|
|
|
Tempo total logado em milissegundos |
|
|
|
Tempo total não disponível em milissegundos |
tb_businessunit
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Id da empresa vinculada a Unidade de negócios |
|
|
|
Id amigável da unidade de negócios |
|
|
|
Identificador da unidade de neǵocios à qual esta unidade de negócios está relacionada (se houver) |
|
|
|
Nome da Unidade de negócios |
|
|
|
Tipo da Unidade de neǵocios |
tb_case
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUÍDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Identificador da unidade de negócio associada |
|
|
|
Identificador do lote de casos |
|
|
|
Identificador amigável do caso |
|
|
|
Origem do caso |
|
|
|
Status do caso |
|
|
|
Tipo do caso |
|
|
|
Indica se o caso está ou não encerrado 0: ABERTO 1: ENCERRADO |
|
|
|
Data e hora em que o caso foi encerrado |
|
|
|
Identificador do usuário que encerrou o caso. Se foi encerrado pelo sistema o valor é default-user |
|
|
|
Motivo de encerramento do caso |
|
|
|
Identificador da empresa (cliente ou não) que demandante do caso quando se tratar de um caso de Pessoa Jurídica |
|
|
|
Usuário atualmente designado para o caso |
|
|
|
Canal vinculado ao caso |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Indica se o caso está ou não expirado 0: NÃO EXPIRADO 1: EXPIRADO |
|
|
|
Indicador externo de um caso para rastreabilidade |
|
|
|
Indica o status do caso dentro do fluxo 0: PARADO 1: EM PROGRESSO |
|
|
|
Última ação executada no caso |
|
|
|
Motivo de abertura do caso |
|
|
|
Data e hora da abertura do caso na origem |
|
|
|
Identificador da pessoa (cliente ou não) que demandante do caso quando se tratar de um caso de Pessoa Física |
|
|
|
Prioridade do caso LOWEST LOW MEDIUM HIGH HIGHEST |
|
|
|
Identificador atual da fila de classificação do caso |
|
|
|
|
|
|
|
|
|
|
|
Data e hora de reabertura do caso |
|
|
|
Responsável pela reabertura do caso. Quando reaberto automaticamente pelo sistema este valor é default-user |
|
|
|
Data e hora de agendamento do caso |
|
|
|
Data e hora em que iniciou o progresso do caso dentro do fluxo |
|
|
|
Assunto do caso |
tb_caseaction
|
Column |
Type |
Description |
|---|---|---|
|
_id |
varchar |
Identificador único do registro |
|
_version |
varchar |
Ignorar |
|
active |
bit |
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
createdAt |
bigint |
Data e hora de criação do registro |
|
createdBy |
varchar |
Identificador do usuário que criou o registro |
|
deleted |
bit |
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
id |
varchar |
Identificador único do registro |
|
updatedAt |
bigint |
Data e hora de atualização do registro |
|
updatedBy |
varchar |
Identificador do usuário que atualizou o registro |
|
builtIn |
bit |
Indica se o status é nativo na plataforma ou criado pelo usuário. 0: PERSONALIZADO 1: NATIVO |
|
businessUnit |
varchar |
Unidade de negócios vinculada a ação |
|
description |
varchar |
Descrição da ação |
|
dispositionCode |
varchar |
Código vinculado a ação quando integrado a plataforma externa de discagem. Este campo possui valor apenas integrado à plataforma Aspect UIP. |
|
easyId |
varchar |
Id amigável da ação |
|
name |
varchar |
Nome da ação |
tb_casebatch
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Data/hora de importação do lote de arquivos |
|
|
|
Identificador do mailing |
|
|
|
Nome do lote de casos |
|
|
|
Quantidade de casos criados |
|
|
|
Quantidade de casos ignorados |
|
|
|
Quantidade de casos reabertos |
|
|
|
Quantidade de casos rejeitados |
|
|
|
Quantidade total de registros do lote |
|
|
|
Quantidade total de registros inválidos |
|
|
|
|
|
|
|
Data e hora de encerramento do processo de importação |
|
|
|
Data e hora de início do processo de importação |
|
|
|
Status da importação |
tb_casebatchreport
|
Column |
Type |
Description |
|---|---|---|
|
_id |
varchar |
Identificador único do registro |
|
_version |
varchar |
Ignorar |
|
active |
bit |
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
createdAt |
bigint |
Data e hora de criação do registro |
|
createdBy |
varchar |
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Identificador da unidade de negócio associada |
|
|
|
Identificador do lote de casos |
|
|
|
Identificador do registro rejeitado |
tb_casehistory
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Nome do agente responsável pelo histórico |
|
|
|
Nome de usuário do agente responsável pelo histórico |
|
|
|
Identificador amigável do caso |
|
|
|
Identificador amigável da unidade de negócio associada |
|
|
|
Identificador da unidade de negócio associada |
|
|
|
Nome da unidade de negócio associada |
|
|
|
Total da duração da ligação (quando houver) em milisegundos |
|
|
|
Identificador amigável da ação que gerou o histórico |
|
|
|
Nome da ação que gerou o histórico |
|
|
|
Identificador do lote de casos vinculado ao caso |
|
|
|
Data e hora de criação do caso |
|
|
|
Identificador do Caso |
|
|
|
Identificador da origem do caso |
|
|
|
Identificador amigável do status do caso |
|
|
|
Identificador do status do caso |
|
|
|
Nome do status do caso |
|
|
|
Identificador amigável do tipo do caso |
|
|
|
Identificador do tipo do caso |
|
|
|
Nome do tipo do caso |
|
|
|
Identificador da motivação do histórico: CREATED: Caso criado ASSIGNED: Caso designado para um usuário REOPENED: Caso reaberto CHANGE_STATUS: Alteração de status do caso CHANGE_PROGRESS: Alteração do progresso do caso UPDATED: Atualização de dados do caso CLASSIFICATION: Caso classificado em fila DELIVERED: Caso entregue para atendimento CLOSED: Caso encerrado EXPIRED: Caso expirado EXECUTED_ACTION: Ação executada sobre o caso CONTACT_SUCCESS: Contato durante o atendimento realizado com sucesso CONTACT_NOT_SUCCESS: Tentativa de contato sem sucesso |
|
|
|
Data e hora que ocorreu a mudança no caso que gerou o histórico. Essa é a data apresentada no histórico do caso na AGW e MGW e que deve ser considerada para visões e relatórios. |
|
|
|
Descrição da mudança no caso que gerou o histórico |
|
|
|
Canal vinculado ao caso quando ocorreu o histórico |
|
|
|
Indica se o caso está ou não encerrado 0: ABERTO 1: ENCERRADO |
|
|
|
Data e hora em que o caso foi encerrado |
|
|
|
Identificador do usuário que encerrou o caso. Se foi fechado pelo sistema o valor é default-user |
|
|
|
Identificador amigável do motivo de encerramento do caso |
|
|
|
Identificador do motivo de encerramento do caso |
|
|
|
Nome do motivo de encerramento do caso |
|
|
|
Identificador da empresa (cliente ou não) que demandante do caso quando se tratar de um caso de Pessoa Jurídica |
|
|
|
Contato utilizado no caso que gerou o histórico. Exemplo: número de telefone, e-mail |
|
|
|
Data e hora em que foi estabelecido o contato no canal correspondente que gerou o histórico |
|
|
|
Data e hora em que o contato foi encerrado no canal correspondente que gerou o histórico |
|
|
|
Motivo de encerramento do contato |
|
|
|
Identificador interno da plataforma para relacionamento do canal utilizado no histórico do contato |
|
|
|
Data e hora em que o contato foi estabelecido na central de atendimento |
|
|
|
Identificador do usuário que gerou o histórico |
|
|
|
Login do usuário que gerou o histórico (REVISAR) |
|
|
|
Indica se o caso está ou não expirado 0: NÃO EXPIRADO 1: EXPIRADO |
|
|
|
Ramal do usuário que gerou o histórico |
|
|
|
Identificador externo do caso |
|
|
|
Data e hora em que o caso foi importado |
|
|
|
Indica o status do caso dentro do fluxo 0: PARADO 1: EM PROGRESSO |
|
|
|
Última ação executada no caso |
|
|
|
Motivo de abertura do caso |
|
|
|
Data e hora da abertura do caso na origem |
|
|
|
Nome vinculado a pessoa do usuário que gerou o histórico |
|
|
|
Documento da pessoa (cliente ou não) demandante do caso quando se tratar de um caso de Pessoa Física |
|
|
|
Identificador amigável da pessoa (cliente ou não) demandante do caso quando se tratar de um caso de Pessoa Física |
|
|
|
Identificador da pessoa (cliente ou não) demandante do caso quando se tratar de um caso de Pessoa Física |
|
|
|
Nome da pessoa (cliente ou não) demandante do caso quando se tratar de um caso de Pessoa Física |
|
|
|
Prioridade do caso LOWEST LOW MEDIUM HIGH HIGHEST |
|
|
|
Tipo do provedor do canal utilizado no momento em que o histórico foi gerado VOICE WEBCHAT |
|
|
|
Descrição da fila do caso no momento de geração do histórico |
|
|
|
Identificador da fila do caso no momento de geração do histórico |
|
|
|
Nome da fila do caso no momento de geração do histórico |
|
|
|
Data e hora de reabertura do caso |
|
|
|
Responsável pela reabertura do caso. Quando reaberto automaticamente pelo sistema este valor é default-user |
|
|
|
Indica se é pessoa física ou jurídica PERSON: pessoa física COMPANY: pessoa jurídica |
|
|
|
Data de hora de agendamento do caso |
|
|
|
Identificador do serviço em plataforma externa vinculado ao canal que gerou o histórico |
|
|
|
Assunto do caso |
|
|
|
Identificador da equipe do agente que gerou o histórico |
|
|
|
Identificador do lider da equipe do agente que gerou o histórico |
|
|
|
Nome do lider da equipe do agente que gerou o histórico |
|
|
|
Nome de usuário do lider da equipe do agente que gerou o histórico |
|
|
|
Nome da equipe do agente que gerou o histórico |
|
|
|
Identificador do usuário do agente que gerou o histórico |
|
|
|
Nome de usuário do agente que gerou o histórico |
tb_casereason
|
Column |
Type |
Description |
|---|---|---|
|
_id |
varchar |
Identificador único do registro |
|
_version |
varchar |
Ignorar |
|
active |
bit |
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
createdAt |
bigint |
Data e hora de criação do registro |
|
createdBy |
varchar |
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Tipo do motivo do caso OPENING_REASON: indica motivo de abertura CLOSING_REASON: indica motivo de encerramento |
|
|
|
Identificador do tipo do caso para o qual o motivo pode ser utilizado |
|
|
|
Descrição do motivo do caso |
|
|
|
Identificador amigável do motivo do caso |
|
|
|
Nome do motivo do caso |
|
|
|
Identificador do motivo pai |
tb_casestatus
|
Column |
Type |
Description |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Identificador da unidade de negócio associada |
|
|
|
Indica se o status é o padrão para o caso 0: NÃO É STATUS PADRÃO 1: É STATUS PADRÃO |
|
|
|
Data e hora em que o registro foi excluído |
|
|
|
Descrição do status do caso |
|
|
|
Identificador amigável do status do caso |
|
|
|
Nome do status do caso |
|
|
|
Indica o tipo do status para progresso do caso INITIAL: status inicial INTERMEDIATE: status intermediário FINAL: status progresso encerrado EXPIRED: caso expirado |
tb_company
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Indica se é a empresa principal responsável pela conta na plataforma (cliente cVortex) 0: NÃO 1: SIM |
|
|
|
Nome da empresa |
|
|
|
Identificador do tipo de empresa |
tb_companytype
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Nome do tipo de empresa |
tb_digitalhistory
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador do usuário conectado na plataforma e vinculado ao histórico |
|
|
|
Duração do contato em segundos |
|
|
|
Evento que causou o registro do histórico |
|
|
|
Data e hora da emissão do evento |
|
|
|
Componente da plataforma responsável pela emissão do evento |
|
|
|
Identificador do ramal interno na plataforma que recebeu ou originou a chamada |
|
|
|
Identificador do caso |
|
|
|
Código do motivo de encerramento do contato. Normalmente utilizado para rastreabilidade de eventos vinculados a plataformas de telefonia integradas |
|
|
|
|
|
|
|
|
|
|
|
Número externo do telefone da chamada sainte ou entrante |
|
|
|
|
|
|
|
Tempo de ring em segundos |
|
|
|
IGNORAR |
|
|
|
Tempo de fala em segundos |
|
|
|
IGNORAR |
|
|
|
Tipo do provedor do canal VOICE WEBCHAT |
|
|
|
Tipo do provedor do canal VOICE WEBCHAT |
|
|
|
Indica o sentido do contato I: Contato entrante (Inbound) O: Contato sainte (Outbound) |
tb_mailing
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Identificador da unidade de negócios |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Data e hora em que o registro foi excluído |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tb_person
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Data e hora em que o registro foi excluído |
|
|
|
Documento identificador da pessoa |
|
|
|
Identificador amigável da pessoa |
|
|
|
Endereço de e-mail da pessoa |
|
|
|
Nome completo da pessoa |
tb_provideraccountkey
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Identifica o canal utilizado no provedor VOICE WEBCHAT |
|
|
|
Data e hora em que o registro foi excluído |
|
|
|
Nome do canal |
|
|
|
Conta vinculada ao canal |
tb_queue
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Identificador da unidade de negócio associada |
|
|
|
Data e hora em que o registro foi excluído |
|
|
|
Descrição da fila |
|
|
|
Nome da fila |
tb_team
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Identificador da unidade de negócio |
|
|
|
Nome da equipe |
|
|
|
Identificador da pessoa lider da equipe |
tb_teammember
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Data e hora em que o registro foi excluído |
|
|
|
Identificador da pessoa membra da equipe |
|
|
|
Identificador da equipe |
tb_user
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Data e hora em que o registro foi excluído |
|
|
|
Endereço de e-mail do usuário |
|
|
|
|
|
|
|
Identificador da pessoa vinculada ao usuário |
|
|
|
Nome de usuário |
|
|
|
Identificador do espaço de trabalho default do usuário |
tb_userbusinessunit
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Identificador da unidade de negócio associada |
|
|
|
Data e hora em que o registro foi excluído |
|
|
|
Identificador do usuário vinculado a unidade de negócio |
tb_consolidateslareport
O tempo do SLA na tabela de report pode demorar alguns minutos ou até mesmo horas para serem atualizados no report dependendo da quantidade de casos abertos, em atendimento na plataforma. A atualização dos SLAs tem uma maior prioridade para SLA com menor tempo para SLA de maior tempo. Por exemplo, um SLA de 1 hora será atualizado mais vezes durante 1 hora que um SLA de 24 horas.
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Nome do SLA para o caso |
|
|
|
Tempo gasto para o SLA |
|
|
|
Se o SLA está Iniciado ou Finalizado "START" , "FINISH" |
|
|
|
Unidade de negócio que o SLA pertence |
|
|
|
Id do atendimento relacionado a esse SLA |
|
|
|
Tempo cadastrado para o SLA |
|
|
|
Qual o % do SLA gasto até o momento |
|
|
|
Id de controle da plataforma para o SLA |
tb_messagehistory
|
Column |
Type |
Description |
|---|---|---|
|
|
|
Identificador único do registro |
|
|
|
Ignorar |
|
|
|
Flag identificadora do status do registro 0: INATIVO 1: ATIVO |
|
|
|
Data e hora de criação do registro |
|
|
|
Identificador do usuário que criou o registro |
|
|
|
Indica se o registro foi excluído logicamente da plataforma 0: NÃO EXCLUIDO 1: EXCLUIDO |
|
|
|
Identificador único do registro |
|
|
|
Data e hora de atualização do registro |
|
|
|
Identificador do usuário que atualizou o registro |
|
|
|
Identificador da unidade de negócio associada |
|
|
|
Data e hora em que o registro foi excluído |
|
|
|
Identificador do usuário vinculado a unidade de negócio |
|
|
|
Para o canal de voz irá informar o usuário que fez ou recebeu a ligação; (Futuramente terá as informações dos usuários que enviaram mensagens de chat, sms, whatsapp) |
|
|
|
Representa o ID do caso atendido. |
|
|
|
Quando a mensagem é do tipo e-mail os Carbon Copy (CC) serão informados aqi |
|
|
|
Informa qual o canal de envio da mensagem |
|
|
|
Informa a conta do canal que foi feita a mensagem |
|
|
|
ID que agrupa várias mensagens em uma mesma conversa |
|
|
|
Normalmente usado para o identificador do destinatário (Número de telefone, email, etc...) |
|
|
|
Tempo em segundos de uma ligação no canal de voz |
|
|
|
Quando enviada uma mensagem estruturada para Whatsapp o id do template será informado aqui |
|
|
|
Atributo contido na coleção providerAccountKey |
|
|
|
Conteúdo da mensagem que foi enviada |
|
|
|
Status da mensagem. Pode ser NEW, READ ou REPLIED
READ quer dizer que o email foi visualizado na AGW, isto é, clicado na listagem REPLIED (Não implementado)
|
|
|
|
Data que a mensagem foi recebida |
|
|
|
Título da conversa, utilizado quando o canal é email |
|
|
|
Uso interno da plataforma |
|
|
|
Uso interno da plataforma |
|
|
|
Para o canal de email são os destinatários de um email |
|
|
|
Árvore de MessageId (Header de email) até a mensagem atual |
|
|
|
Campo de email que indica o MessageId (Header de email) da conversação inicial |
|
|
|
Se a mensagem foi enviada ou recebida |
O Asset ID, que é o ID do caso na MessageHistory e por lá, na entidade Case conseguirá pegar o Current Assignee, que é a pessoa que fez o atendimento e os envios das mensagens.
Na entidade Case, conseguimos chegar também no cliente pegando o Person Requester ID. Que é o ID do cliente na entidade Person.
tb_case_detail
A tabela case_detail segue a mesma estrutura da entidade personalizada Case Detail no Entity Manager da plataforma. É dinâmica conforme necessidade da operação de Customer Service e pode ter sua estrutura alterada sempre que necessário. Por esse motivo não são relacionados atributos neste documento, mas é listada aqui por ter sido padronizada para extensão dos dados do caso.
Expurgo de dados
Não há mecanismos para expurgo de dados na plataforma. Dessa forma é de total responsabilidade do administrador de banco de dados SQL no destino que recebe os dados cuidar da devida manutenção para disponibilidade e desempenho no acesso aos dados.
Consultas de exemplo
Tempo em que um caso esteve em atendimento por um Agente
Para saber o tempo em que um caso esteve em atendimento por um Agente basta recuperar os registros de mudanças de status do tipo BUSY.
Query: Recupera tempo de atendimento Caso x Agente
SELECT
TO_TIMESTAMP(CASO.createdat / 1000.0)::date AS data_criacao_caso,
CASO.CASEID id_do_caso,
caso.currentchannel as canal,
TU.USERNAME,
TO_CHAR(
make_interval(secs => sum(CON.duration) / 1000),
'HH24:MI:SS'
) AS tempo_em_antendimento,
CASO."_id" as case_uuid
FROM
TB_AGENTSTATUSCONTROL CON
LEFT JOIN TB_AGENTSTATUS STA ON CON.AGENTSTATUSID = STA.ID
LEFT JOIN TB_AGENT AGE ON CON.agentId = AGE.id
LEFT JOIN TB_USER TU ON (AGE.PERSONID = TU.PERSONID and TU.deleted=FALSE)
LEFT JOIN TB_CASE CASO ON CON.CASEID = CASO._id
where
1=1
and TU.username not like '%cvortex%'
and STA.type = 'BUSY'
AND CON.caseId IS NOT NULL
AND EVENTNAME NOT IN (
'LoggedUserEvent',
'LogoffUserEvent',
'ExecutedCaseActionEvent',
'CreatedAgentEvent'
)
and caso.createdat between -- FILTRO DE data DE CRIACAO do CASO
FLOOR(EXTRACT(EPOCH FROM TIMESTAMP '2025-06-02 00:00:00' AT TIME ZONE 'America/Sao_Paulo') * 1000)::bigint AND
FLOOR(EXTRACT(EPOCH FROM TIMESTAMP '2025-06-02 23:59:59' AT TIME ZONE 'America/Sao_Paulo') * 1000)::bigint
and con.startedstatusat between -- FILTRO DE data EM QUE O CASO FOI ATENDIDO POR AGENTE
FLOOR(EXTRACT(EPOCH FROM TIMESTAMP '2025-06-04 00:00:00' AT TIME ZONE 'America/Sao_Paulo') * 1000)::bigint AND
FLOOR(EXTRACT(EPOCH FROM TIMESTAMP '2025-06-04 23:59:59' AT TIME ZONE 'America/Sao_Paulo') * 1000)::bigint
group by
caso.createdat, id_do_caso,canal,username,case_uuid
ORDER BY
caso.createdat, CASO.CASEID;
Histórico de Mensagens Enviadas
Recuperando todas as mensagens enviadas pelos clientes/recebidas para um caso incluindo as informações do atendente que enviou e o cliente.
Query: Recupera as mensagens enviadas pelos clientes e pelos atendentes (sintaxe MSSQL)
|
Buscar por HSM enviados
É possível pegar todos as mensagens ativas HSM que foram enviadas por Caso para cada cliente. Segue query abaixo:
Para saber se a mensagem é HSM você deve olhar o templateid na entidade Message History.
SELECT TOP (1000) me.channel Canal, me.message Mensagem, me.way, me.templateId, me.assetId,
DATEADD(MILLISECOND, CAST(me.createdAt AS BIGINT) % 86400000, DATEADD(day, CAST(me.createdAt AS BIGINT) / 86400000, '19700101' ))AS DataMSG,
ca.caseId CaseID, cli.fullName Cliente
FROM [DB_CVORTEX_VR].[dbo].[tb_messagehistory] me with(nolock)
inner join [DB_CVORTEX_VR].[dbo].[tb_case] ca with(nolock) on me.assetId =ca._id
inner join tb_person cli on ca.personRequesterId = cli._id
--left join tb_person pe with(nolock) on pe._id = ca.currentAssigneeId
where me.channel = 'WHATSAPP'
and me.way = 'SENT' and me.templateId is not null
order by me.createdAt
Recuperar todos os casos que tiveram interações Whatsapp
Com a query abaixo é possível buscar todos os casos que tiveram interações com o canal Whatsapp na plataforma cVortex. A consulta está especificando o canal Whatsapp , porém se for necessário buscar por outros canais é possível replicar e adicionar os canais WEBCHAT, EMAIL e criar visões para esses canais também.
Na consulta estamos trazendo apenas o caso e relacionando com case type e message history. Porém se for necessário, pelo caso é possível relacionar com a entidade Case Reason, Status e pegar as tabulações e o Status do caso, bem como com a entidade Case Detail e pegar os dados extras do caso e demais dados que forem necessários para o relatório.
select distinct ca._id,ca.caseId, (select count(*) from tb_messagehistory me with(nolock) where me.assetId = ca._id and me.channel = 'WHATSAPP') as Whatsapp ,ct.name
from tb_case ca with(nolock)
inner join tb_casetype ct with(nolock) on ca.caseType = ct._id
inner join tb_messagehistory me with(nolock) on ca._id = me.assetId and me.channel = 'WHATSAPP'
order by ca.caseId
Buscar os casos com dados do SLA
Com a query abaixo, o usuário conseguirá buscar os dados de SLA de um caso. Lembrando que um mesmo caso pode ter vários SLAs , poderemos ter várias linhas para o mesmo caso para SLAs diferentes.
Entidade que possui os dados de SLA dos atendimentos: tb_consolidatedslareport
SELECT ca.caseid as "ID_CASO" ,tipo."name" as "TIPO CASO", sla.slaname as "SLA NAME", sla.timespent as "TEMPO GASTO",
sla.currentslastep as "SLA STATUS", sla.sladuration as "SLA DURACAO", sla.progress as "PROGRESSO SLA",
timeleft as "SLA TEMPO RESTANTE"
FROM
tb_case ca,
tb_consolidatedslareport sla,
tb_casetype tipo
where ca.id = sla.caseid
and ca.createdat > 1671505200000
SELECT
c.caseid AS “Id Caso”,
ct.description as “Case Type”,
p.fullname as “Nome do Solicitante”,
pa.fullname as “Atendente”,
to_char(
TO_TIMESTAMP(c.updatedat / 1000),
‘DD/MM/YYYY HH24:MI:SS’
) as “Data atualização”,
cs.name AS “Status”,
cd.numero_telefone as “Telefone”,
cd.numero_atendimento_ouvidorsus as “Numero atendimento ouvidor SUS”,
cd.numero_atendimento_ouvidorsus2 as “Numero atendimento ouvidor SUS2”,
cd.numero_protocolo_manifestacao2 as “Numero protocolo manifestacao”,
cr.description as “Description”
,
case
when tc.timeleft < 0 then date_trunc(‘minute’,((tc.timeleft / -60 * -60 + -60) * interval ‘1 sec’ ))
else date_trunc(‘minute’,((tc.timeleft / 60 * 60 + 60) * interval ‘1 sec’ ))
end AS “Indicador SLA”
FROM tb_case c
INNER JOIN tb_casetype ct ON ct.id = c.casetype
INNER JOIN tb_casestatus cs ON cs._id = c.casestatus
INNER JOIN tb_person p ON p._id = c.personrequesterid
LEFT JOIN tb_person pa ON pa._id = c.currentassignee
LEFT JOIN tb_custom_case_detail cd ON cd.caseid = c._id
LEFT JOIN tb_casereason cr ON cr._id = c.closingreason
left join tb_consolidatedslareport tc on tc.caseid = cd.caseid
WHERE
cs.easyid = ‘3’
AND c.updatedat BETWEEN extract(
epoch
from
TIMESTAMP ‘2023-04-05 00:00:00’
) * 1000
AND extract(
epoch
from
TIMESTAMP ‘2023-05-04 23:59:59’
) * 1000
ORDER BY c.caseid ASC
Buscar as respostas de questionários dos atendimentos
Com a query abaixo, o usuário conseguirá buscar todas as respostas de questionários dos casos. Lembrando que um mesmo caso pode ter várias respostas para o mesmo questionário ou para questionários diferentes, poderemos ter várias linhas para o mesmo caso e para respostas de opções selecionadas.
select
tc.caseid as "ID Atendimento",
tq."_id" as "ID da Resposta" ,
tq.createdat as "Data da Respsoat",
tq.description as "Nome do Questionario",
tq2."label" as "Pergunta",
tq2."type" as "Tipo da Pergunta",
tq2.answer as "Resposta Texto",
tq3."label" as "Resposta Escolhida"
from "6230f2f5bd3a69548491bc37".tb_questionnaireanswer tq
inner join "6230f2f5bd3a69548491bc37".tb_case tc on tq.caseid = tc._id
left join "6230f2f5bd3a69548491bc37".tb_questionnairequestionanswer tq2 on tq."id" = tq2.questionnaireanswerid
left join "6230f2f5bd3a69548491bc37".tb_questionnairequestionoptionanswer tq3 on tq2."_id" = tq3.questionanswerid and tq3.chosenoption = true
order by tc.caseid desc
A busca acima retorna todas as questões de um questionário que foi respondido, mesmo que a pergunta em si não tenha sido respondida.
A busca abaixo retorna apenas questões respondidas e também o usuário que respondeu o questionário:
select p.fullname as Pessoa,
tc.caseid as "ID Atendimento",
tp.username as "Usuario",
tq."_id" as "ID da Resposta" ,
TO_TIMESTAMP(tq.createdat / 1000)::date as "Data da Resposta",
tq."name" as "Nome do Questionario",
tq2."label" as "Pergunta",
tq2."type" as "Tipo da Pergunta",
tq2.answer as "Resposta Texto"
, tq3."label" as "Resposta Escolhida"
from tb_questionnaireanswer tq
inner join tb_case tc on tq.caseid = tc._id
inner join tb_person p on tc.personrequesterid = p.id
inner join tb_casehistory tc2 on tc2.questionnaireanswerid = tq."_id"
left join tb_user tp on tc2.userid = tp."_id"
left join tb_questionnairequestionanswer tq2 on tq."id" = tq2.questionnaireanswerid
left join tb_questionnairequestionoptionanswer tq3 on tq2."_id" = tq3.questionanswerid and tq3.chosenoption = true
where 1=1
--and tc.caseid = 511542 -- informe o número do caso para filtrar
and TO_TIMESTAMP(tq.createdat / 1000)::date >'2025-06-01'
and ((tq2."type" = 'TEXT' and tq2.answer is not null) or (tq2."type" != 'TEXT' and tq3."label" is not null))
order by tq.createdat asc
Volumetria de casos fechados
A consulta abaixo traz os dados de casos fechados durante o mês de junho/2025.
select tc.caseid as id_do_caso, tc.currentchannel as canal, tc2."name" as tipo_de_caso, tcs."name" as status, to_timestamp(tc.createdat / 1000) as criado_em, to_timestamp(tc.closedat / 1000) as fechado_em, u.username as fechado_por , t."name" as equipe, tc.id as case_uuid
from tb_case tc
left outer join tb_casetype tc2 on (tc.casetype = tc2.id)
left outer join tb_user u on (tc.closedby = u.id)
left outer join tb_teammember tm on (u.personid = tm.personid)
left outer join tb_team t on (tm.teamid = t.id)
left outer join tb_casestatus tcs on (tc.casestatus = tcs.id)
where 1=1
and closed = true
and tc.createdat between FLOOR(EXTRACT(EPOCH FROM TIMESTAMP '2025-06-01 00:00:00' AT TIME ZONE 'America/Sao_Paulo') * 1000)::bigint AND
FLOOR(EXTRACT(EPOCH FROM TIMESTAMP '2025-06-30 23:59:59' AT TIME ZONE 'America/Sao_Paulo') * 1000)::bigint
order by id_do_caso asc
Tempo de atribuição dos casos aos Agentes
A consulta abaixo traz o tempo em que o caso ficou atribuído a cada Agente durante o dia 01/06/2025. Pode também ser interpretado como o TMA por Agente.
-- TEMPO DE ATRIBUICAO DE CASOS POR AGENTE
WITH casos_filtrados AS (
SELECT
id AS case_uuid,
to_timestamp(createdat / 1000) AS data_criacao_caso,
createdat,
caseid AS caseid,
currentchannel as canal
FROM tb_case
WHERE 1=1
and createdat BETWEEN
FLOOR(EXTRACT(EPOCH FROM TIMESTAMP '2025-06-01 00:00:00' AT TIME ZONE 'America/Sao_Paulo') * 1000)::bigint AND
FLOOR(EXTRACT(EPOCH FROM TIMESTAMP '2025-06-01 23:59:59' AT TIME ZONE 'America/Sao_Paulo') * 1000)::bigint
),
historico_ordenado AS (
SELECT
ch.caseid AS case_uuid,
ch.agentusername AS user_name,
to_timestamp(ch.createdat / 1000) AS data_do_historico,
LEAD(to_timestamp(ch.createdat / 1000)) OVER (
PARTITION BY ch.caseid
ORDER BY ch.createdat
) AS proxima_data
FROM tb_casehistory ch
JOIN casos_filtrados c ON c.case_uuid = ch.caseid
),
duracoes AS (
SELECT
case_uuid,
user_name,
data_do_historico,
proxima_data,
proxima_data - data_do_historico AS tempo_atribuido
FROM historico_ordenado
WHERE user_name IS NOT NULL
)
select
d.case_uuid,
c.caseid,
c.data_criacao_caso,
c.canal,
d.user_name,
TO_CHAR(SUM(d.tempo_atribuido), 'HH24:MI:SS') AS tempo_total_atribuido
FROM duracoes d
JOIN casos_filtrados c ON c.case_uuid = d.case_uuid
GROUP BY d.case_uuid, c.caseid, c.data_criacao_caso, c.canal, d.user_name
ORDER BY c.data_criacao_caso, c.caseid, d.case_uuid, tempo_total_atribuido DESC;