| Data de elaboração | 31/05/2023 |
| Responsável pelo estudo | José Lucas da Silva Costa |
| Equipe do estudo | João Pedro Rocha Brito, Carlos Eduardo Carvalho do Viso, Daniel Ribeiro Camboim de Oliveira, José Henrique dos Santos Nogueira |
| Alvo | Portal do Servidor e Sistema Integrado de Frequência |
| Origem | Questionamentos levantados sobre divergência das frequências registradas no SIF que estariam sendo apresentadas no Portal do Servidor. |
| Objetivo | Revisar o Portal do Servidor e tentar encontrar as fontes das frequências que estão sendo exibidas, buscando ampliar o conhecimento desta integração. |
| Documentação Correlata | Sem documentação. |
| Observações | Sem observações. |
A integração entre sistemas é uma abordagem comumente adotada para otimizar e facilitar o gerenciamento de informações em diversas áreas. No caso específico do Governo do Estado de Rondônia, onde o sistema SIF (Sistema Integrado de Frequência) é utilizado para acompanhar a frequência dos servidores, a integração com o portal do servidor é uma maneira eficiente de fornecer aos funcionários acesso imediato aos seus registros de ponto. No entanto, a ocorrência de divergências entre as informações apresentadas pelo SIF e pelo portal do servidor está trazendo uma série de problemas e complicações. Essas divergências podem surgir devido a várias razões, como falhas no processo de integração, inconsistências nos dados armazenados nos sistemas, erros humanos ou até mesmo problemas técnicos. Independentemente da causa, as consequências dessas divergências podem ter impactos significativos tanto para os servidores quanto para a administração pública.
Alguns dos possíveis problemas decorrentes dessas divergências são:
Em análise técnica primária do código identificamos que existem duas alternativas para ser exibidas as frequências no portal do servidor, vejamos:
[HttpPost]
public async Task<IActionResult> Detalhes(FiltroFrequenciaViewModel filtroDafrequenciaViewModel)
{
await CarregarViewBags();
if (!ModelState.IsValid)
{
return RedirectToAction("Detalhes");
}
ViewBag.periodo = string.Format("{0:mm}-{1:yyyy}", filtroDafrequenciaViewModel.Periodo.GetValueOrDefault().Month.ToString("00"), filtroDafrequenciaViewModel.Periodo.GetValueOrDefault().Year.ToString("0000"));
if (ModelState.IsValid)
{
var cpf = userService.ObterCpf();
var servidorDetalhado = await apiServidores.BuscarPorMatricula(filtroDafrequenciaViewModel.Matricula, cpf);
if (servidorDetalhado is null)
return RedirectToAction("Detalhes");
if (servidorDetalhado.plantonista.HasValue && servidorDetalhado.plantonista.Value)
{
var detalhesFrequenciaViewModel = frequenciaAppService.ObterFrequenciaDoPlantonistaPorMatricula(filtroDafrequenciaViewModel.Matricula.ToString(), filtroDafrequenciaViewModel.Periodo.ToString());
filtroDafrequenciaViewModel.FrequenciaDoPlantonista = detalhesFrequenciaViewModel;
return View(filtroDafrequenciaViewModel);
}
else
{
var detalhesFrequenciaViewModel = frequenciaAppService.ObterFrequenciaPorMatricula(filtroDafrequenciaViewModel.Matricula.ToString(), filtroDafrequenciaViewModel.Periodo.ToString());
filtroDafrequenciaViewModel.DetalhesFrequenciaViewModel = detalhesFrequenciaViewModel;
return View(filtroDafrequenciaViewModel);
}
}
return RedirectToAction("Detalhes");
}
Nas linhas de código 22 e 28, as frequências podem vir de um servidor comum ou de servidor plantonista, onde caso vai ser tratado conforme suas particularidades.
Essas linhas são remetidas para as seguintes chamadas na origem do SIF:
public FrequenciaDto ObterFrequenciaPorMatricula(string matricula, string data)
{
var _client = new RestClient(UrlSif);
var rest = $"api/frequencia/matricula?matricula={matricula}&data={data}";
var request = new RestRequest(rest, Method.GET);
var response = _client.Execute(request);
if (response.ContentType.Contains("html")) return null;
return JsonConvert.DeserializeObject<FrequenciaDto>(response.Content);
}
public FrequenciaDoPlantonistaDto ObterFrequenciaDoPlantonistaPorMatricula(string matricula, string data)
{
var _client = new RestClient(UrlSif);
var rest = $"api/frequencia/plantonista?matricula={matricula}&data={data}";
var request = new RestRequest(rest, Method.GET);
var response = _client.Execute(request);
if (response.ContentType.Contains("html")) return null;
return JsonConvert.DeserializeObject<FrequenciaDoPlantonistaDto>(response.Content);
}
Nota-se também que houve uma refatoração recentemente, vejamos a alteração na API:

No entanto, após essa análise minuciosa, não foram encontrados problemas ou anomalias que justificassem as divergências levantadas, entendemos alguma integração do SIF como por exemplo o e-Estado não estaria funcionando no momento que foi relatado o problema deva ter ocorrido. Foram conduzidos testes extensivos, revisamos o código e os registros e logs do sistema.
Após uma análise criteriosa deste estudo, foi identificado que o problema que causava as divergências já foi corrigido pelos técnicos da SETIC-RO, entre as informações apresentadas pelo sistema SIF e pelo portal do servidor do estado de Rondônia. Essa ação corretiva foi fundamental para restabelecer a integridade e a confiabilidade dos registros de frequência dos servidores públicos.
Com a resolução desse problema, espera-se que os servidores possam agora contar com informações consistentes e precisas em relação às suas frequências de ponto. Isso não apenas fortalece a confiança dos funcionários no sistema, mas também garante uma gestão mais eficiente dos recursos humanos por parte da administração pública.
A correção do problema também traz benefícios operacionais significativos. Com a eliminação das divergências, a equipe responsável pela manutenção dos sistemas pode redirecionar seus esforços para outras atividades relevantes, sem a necessidade de gastar tempo e recursos na identificação e correção constante dessas inconsistências.
https://documentos.sistemas.ro.gov.br/books/sif-sistema-de-frequencia