AIRGOLAB-CEFET-RJ / snelf

Projeto Snelf

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

P6-Snelf

Sobre a ferramenta

O SNELF é uma plataforma para detecção de disparidades de preços em compras públicas. O objetivo é auxiliar na auditoria de notas fiscais relacionadas a compras, e verificar possíveis fraudes. A ferramenta permite a importação de um CSV, nesse caso uma base de dados de medicamentos, para que possa ser treinado um modelo de predição que associe medicamentos iguais porém que possuem nomes diferentes nas notas fiscais, dado que o campo de descrição da nota fiscal é livre. Assim, quando importamos a base de dados, o modelo já classifica cada registro com um código diferente, que relaciona os mesmos medicamentos porém com nomes distintos. Após isso, podem ser realizadas buscas por nomes de medicamentos, que retornam um conjunto de compras de notas fiscais. Na tela podemos observar dados sobre o conjunto de dados requisitado, como média, moda, mediana, uma tabela com todas as compras retornadas, e um gráfico boxplot com a variável preço no tempo. Também conseguimos excluir algum registro do cálculo se for desejado, dando mais flexibilidade para quem está fazendo a análise.

Arquitetura e tecnologias

O SNELF foi desenvolvido utilizando arquitetura REST, utilizando o framework Python FastAPI, que serve para criar APIs de forma bem simples. Dessa forma, conseguimos disponibilizar nossos endpoints para acesso da interface. O frontend foi desenvolvido utilzando ReactJS. Por fim, o banco de dados relacional utilizado foi o PostgreSQL.

Cabe ressaltar que, na pasta 'dumps do postgresql', existirão diversas versões do banco de dados, caso seja necessário restaurar alguma versão específica.

Como utilizar?

Passos

1. Clonar o projeto em uma pasta de distribuição Linux

2. Instalar o docker

Acessar https://docs.docker.com/engine/install/ubuntu/ e seguir o passo-a-passo

3. Instalar o docker-compose

Acessar https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-20-04 e seguir o passo-a-passo

4. Acessar a pasta snelf, após a clonagem do projeto

Digitar o comando 'cd snelf' e apertar a tecla Enter

5. Realizar o build do projeto, a partir do docker-compose.yml

sudo docker-compose build

6. Iniciar o projeto

sudo docker-compose start

7. Subir o projeto

sudo docker-compose up

8. Configurar conexão com SGBD (sistema gerenciador de banco de dados)

8.1 Baixar o DBeaver (sistema gerenciador de múltiplos tipos de bancos de dados)
8.2 Criar uma nova conexão no DBeaver, com os seguintes dados:
Host: localhost
Database: testejp
Port: 5432
Username: testejp
Password: testejp
8.3 Criar arquivo .env
- Criar arquivo .env, na pasta snelf-frontend
- Criar a seguinte variável de ambiente: WDS_SOCKET_PORT=3001
8.4 Acessar o site
Acessar localhost:3001, de modo a acessar a página inicial do Snelf

9. Primeiro acesso ao sistema

Caso seja seu primeiro acesso ao sistema, seguir todos os passos desta seção.

9.1 Inserir arquivo CSV no sistema
  • Acessar a opção "Importar Base de Transações"
  • Clicar no botão "UPLOAD CSV"
  • O arquivo exemplo que deverá ser importado está na pasta snelf/produtos_farmaceuticos.csv
  • Após feito o upload, clicar no botão "IMPORTAR"
9.2 Treinar o modelo, para clusterização de classes de medicamentos
  • Após realizada a importação do csv, acessar a opção "Atualizar Treinamento do Modelo"
  • Clicar no botão "TREINAR MODELO"
9.3 Pesquisar transações
  • Acessar a opção "Buscar Produtos"
  • Selecionar o modo de busca (Produto ou CLEAN)
  • Inserir o nome do produto ou clean (as buscas podem conter strings parciais)
  • O usuário pode baixar os resultados como PDF ou Excel, visualizar transações passadas para os medicamentos, as principais estatísticas das transações retornadas e um gráfico box-plot considerando os preços praticados para as transações retornadas

Parar o docker compose:

Para parar o container, basta rodar o comando 'sudo docker-compose stop'

About

Projeto Snelf


Languages

Language:Python 64.1%Language:JavaScript 31.8%Language:Dockerfile 1.5%Language:HTML 1.1%Language:CSS 0.6%Language:Batchfile 0.5%Language:Makefile 0.4%