Ir para o conteúdo principal

Geração de logs em funcionalidades importantes do sistema de Consignação


Data de elaboração 01/03/2023
Responsável pelo estudo
  1. Rafael Passos dos Santos (Assessor)
Equipe do estudo
  1. André Honório de Andrade Silva (Tecnico)
  2. Gezinéia Paula da Costa (Product Owner)
  3. Emanuel Rufino Alcantara de Lima (Analista)
  4. Rafael Passos dos Santos (Assessor)
  5. Alef Carvalho (Analista)
  6. Gustavo Félix (Analista)
Alvo Consignação
Origem

Implementação: Geração de logs de rastreio de do sistema de Consignação

Objetivo

O presente estudo visa analisar e propor a funcionalidade para geração de logs em funcionalidades importantes do sistema de Consignação

Documentação correlata
Observações O presente estudo pretende também pretende levantar as Historias dos cards para a Sprint 


1. Objetivo

O presente estudo visa analisar e propor a funcionalidade para geração de logs em funcionalidades importantes do sistema de Consignação.

1.1 JUSTIFICATIVA

Existem atualmente várias funcionalidades que nao são cobertas pela geração de logs e se faz necessária a geração destes registros para devidas auditorias no sistema. É importante ressaltar que o sistema conta com a geração de logs, porém está inativa no atual momento.

1.2 RESULTADOS ESPERADOS

Espera-se que, após este estudo, seja possível identificar os meios para reativar a geração de logs nas funcionalidades existentes e assim estimar os cards necessários para implementação nas demais áreas do sistema.

2. Introdução

O sistema de Consignação necessita que seja reestabelecido o funcionamento da geração de logs para que, além das funcionalidades já cobertas, outras áreas possam contar com uma cobertura de registro de logs.

3. Desenvolvimento - Geração de logs em funcionalidades importantes

3.1 CENÁRIO ATUAL

No atual momento - da redação deste estudo, a geração de logs do sistema de Consignação não apresenta pleno funcionamento.

Existe uma classe chamada LogAuditoria que possui, os campos necessários para a geração dos logs:

@Entity
@Table(name = "LOGAUDITORIA", schema = "dbo",
       catalog = "DB_CONSIGNACAO")
public class LogAuditoria implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID", nullable = false)
    private Integer id;

    @Column(name = "USUARIO", nullable = false)
    private String usuario;

    @Column(name = "DATAHORA", nullable = false)
    private Timestamp data;

    @Column(name = "EVENTO", nullable = false)
    private String evento;

    @Column(name = "MODULO", nullable = false)
    private String modulo;

    @Column(name = "CONTEUDO", nullable = false)
    private String conteudo;
  
  [...]

Existindo também uma tabela correspondente na base de dados, chamada LOGAUDITORIA:

image.png

A implementação da funcionalidade de geração de logs é realizada pela LogAuditoriaServiceImpl:

@Service("LogAuditoriaService")
@Transactional
public class LogAuditoriaServiceImpl implements LogAuditoriaService {

    @Autowired
    ILogAuditoriaRepository logAuditoriaRepository;
  
  [...]
  
}

As gravações de log são realizadas manualmente através da chamada do método gravaLogAuditoria(args), indicando, para cada operação, uma string contendo a operação que foi realizada. Assim como neste exemplo, a funcionalidade na AverbacaoServico de Edição de uma Averbação  que chama a gravação (linha 9) de Logs para esta ação informando os devidos dados.

// QUITAR / SUSPENDER
        if(operacao.equals("Quitar") || operacao.equals("Suspender")) {
            // Altera o Status
            operacao = operacao.equals("Quitar") ? "Quitada" : "Suspensa";
            averbacaoHistoricoReserva.setDesHistorico("Averbação " + operacao +
                    ": " + entidade.getMotivo());
            repositorio.updateStatus(entidade.getCodAverbacao(),
                                     entidade.getIndStatus());
            logAuditoriaServiceImpl.gravaLogAuditoria(operacao,
                    "AVERBAÇÃO -> GESTÃO ",
                    super.getFuncionarioLogin(),
                    "Cód Averbação: " + entidade.getCodAverbacao() +
                    " , Matricula: " + entidade.getNumMatricula() +
                    " , Motivo: " + entidade.getMotivo() +
                    " , Status: " + entidade.getIndStatus());
        }

Desta forma é possível constatar para cada funcionalidade que se queira registrar os logs devem ser realizadas manualmente, informando todos os dados necessários.

Observações:

Constata-se que será necessário um card específico por operação, já que cada chamada será diferente da outra.

3.2 SOLUÇÃO

3.2 IMPLEMENTAÇÃO E HISTÓRIAS DE USUÁRIOS


O que? Pontos Regras Produto
































3.3 POSSÍVEIS IMPEDIMENTOS

A linguagem utilizada no projeto é nova para o time.

4. Conclusão

Conclui-se que para a devida implementação destas melhorias, o time poderá, além consultar este documento, consultar a PO e os demais integrantes da SETIC, pois objetiva-se a funcionalidade de resetar a senha dos usuários.