01. DADOS GERAIS

Produto:

RM

Linha de Produto:

Linha RM

Segmento:

RH

Módulo:TOTVS Folha de Pagamento 
Função:Log de Integração RM X TAF X TSS
País:Brasil
Requisito/Story/Issue (informe o requisito relacionado) :

DRHROTRM-6568


02. LIBERAÇÃO

Lembrando que, será a partir dos patches:

03. SITUAÇÃO/REQUISITO

Implementar uma tela onde o usuário poderá selecionar os processos (TAF ou TSS) e o sistema gerará um log detalhado do processo de integração, analisando os retornos. Os processos incluídos são:

04. SOLUÇÃO

Criação da nova tela "Log de Integração", desenvolvida em PO UI, que oferece recursos avançados para identificação e detalhamento dos erros na integração dos eventos do eSocial entre a folha de pagamento e os sistemas TAF e TSS.

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

CampoDescrição
Integração
Tipo de Log

TAF:

TSS:

Relatório:

Integração Feedz: 

Tempo de Log
Processo
Ativar


CAMPOS DA TELA

CampoDescrição
Data/Hora
Erro Backend

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.

Código do Erro
Tipo
Detalhamento do Erro


PONTOS IMPORTANTES:

05. DEMAIS INFORMAÇÕES


Menu


Navegação e Opções em tela


Navegação

Informações Técnicas da API


Especificação dos endpoints e seus contratos.

Para análise rápida, importe o postman:

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.

Site mockoon: Create mock APIs in seconds with Mockoon


Objetivo: Busca tipos de integração e tipos de logs

Esses endpoint's serão usado para o preenchimento dos select box '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

{
  "hasNext": false,
  "items": [
    {
      "id": 1,
      "description": "TAF"
    },
    {
      "id": 2,
      "description": "TSS"
    },
    {
      "id": 3,
      "description": "Feedz"
    }
  ]
}

GET /api/rh/logs/v1/integrations/logTypes

{
  "hasNext": false,
  "items": [
    {
      "id": 1,
      "description": "Trace"
    },
    {
      "id": 2,
      "description": "Error"
    }
  ]
}

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:

Para conseguirmos abranger todas as áreas, utilizamos a nomenclatura abaixo.

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

Exemplo de Requisição:

GET /api/rh/logs/v1/integrations/processes?idIntegration=1

{
  "hasNext": false,
  "items": [
    {
      "id": 1,
      "description": "Status"
    },
    {
      "id": 2,
      "description": "Evento xpto"
    }
  ]
}

Objetivo: Ativar ou desligar um log.

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

Não

1


POST /api/rh/logs/v1/integrations

{
    "active": true,
    "companyId": 1,
    "idIntegration": 1,
    "idLogType": 1,
    "idProcess": 5
}

Caso não seja selecionado o proceso, o front-end enviará o valor de idProcess como 0, valor default do inteiro. Portanto, se faz necessário considerar 0 como valor não informado.


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 feitos pelo front-end para verificar o retorno da primeira página.

int


Exemplo de Retorno:

{
    "timer": 60000,
    "interval": 2000
}



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 carregamento 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 por até que haja 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

Endpoints: /api/rh/logs/v1/integrations

QueryParams:

Campo

Tipo

Observação

Obrigatorio

Exemplo

companyId

int


Sim

1

idIntegration

int


Sim

1

idLogType

int


Sim

1

idProcess

int


Não

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

{
    "hasNext": true,
    "items": [
        {
            "id": "11620630817",
            "dateTime": "2024-05-10T09:53:37",
            "isError": false,
            "statusCode": "200",
            "verb": "GET",
            "process": "",
            "url": "http://localhost:8051/api/something/to/do?id=80982&scope=global"
        },
        {
            "id": "11081228397",
            "dateTime": "2024-05-11T10:15:45",
            "isError": true,
            "statusCode": "404",
            "verb": "POST",
            "process": "",
            "url": "http://localhost:8051/api/another/endpoint"
        }
    ]
}



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

Obrigatorio

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

process

string

url

string

comments

string

request

objeto

response

objeto

Para os objetos request / response, estrutura:

Campo

Tipo

header

array de objetos

body

objeto


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.



{
    "id": "11620630817",
    "dateTime": "2024-05-10T09:53:37",
    "isError": true,
    "statusCode": "200",
    "verb": "GET",
    "url": "http://localhost:8051/api/something/to/do?id=80982&scope=global",
    "server": "10.29.0.0",
    "process": "AtualizarStatusEvento",
    "comments": "algum comentário útil",
    "request": {
        "header": [
            {
                "key": "User-Agent",
                "value": "PostmanRuntime/7.37.3"
            },
            {
                "key": "Connection",
                "value": "keep-alive"
            }
        ],
        "body": {
            "type": "raw",
            "format": "json",
            "content": "{}"
        }
    },
    "response": {
        "header": [],
        "body": {
            "type": "raw",
            "content": "{\"example\":\"value\"}"
        }
    }
}

{
    "id": "116351206011",
    "dateTime": "2024-05-10T09:53:37",
    "isError": false,
    "statusCode": "200",
    "verb": "POST",
    "url": "http://spon010119801:8051/wsDataServer/IwsDataServer",
    "server": "20.10.0.0",
    "comments": "algum comentário útil",
    "process": "",
    "request": {
        "header": [
            {
                "key": "Content-Type",
                "value": "text/xml; charset=utf-8"
            },
            {
                "key": "SOAPAction",
                "value": "http://www.totvs.com/IwsDataServer/ReadRecord"
            },
            {
                "key": "Authorization",
                "value": "Basic bWVzdHJlOnRvdHZz"
            }
        ],
        "body": {
            "type": "raw",
            "format": "xml",
            "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tot=\"http://www.totvs.com/\">\r\n   <soapenv:Header/>\r\n   <soapenv:Body>\r\n      <tot:ReadRecord>\r\n         <!--Optional:-->\r\n         <tot:DataServerName>FopFuncData</tot:DataServerName>\r\n         <!--Optional:-->\r\n         <tot:PrimaryKey>1;00001</tot:PrimaryKey>\r\n         <!--Optional:-->\r\n         <tot:Contexto>codcoligada=1;codusuario=mestre;codsistema=p</tot:Contexto>\r\n      </tot:ReadRecord>\r\n   </soapenv:Body>\r\n</soapenv:Envelope>"
        }
    },
    "response": {
        "header": [],
        "body": {
            "type": "raw",
            "content": ""
        }
    }
}