Histórico da Página
...
Lembrando que, será a partir dos patches:
- 12.1.2310.xxx231
- 12.1.2402.xxx176
- 12.1.2406.108 e superiores
03. SITUAÇÃO/REQUISITO
Implementar uma tela onde o usuário poderá possa selecionar os processos (TAF ou TSSMiddleware) e o sistema gerará gere um log detalhado do processo de integração, analisando os retornos. Os processos incluídos são:
- Conexão do TAF
- Integração com o TAF
- Atualizar StatusRelatórios de Conferência (INSS, FGTS, INSS Patronal e IRRF)
- Integração RM X Feedz
04. SOLUÇÃO
Criação da A nova tela "Log de Integração" foi criada, desenvolvida em PO UI, que e oferece recursos avançados para a identificação e detalhamento dos erros na integração dos eventos do eSocial entre a folha de pagamento e os sistemas TAF e TSSde erros nas integrações. Nesta primeira entrega, focamos nos processos do eSocial, analisando as integrações TAF e Middleware.
Esta implementação representa um avanço significativo para nossos clientes e equipes de atendimento. Ao facilitar a identificação precisa de problemas, ela reduzirá os custos associados à análise de incidentes, aumentando a eficiência e a assertividade ao direcionar as questões para os times responsáveis. Além disso, proporcionará uma redução significativa no tempo e no esforço dedicados à análise de problemas por parte das equipes de desenvolvimento (Folha e TAF).
CAMPOS DE FILTRO
...
TAF:
TSS:
Relatório:
Integração Feedz:
...
CAMPOS DA TELA
...
Quando o campo "Erro" estiver preenchido com "SIM", a análise deve ser realizada no produto do TAF. Quando estiver preenchido com "NÃO", a análise deve ser feita no produto de folha de pagamento.
Acesse o processo em Configurações | Log de Integração
Após a ativação, escolha a integração, o processo e o tipo de registro para mapear. Em seguida, vá para o processo desejado e realize-o.
...
PONTOS IMPORTANTES:
- Os registros serão apresentados na tela em ordem decrescente, com base no campo "Data/Hora".
- Haverá uma opção para excluir linhas.
- O sistema manterá apenas 500 linhas; após esse limite, as linhas mais antigas serão removidas automaticamente para evitar a sobrecarga do banco de dados.
- Também haverá um botão para gerar a requisição no Postman.
- No ícone é possível definir os campos que serão apresentados em tela.
- Na opção "Exportar" será possível
05. DEMAIS INFORMAÇÕES
...
tabs | Menu,Navegação,Informações Técnicas |
---|---|
ids | menu,naveg,tech |
...
default | no |
---|---|
referencia | menu |
...
default | yes |
---|---|
referencia | naveg |
Navegação e Opções em tela
Navegação
...
default | no |
---|---|
referencia | tech |
Informações Técnicas da API
Facilitadores.
Para análise rápida, importe o postman:
View file | ||||
---|---|---|---|---|
|
Site postman: Postman API Platform | Sign Up for Free
Fora feito um mock da api usando a tool mockoon, segue o enviroment:
É possível abrir esse enviroment e utilizar todo o mock feito.
View file | ||||
---|---|---|---|---|
|
Site mockoon: Create mock APIs in seconds with Mockoon
Erros.
Seguir padrão especificado em https://tdn.totvs.com/display/public/INT/Guia+de+implementacao+das+APIs+TOTVS#GuiadeimplementacaodasAPIsTOTVS-Formatodasmensagensderesposta
...
id | Logger |
---|
...
id | LoggerTiposIntegração |
---|---|
label | Tipos de integração e tipos logs |
Objetivo: Busca tipos de integração e tipos de logs.
Esses endpoint's serão usados para o preenchimento dos componentes 'Integração' e 'Tipo de log'
Recomenda-se o backend realizar cache desses endpoints, devida suas características invariantes.
Tipo de requisição: GET
Endpoints: api/rh/logs/v1/integrations/types e api/rh/logs/v1/integrations/logTypes
Estrutura de Retorno:
Campo | Tipo |
hasNext | boolean |
items | array de objetos detalhado abaixo |
Para o array de items, a estrutura do objeto de retorno no json deve conter obrigatoriamente os campos abaixo.
...
Campo
...
Tipo
...
id
...
int
...
description
...
string
Exemplos de Requisição:
GET /api/rh/logs/v1/integrations/types
Expandir | ||
---|---|---|
| ||
{ |
GET /api/rh/logs/v1/integrations/logTypes
Expandir | ||
---|---|---|
| ||
{ |
...
id | LoggerProcessesList |
---|---|
label | Listagem de processos |
Objetivo: Obter os processos de uma determinada integração.
Tipo de requisição: GET
Endpoint: /api/rh/logs/v1/integrations/processes
Query Params:
...
Campo
...
Descrição
...
Tipo
...
Obrigatório
...
Exemplo
...
idIntegration
...
Equivale ai items.id retornado em /api/rh/logs/v1/integrations/types
...
inteiro
...
sim
...
1
Estrutura de Retorno:
Campo | Tipo |
hasNext | boolean |
items | array de objetos detalhado abaixo |
Para o array de items:
Campo | Tipo |
id | int |
description | string |
Exemplo de Requisição:
GET /api/rh/logs/v1/integrations/processes?idIntegration=1
Expandir | ||
---|---|---|
| ||
{ |
...
id | LoggerActive |
---|---|
label | Ativar log |
Objetivo: Ativar ou desativar captura de logs.
Tipo de requisição: POST
Endpoint: /api/rh/logs/v1/integrations
Estrutura do corpo da requisição (Body)
...
Campo
...
Descrição
...
Tipo
...
Obrigatório
...
Exemplo
...
active
...
Flag para ativar ou desativar o log.
...
boolean
...
Sim
...
true
...
companyId
...
Company id injetado na session storage do frontEnd
...
int
...
Sim
...
1
...
idIntegration
...
Identificação a integração
...
int
...
Sim
...
1
...
idLogType
...
Identificação do tipo de log que será ativado
...
int
...
Sim
...
1
...
idProcess
...
Identificação do processo da integração
...
int
...
Sim
...
1
POST /api/rh/logs/v1/integrations
Expandir | ||
---|---|---|
| ||
{ |
Estrutura de Retorno:
Para o retorno, utilizamos a forma abaixo.
Campo | Descrição | Tipo |
timer | 'Cronômetro' representado em milissegundos, cujo valor irá determinar o tempo máximo que o front-end, aguardará a resposta da primeira página. | int |
interval | Intervalo entre requisições em milissegundos, que serão feitas pelo front-end para verificar o retorno da primeira página. | int |
Expandir | ||
---|---|---|
| ||
{ |
...
id | LoggerSummaryList |
---|---|
label | Listagem resumida dos logs |
Objetivo: Obtenção paginada dos logs gerados pela aplicação após sua ativação.
O front end, após a chamada do endpoint que faz a ativação do log, se o mesmo fora para ativar, entrará em modo de 'espera', aguardando o retorno da primeira página contendo os primeiros logs.
Mesmo que o backend retorne uma lista vazia e com a flag hasNext igual a false, a tela continuará tentando obter resultados até seu ciclo de espera terminar ou o backend retornar uma lista de itens em 'items'
Motivo: Entende-se que nem sempre logo após a ativação será captado algum log, portanto se faz necessário esperar até que haja algum estímulo para captação do log.
O ciclo de espera do front-end é terminado pelos campos 'timer' e 'interval' retornados na requisição da ativação, portanto cada linha poderá configurar da melhor forma que entender, tanto o tempo de espera, quando a frequência de validação.
Tipo de requisição: GET
Endpoint: /api/rh/logs/v1/integrations
Query Params:
...
Campo
...
Tipo
...
Observação
...
Obrigatório
...
Exemplo
...
companyId
...
int
...
Sim
...
1
...
idIntegration
...
int
...
Sim
...
1
...
idLogType
...
int
...
Sim
...
1
...
idProcess
...
int
...
Sim
...
0
...
startDateTime
...
dateTime
...
Formato yyyy-mm-ddThh:mm:ss, usado para filtrar a partir de qual data hora se deseja obter a listagem, o filtro se aplica no campo 'dateTime'
...
Não
...
2024-05-10T09:53:37
...
page
...
int
...
Sim
...
1
...
pageSize
...
int
...
Sim
...
30
Exemplo: /api/rh/logs/v1/integrations?companyId=1&idIntegration=0&idLogType=0&idProcess=1&startDateTime=2024-05-10T09:53:37&page=1&pageSize=30
Estrutura de Retorno:
Campo | Tipo |
hasNext | boolean |
items | array de objetos detalhado abaixo |
Para o array de items, a estrutura do objeto de retorno no json deve conter obrigatoriamente os campos abaixo.
...
Campo
...
Tipo
...
id
...
string
...
dateTime
...
Data hora formato yyyy-mm-ddThh:mm:ss
...
isError
...
boolean
...
statusCode
...
string
...
verb
...
string
...
process
...
string
...
url
...
string
Expandir | ||
---|---|---|
| ||
{ |
- exportar por .CSV ou .Json.
- No ícone é possível ocultar o menu para uma melhor visualização.
05. DEMAIS INFORMAÇÕES
...
id | LoggerDetails |
---|---|
label | Detalhes de um log |
Objetivo: Detalhes de um log, a partir do seu id.
Tipo de requisição: GET
Endpoint: /api/rh/logs/v1/integrations/details/:id
PathParam:
...
Campo
...
Tipo
...
Observação
...
Obrigatório
...
Exemplo
...
id
...
string
...
Mesmo Id retornado em 'Listagem resumida dos logs'
...
Sim
...
"11620630817"
Exemplo: /api/rh/logs/v1/integrations/details/11620630817
Estrutura de Retorno:
...
Campo
...
Tipo
...
id
...
string
...
dateTime
...
Data hora formato yyyy-mm-ddThh:mm:ss
...
isError
...
boolean
...
statusCode
...
string
...
verb
...
string
...
server
...
string
...
process
...
string
...
url
...
string
...
comments
...
string
...
request
...
objeto
...
response
...
objeto
Para os objetos request / response, estrutura:
...
Campo
...
Tipo
...
header
...
array de objetos
...
body
...
objeto
Não é recomendável retornar nesta api valores relativos a autenticação e autorização da requisição.
Para array de objetos campo header:
...
Campo
...
Tipo
...
key
...
string
...
value
...
string
Para objeto campo body:
...
Campo
...
Tipo
...
Observações
...
type
...
string
...
valor suportado nesta primeira versão : "raw"
...
format
...
string
...
valores suportados : "json" / "xml" ou "txt"
...
content
...
string
...
atenção se trata de uma string, portanto ao colocar um json ou xml deve-se retornar corretamente formatado para tal, veja os exemplos.
Expandir | ||
---|---|---|
| ||
{ |
Expandir | ||
---|---|---|
| ||
{ |
...
id | LoggerDetailsList |
---|---|
label | Detalhes de vários logs por id |
Objetivo: Detalhes de vários logs dado um conjunto de ids.
Tipo de requisição: GET
Endpoint: /api/rh/logs/v1/integrations/details
QueryParam:
...
Campo
...
Tipo
...
Observação
...
Obrigatório
...
Exemplo
...
ids
...
string
...
Uma string contendo vários logs separados por vírgula ,
...
Sim
...
"11620630817,11620630812,11620630812"
Exemplo: /api/rh/logs/v1/integrations/details?ids=11620630817,11081228397,11628122137,116351206011
Estrutura de Retorno:
Campo | Tipo |
hasNext | boolean |
items | array de objetos detalhado abaixo |
Items - cada objeto terá o mesmo retorno especificado em 'Detalhes de um log'
Expandir | ||
---|---|---|
| ||
{ |
...
id | LoggerDetailsList |
---|---|
label | Detalhes de vários logs |
Objetivo: Detalhes de vários logs
Tipo de requisição: GET
Endpoint: /api/rh/logs/v1/integrations/details
QueryParam:
...
Campo
...
Tipo
...
Observação
...
Obrigatorio
...
Exemplo
...
companyId
...
int
...
Sim
...
1
...
idIntegration
...
int
...
Sim
...
idLogType
...
int
...
Sim
...
idProcess
...
int
...
Sim
...
startDateTime
...
Date Time
...
formato yyyy-mm-ddThh:mm:ss
...
Não
...
2024-05-10T09:53:37
...
order
...
string
...
de acordo com a documentação (https://tdn.totvs.com/display/public/INT/Guia+de+implementacao+das+APIs+TOTVS#GuiadeimplementacaodasAPIsTOTVS-Filtros) nesse contexto, só será usado para ordenação do campo dateTime
...
Não
...
"-dateTime"
...
page
...
int
...
Sim
...
0
...
pageSize
...
int
...
Sim
...
30
...
Estrutura de Retorno:
Campo | Tipo |
hasNext | boolean |
items | array de objetos detalhado abaixo |
Items - cada objeto terá o mesmo retorno especificado em 'Detalhes de um log'
Expandir | ||
---|---|---|
| ||
{ |
...
id | LoggerStatus |
---|---|
label | Estado do log |
Objetivo: Identificar se o log ainda está ativo.
Tipo de requisição: GET
Endpoint: /api/rh/logs/v1/integrations/status
Query Param:
...
Campo
...
Tipo
...
Observação
...
Obrigatório
...
Exemplo
...
companyId
...
int
...
Sim
...
1
...
idIntegration
...
int
...
Sim
...
1
...
idLogType
...
int
...
Sim
...
1
...
idProcess
...
int
...
Sim
...
1
Exemplo: /api/rh/logs/v1/integrations/status?companyId=1&idIntegration=1&idLogType=0&idProcess=1
Estrutura de Retorno:
Campo | Tipo |
active | boolean |
Expandir | ||
---|---|---|
| ||
{ |
...
id | LoggerDelete |
---|---|
label | Remoção de logs |
Objetivo: Remoção em lote de logs visualizados no histórico
Tipo de requisição: DELETE
Endpoint: /api/rh/logs/v1/integrations/
Query Param:
...
Campo
...
Tipo
...
Observação
...
Obrigatório
...
Exemplo
...
ids
...
string
...
Sim
...
"12910,19120,1234"
Exemplo: DELETE /api/rh/logs/v1/integrations?ids=12910,19120,1234
Estrutura de Retorno:
...