# BigMarket
## Objetivo
Analisar os produtos aptos a serem enriquecidos que tenham na base da BM e buscar mais informações para aumentar a taxa de enriquecimento.
## Testes
### Script do teste:
Busca na API da BM pelos gtins do csv extraído. Retorna as informações do número de gtins buscado, total de gtins existentes na BM, total de gtins inválidos e porcentagem de enriquecimento.
Para rodar o script:
```bash
python -m check_gtin <NÚMERO DE GTINS A BUSCAR (Opcional)>
```
https://gist.github.com/mabreu87/48965649c52d265d42d0f4379ec41502
\* Para uso do script instalar a lib `gtin-validator` e alterar o caminho para o csv. \
\* Se não informar o número de gtins a buscar, percorrerá todos os gtins do csv.
### Dados usados nos testes
Foram tirados da base os produtos aptos a serem enriquecidos cadastrados a partir da modificação da task [SUCT-3232](https://jira-olist.atlassian.net/browse/SUCT-3232) (12/05/2021). A query abaixo foi extraída do Dashboard.
```sql
SELECT sp.sku, sp.gtin
FROM datalake.products_api_seller_products_sellerproduct AS sp
WHERE length(sp.description) <= 300
AND sp.created_at-interval'3'hour >= timestamp '2021-05-12'
AND sp.created_at-interval'3'hour < date_trunc('day', current_timestamp-interval'3'hour)
AND sp.gtin NOT LIKE '296%'
AND sp.status IN ('approved','rejected')
AND sp.active = true;
```
CVS extraído: \
https://drive.google.com/file/d/1I_JFQqijxlsF89Gxn65qjg4xzFdPrgLN/view?usp=sharing
### Resultado dos testes
Foram analisados os primeiros 1000 gtins do csv extraído para não onerar a API da BM.
https://drive.google.com/file/d/1qJM5RspxvPSTjEQFq3qpzice4F72Npzy/view?usp=sharing
**Total de GTINs:** 1000 \
**Total existente na BM:** 284 \
**Percentual:** 28.40% \
**Total de GTINs inválidos:** 5
### Validações adicionais
Validações que não foram feitas neste teste e que também podem influenciar para o não enriquecimento dos produtos.
- Título não correspondente
- O catalog-keeper verifica a similaridade entre os títulos para validar a descrição.
- Descrições acima de 4k
- Quando é encontrada uma descrição na BM, fazemos uma concatenação da descrição do seller + título da BM + descrição da BM + atributos da BM. Se ultrapassar de 4k caracteres, o catalog-keeper não enriquece o produto.
### Tarefa para amenizar erros de 4k caracteres
Task: [SUCT-3232](https://jira-olist.atlassian.net/browse/SUCT-3232) \
PR: [#146](https://github.com/olist/catalog-keeper/pull/146)
Anteriormente no catalog-keeper era concatenado a descrição geral da BM e a descrição do canal escolhido. Foi removido a menor descrição entre as duas para amenizar os erros de limite de caracteres porém, de acordo com o Dashboard, em uma semana a taxa de enriquecimento passou de ~13% para ~14%.
### Sugestões
Para melhorar o rastramento das informações:
- Inserir tags mais específicas no seller-product, como:
- `{"name": "bigmarket - produto enriquecido"}`
- `{"name": "bigmarket - não existe cadastro"}`
- `{"name": "bigmarket - descrição acima do permitido"}`
- `{"name": "bigmarket - gtin inválido ou não existente"}`
- `{"name": "bigmarket - títulos não correspondentes"}`
Isso permite ter mais clareza de quais (e a qtd) produtos foram enriquecidos e os motivos reais dos que não foram.
- Dashboard: Trazer as informações por gtin e não sku, pois vários skus podem ter o mesmo gtin.
### Links
Dashboard:
https://bi.olist.com/dashboard/dados-de-enriquecimento-da-descri-o-de-produtos
Testes iniciais do Léo Nascimento:
https://docs.google.com/spreadsheets/d/1hBkkf55DW0A-Ni46A9XKbsX79HSuiWVSCVgvmR9K7Ks/edit#gid=702168175
Documentação da BM - API:
https://docs.bigmarket.bigdatacorp.com.br/