Minha solução para o problema proposto no Processo Seletivo da Racoon, Estágio TI, 2019
Usando Python ou Javascript, fazer as correções e validações propostas em um conjunto de dados JSON corrompido, o qual pode ser baixado no nesse link
Mais especificamente, criar três funções para percorrer o banco de dados corrompido e corrigir os três erros descritos:
- Nos nomes;
- Nos preços;
- Nas quantidades.
Para validação, criar
- Uma função que imprime a lista com todos os nomes dos produtos, ordenados primeiro por categoria em ordem alfabética, depois ordenados por id em ordem crescente;
- Uma função que calcula qual é o valor total do estoque por categoria, ou seja, a soma do valor de todos os produtos em estoque de cada categoria, considerando a quantidade de cada produto.
- Python 3 (não compatível com versões anteriores)
- Pandas Dataframe
- Classe "Produto"
Neste diretório, executar:
> pip3 install -r requirements.txt
> python3 psRacoon.py
Output: Diretório "Saídas"
A classe Produto é criada para poder armanezar os dados de cada produto afim de poder fazer as validações solicitadas. Para as correções, a classe não é utilizada, fazendo-se uso apenas de parsing do arquivo broken-database.json.
Depois de armazenadas as instâncias de Produto, as validações foram feitas a partir de uma tabela (dataframe) do Pandas. As funções "sort_values" e "groupby" auxiliam na ordenação e no agrupamento, respectivamente.
A sequência de execução é:
- Lê o arquivo corrompido
- Faz a primeira correção solicitada
- Faz a segunda correção solicitada
- Faz a terceira correção solicitada
- Salva o arquivo corrigido
- Cria instâncias da classe Produto com base no arquivo corrigido
- Faz a primeira validação solicitada
- Faz a segunda validação solicitada
- "salva_produtos": A partir do json corrigido, gera as instâncias da classe Produto e armazena.
- "corrige_nomes": Faz a primeira correção solicitada
- "corrige_precos": Faz a segunda correção solicitada
- "corrige_quantidades": Faz a terceira correção solicitada
- "imprime_nomes": Gera output da primeira validação solicitada
- "imprime_valor_estoque": Gera outuput da segunda validação solicitada
São gerados três arquivos de saída:
- corrected-database.json: Database corrigido
- imprimenomes.txt: Saída da primeira validação solicitada
- imprimeestoque.txt: Saída da segunda validação solicitada