Ir para o conteúdo principal

Implementação de notificação via e-mail e meu acesso no SID

Data de elaboração

Data: 26/05/222022

Responsável pelo estudo

Autores:

  1. JoãJoão Pedro Rocha Brito (Assessor)
  2. José

    José Henrique dos Santos Nogueira (Assessor)


Equipe do estudo

João Pedro Rocha Brito (Assessor)

José Henrique dos Santos Nogueira (Assessor)

José Lucas da Silva Costa (Analista de Desenvolvimento Full-Stack)

Jônatas Neves Legal (Técnico emTecnologia da Informação e Comunicação) 

AlvoSistema Integrado de Descanso.
Origem

Implementação: Notificação via e-mail e meu acesso no SID.

Objetivo

Revisar o sistema de forma preventiva para evitar que problemas durante o período de marcação do planejamento anual.
Documentação CorrelataSem documentação correlata.

Observações

Sem observações.

1. Glossário de Termos

  1. API Application Programming Interface (interface de Programação de Aplicações).
  2. CDS - Cargo de Direção Superior.
  3. ELASTICSEARCH - é um mecanismo de pesquisa e análise de código aberto distribuído.
  4. IP - Internet Protocol (protocolo de rede).
  5. KPIs - Key Performance Indicators - são os Indicadores-Chave de Desempenho observados por um negócio.
  6. KIBANA - Plugin de visualização de dados de fonte aberta para o Elasticsearch.
  7. PAF - Planejamento Anual de Férias.
  8. PPE - Plataforma de Publicação Eletrônica.
  9. RH - Recursos Humanos.
  10. SID - Sistema Integrado de Descanso.
 

2. Introdução


1. Objetivo

O SID (Sistema Integrado de Descanso) éé responsáresponsável pelo controle de rias dos servidores do poder executivo do Estado De RondôRondônia.  O fluxo principal deste sistema funciona basicamente todos os anos no s de setembro, onde todos os servidores devem indicar suas preferêpreferências de períperíodo de rias para o ano subsequente. Acontece que durante esse períperíodo éé comum ocorrer problemas cnicos, principalmente problemas relacionados ao sistema e  as outras vezes por situaçãsituação cadastral irregular. O time TitãTitãs assumiu a responsabilidade das manutençõmanutenções referente ao SID e vem fazendo correçõcorreções de extrema importâimportância para que o aconteçaconteçam imprevistos durante o períperíodo de marcaçãmarcação do planejamento anual. O objetivo deste estudo éé realizar uma revisãrevisão do sistema de forma preventiva para evitar que problemas nesta fase prejudique o andamento do feito.


2.3. Desenvolvimento


O SID por complexidade começcomeça seu fluxo para o planejamento anual de rias atravéatravés do portal do servidor, a partir deste momento o servidor iráirá informar quais o os períperíodos deseja solicitar para suas rias, o sistema iráirá verificar se existem datas disponídisponíveis ou atéaté mesmo conflitantes. casos de servidores que ainda o completaram 1 ano de trabalho e o podem exercer tal direito. Visto o prosseguimento do feito, o chefe imediato tem a funçãfunção de avaliar se a solicitaçãsolicitação de rias estáestá de acordo com interesse blico, o podem haver conflitos entre servidores que exercem funçõfunções similares. Caso o períperíodo solicitado haja algum tipo de conflito poderápoderá seráserá reprovado pelo chefe imediato. Prosseguindo o processo, o chefe da pasta, tem a atribuiçãatribuição de acrescentar todas as solicitaçõsolicitações aprovadas em bloco de assinatura para portariar. Por fim o sistema conclui todo o fluxo agendamento a publicaçãpublicação para homologar as rias do servidor. Vejamos o processo ilustrado graficamente a seguir:

image-1649129363213.pngFonte: SETIC/RO


2.3.2. PossíPossíveis problemas

Anteriormente o SID o possuípossuía uma ferramenta de monitoramento de falhas, acontece que para o novo PAF (Planejamento Anual de rias) do ano de 2022 seráserá possípossível realizar uma anáanálise criteriosa dos possípossíveis problemas que acontecerem nesta etapa. Atualmente a SETIC conta com a integraçãintegração ferramenta tecnolótecnológica do Kibana + Elasticsearch.

De acordo com o site oficial da empresa temos por definiçãdefinição o Kibana como:

Comece explorando seus dados com visualizaçõvisualizações impressionantes no Kibana, desde grágráficos de waffle e mapas de calor atéaté anáanálise de ries temporais e muito mais. Use dashboards prépré-configurados para suas diversas fontes de dados, crie apresentaçõapresentações ao vivo para destacar KPIs e gerencie a implantaçãimplantação em uma úúnica UI.

em outro trecho do mesmo site temos a definiçãdefinição conjunta do Elasticsearch:

Independentemente de vocêvocê estar procurando açõações de um endereçendereço IP especíespecífico, analisando um pico nas solicitaçõsolicitações de transaçãtransação ou querendo achar uma pizzaria no raio de um quilôquilômetro, os problemas que todos s estamos tentando resolver com os dados se resumem àà busca. O Elasticsearch permite armazenar, buscar e analisar com facilidade e em escala.

Essas ferramentas serãserão de grande ajuda durante o novo PAF 2022, pois ajudam a encontrar a razãrazão de problemas de forma cnica e incisiva, categorizando melhor os problemas que o graves ou problemas menores e isolados. 

No PAF de 2021 foram feitas correçõcorreções importantes para as portarias anuais (https://app.pipefy.com/open-cards/457696905), uma delas objetivou corrigir problemas de duplicidade nas portarias, os servidores envolvidos neste tipo de problema tinham seus nomes duplicados na portaria oficial da escala anual de rias e isso ocasionava uma rie de problemas para os emissores deste documento.

Em decorrêdecorrência do problema anterior, existiam alguns servidores que por diversas razõrazões, o estariam presentes na portaria da escala anual de rias, estes servidores posteriormente devem ser integrados no mesmo PAF do ano corrente, acontece que o sistema o contemplava tal situaçãsituação no PAF de 2021, entãentão agora para o PAF de 2022 esperamos que tal problema o ocorra que foi resolvido e que os servidores remanescentes consigam serem enquadrados em outra portaria com suas respectivas marcaçõmarcações de rias.

Os servidores com cargo de PROCURADOR se tornaram uma demanda frequente para a equipe de desenvolvimento do time TITÃTITÃS, este tipo de cargo tem direito a duas rias de 30 dias, ou seja, 60 dias totais. Acontece que grande parte dos PROCURADORES possuem outras matrímatrículas devido as ocupaçõocupações em cargos CDS (Cargo de DireçãDireção Superior).

Houve certa dificuldade da equipe em entender o que o sistema deveria fazer neste cenácenário, afinal de contas se um procurador tem duas matrímatrículas, ele teria 60 dias de rias da matrímatrícula do cargo de PROCURADOR e mais 30 dias de rias da matrímatrícula de CDS. Em consulta ao RH da SETIC o que ficou entendido éé que mesmo que ele tenha duas matrímatrículas, as rias marcadas na matrímatrícula do CDS deve ser colidida com um dos períperíodos das rias do cargo de PROCURADOR para que o excedesse 60 dias de rias.

Outro problema frequente no PAF de 2021 e tambétambém nas remarcaçõremarcações de rias foi a ausêausência de períperíodos nas solicitaçõsolicitações. Isso ocasionava a existêexistência de solicitaçõsolicitações no banco de dados sem períperíodo e incidia em períperíodos de rias.

Uma situaçãsituação mais crícrítica que pode ocasionar problemas no PAF de 2022 éé a assinatura e agendamento de portarias, no ano de 2022 houveram mudançmudanças no PPE (Plataforma de PublicaçãPublicação EletrôEletrônica) que ocasionaram problemas ao SID. Esse problema foi corrigido e se espera que o ocorra mais para o ano corrente.

Visto todas as situaçõsituações abordadas fica exposto a seguir o digo responsáresponsável por realizar a recepçãrecepção do planejamento anual vista todas as refatoraçõrefatorações efetuadas no SID:

        [HttpPost]
        public async Task<IActionResult> PostSolicitacao(ReceberSolicitacaoDto solicitacaoDTO)
        {
            if (solicitacaoDTO.DatasIniciaisDasFerias.Any(x => x.DataInicial.Date == DateTime.MinValue.Date))
            {
                return Response("Ocorreu um erro, alguma das datas informadas éé inváinválida!");
            }

            var servidor = await servidorRepository.BuscarPorMatricula(solicitacaoDTO.MatriculaDoServidor);

            var mensagemErro = injecaoDeDependencia.validacaoDaSolicitacaoService.ValidarServidorDaSolicitacao(servidor, solicitacaoDTO);
            if (!string.IsNullOrEmpty(mensagemErro))
                return Response(mensagemErro);

            var quantidadeDeFeriasMarcadas = await context.Solicitacao
                .Include(x => x.Servidor)
                .CountAsync(x => x.Servidor.Matricula == solicitacaoDTO.MatriculaDoServidor &&
                               x.AnoAquisitivo == solicitacaoDTO.AnoAquisitivo &&
                               (x.Status == StatusDaSolicitacao.Deferida || x.Status == StatusDaSolicitacao.AguardandoHomologacao));

            var podeMarcarMaisDeUmaSolicitacao = servidor.PossuiCargoDeProcurador() || servidor.PossuiCargoDeRaioX();

            if (podeMarcarMaisDeUmaSolicitacao && quantidadeDeFeriasMarcadas > 1)
            {
                return Response("Ocorreu um erro, o servidor  possui rias marcadas nessa matrímatrícula!");
            }

            if (!podeMarcarMaisDeUmaSolicitacao && quantidadeDeFeriasMarcadas > 0)
            {
                return Response("Ocorreu um erro, o servidor  possui rias marcadas nessa matrímatrícula!");
            }

            Solicitacao solicitacao = null;
            if (solicitacaoDTO.FormaDoPeriodoDeFerias == FormaDoPeriodoDeFerias.Outros.ToString())
                solicitacao = SolicitacaoFactory.MontarSolicitacaoDeFeriasPendentes(
                    solicitacaoDTO.DatasIniciaisDasFerias.First().DataInicial,
                    solicitacaoDTO.QuantidadeDeDiasPendentes,
                    servidor,
                    solicitacaoDTO.AnoAquisitivo);
            else
                solicitacao = SolicitacaoFactory.MontarSolicitacaoParaEnviarParaHomologacao(solicitacaoDTO, servidor);

            mensagemErro = await injecaoDeDependencia.validacaoDaSolicitacaoService.ValidarSolicitacao(solicitacao, solicitacaoDTO);
            if (!string.IsNullOrEmpty(mensagemErro))
                return Response(mensagemErro);

            if (!string.IsNullOrWhiteSpace(solicitacaoDTO.CpfDoUsuarioQueHomologou))
                solicitacao.Deferir(solicitacaoDTO.CpfDoUsuarioQueHomologou);

            await context.Solicitacao.AddAsync(solicitacao);
            context.SaveChangesAsync().Wait();

            if (solicitacao.Id == 0)
                return ErroContateOAdministrador();

            var ehUmaEdicaoDeSolicitacao = solicitacaoDTO.Id != 0;
            if (ehUmaEdicaoDeSolicitacao)
                await RemoverSolicitacaoAntiga(solicitacaoDTO);

            return Response("SolicitacãSolicitacão enviada com sucesso", solicitacao.Id);
        }


2.3.3. Valor agregado

A revisãrevisão no processo de PAF beneficia os desenvolvedores do time TITÃTITÃS e amplia o entendimento de todos os membros do time sobre os aspectos do desenvolvimento do produto. TambéTambém beneficia os servidores em geral por melhorar a eficiêeficiência e reduzir erros dispendiosos no processo de planejamento das rias. Mais importante ainda, a revisãrevisão de digo garante otimizaçãotimização de digo de alta qualidade por meio do trabalho em equipe interno.


4.

3. ConclusãConclusão


O presente ESTUDO CNICO PRELIMINAR, elaborado pelos integrantes CNICOS do time TITÃTITÃS, considerando a anáanálise dos desafios cnicos envolvidos e citados, conclui pela VIABILIDADE DO PLANEJAMENTO ANUAL DO ANO DE 2022, uma vez que foram considerados potenciais problemas que afetem a disponibilidade do serviçserviço. Em complemento, os contratempos identificados o administráadministráveis, pelo que RECOMENDAMOS o prosseguimento da demanda.

5. Referências