Modelagem de dados do ticket
Este documento tem como objetivo clarificar os campos chave referentes aos diversos campos presentes nos tickets, para facilitar a consulta em sistemas de gerenciamento de bancos de dados.
Existem diversas entidades e objetos presentes no sistema, e seus relacionamentos podem se tornar confusos, como os tickets muitas vezes recebem suas informações de entidades que não são óbvias à princípio.
Tabela
A tabela a seguir descreve os campos do ticket, as respectivas chaves do banco de dados, o tipo de dado e o objeto do banco de dados:
Campo do ticket | Tipo de dado | Descrição | Campo chave | Objeto |
|---|---|---|---|---|
ID | integer | ID do ticket | ss.idsolicitacaoservico | |
Serviço | string | Nome do serviço | serv.nomeservico | |
Tipo | string | Tipo do ticket | tds.classificacao | |
Requisição/incidente | | Se é requisição ou incidente | | |
Solicitante | string | Nome do solicitante | soli.nome | |
Criador | string | Nome do criador do ticket | criador.nome | |
Data/hora abertura | timestamp | Data de abertura do ticket | | |
Sequencia_Reabertura | integer | Número de vezes que o ticket foi reaberto | ss.seqreabertura | |
Data/hora_captura | timestamp | Data de captura do ticket | ss.datahoracaptura | |
Tempo Captura | | Tempo até o ticket ser capturado | | |
Prazo Captura(SLA) | | Prazo para o ticket ser capturado após abertura | | |
Tempo Atend. | | Tempo máximo para atendimento | | |
Situação | | Situação do ticket | ss.idstatus | |
Data/hora limite | timestamp | Data máxima para atendimento | | |
Grupo | string | Grupo para onde o ticket foi direcionado | gr_exec.nome | |
Data/hora encerramento | timestamp | Data em que o ticket foi encerrado | | |
Responsável atual | string | Nome do responsável atual | tecnico.nome | |
Origem do contato | string | Local de onde o ticket foi originado | | |
Data e hora da suspensão | timestamp | Data da suspensão do ticket | | |
Data e hora da reativação | timestamp | Data da reativação do ticket | | |
Impacto | | Impacto do ticket | ss.impacto | |
Urgência | | Urgência do ticket | ss.urgencia | |
Contrato | string | Contrato vinculado ao ticket | c.numero | |
SLA | | Tempo do SLA | | |
Prioridade | integer | Prioridade do ticket | ss.idprioridade | |
Tempo de atraso do SLA | | Tempo em que o ticket passou do limite máximo do SLA | | |
Dentro SLA | bool | Se ticket está ou não dentro do SLA | | |
Tempo de atendimento | | Tempo entre a captura e encerramento do ticket | | |
SQL
select ss.idsolicitacaoservico, portf.nomeapresentacao portfolio, serv.nomeservico servico, ativ.nomeservico atividade, tds.classificacao tipo,
soli.nome solicitante, criador.nome criador, ss.datahorasolicitacao datahoraabertura, ss.seqreabertura, ss.datahoracaptura, ss.tempocapturahh, ss.tempocapturamm,
ss.prazocapturahh, ss.prazocapturamm, ss.tempoatendimentohh, ss.tempoatendimentomm,
ss.idstatus situacao, ss.datahoralimite, gr_exec.nome grupo_executor, --grupo capturado
ss.datahorafim, tecnico.nome responsavelatual,
orig.descricao origem_contato, ss.datahorasuspensao, ss.datahorareativacao,
ss.impacto, ss.urgencia, c.numero numero_contrato,
ss.prazohh, ss.prazomm, ss.idprioridade, ss.tempoatrasohh, ss.tempoatrasomm,
CASE itsm.f_sla_noprazo(ss.idstatus, ss.situacaosla, ss.datahoralimite, ss.datahorasuspensaosla, ss.prazohh,
ss.prazomm, ss.tempoatendimentohh, ss.tempoatendimentomm)
WHEN 'S'::text THEN 'SLA no prazo'::text
ELSE 'SLA rompido'::text
END status_sla,
ss.tempoatendimentohh,
ss.tempoatendimentomm
from solicitacaoservico ss join servicocontrato sc on ss.idservicocontrato = sc.idservicocontrato
join servico ativ on sc.idservico = ativ.idservico
join servicoautorelacionamento sa on sa.idservico = ativ.idservico
join servico serv on sa.idservicorelacionado = serv.idservico
join portfolioservico portf on ativ.idportfolioservico = portf.idportfolioservico
join tipodemandaservico tds on ss.idtipodemandaservico = tds.idtipodemandaservico
join empregados soli on ss.idsolicitante = soli.idempregado
join usuario criador on ss.idresponsavel = criador.idusuario
join execucaosolicitacao e on ss.idsolicitacaoservico = e.idsolicitacaoservico
join bpm_itemtrabalhofluxo it on e.idinstanciafluxo = it.idinstancia --É possível existir mais de uma tarefa aberta por solicitação -> active=1
join contratos c on sc.idcontrato = c.idcontrato
left join grupo gr_exec on it.executor_group_id = gr_exec.idgrupo
left join usuario tecnico on it.idresponsavelatual = tecnico.idusuario
left join origematendimento orig on ss.idorigem = orig.idorigem
where it.active = 1 and
(sc.datafim is null or sc.datafim >= CURRENT_TIMESTAMP) and (sc.deleted is null or sc.deleted<>'S')
order by ss.idsolicitacaoservico desc