# Tabelas QL Existem duas collections utilizadas para a geração do produto de qualificador de leads. Estas collections (equivalente à uma tabela em um banco relacional) encontram-se em um banco de dados não relacional, mongoDB, com endereço **sandbox-general.7xq04.mongodb.net**, no database **icarros-database**. A collection qualificador_leads_hist contém todo o histórico de atualização, para todos os anunciantes do icarros. Já a collection qualificador_leads possui apenas os dados que deverão ser atualizados no site no dia atual, considerando apenas os anunciantes que estão com o produto contratado. 1. qualificador_leads_hist ![](https://i.imgur.com/mhuBH4u.png) - _id: hash(str([usuario, modelo_id, anunciante, date]])) hash é uma função do python que identifica unicamente um objeto com um número inteiro. - usuario: id do usuário - modelo_id: id do modelo do carro - date: data de atualização - perfil: id do nível de interesse do usuário <usuario> no modelo <modelo_id> - anunciante: id do anunciante - top_interest: top interesses do usuário <usuario> nos últimos três meses, partindo da data <date>, para as seguintes características: - ano do modelo - cidade do anúncio - modelo - categoria - classe - marca - km - tempo: tempo para o processamento do perfil <perfil> - afiniddade_estoque: lista de carros no estoque do anunciante <anunciante> que podem interessar o usuário <usuario>, ordenada por nível de interesse. Cada item da lista contém: - versao: versão do carro - modelo: modelo do carro - rating: nível de interesse do usuário <usuario> 2. qualificador_leads ![](https://i.imgur.com/olL3lbt.png) Os itens que já se encontram na collection qualificador_leads_hist são cópias, sendo assim possuem o mesmo significado. - notificacao: Se houve mudança no perfil <perfil> desde a última atualizaação. ## Fluxo de atualização ### qualificador_leads_hist - frequência: diária - modo de atualização: append - casos de atualização: - O usuário <usuario> fez um primeiro lead para o modelo <modelo_id>, **em um anúncio do anunciante <anunciante>**. - O usuário fez um detalhe ou tentativa de financiamento para o modelo <modelo_id>, em um anúncio do anunciante <anunciante>, sendo que já existia (<usuario>, <modelo_id>, <anunciante>) em algum documento (equivalente à uma linha em uma tabela de um banco de dados relacional) da collection qualificador_leads_hist. ### qualificador_leads - frequência: diária - modo de atualização: overwrite - etapas: 1. Primeiro filtramos os dados (<_id>, <usuario>, <modelo_id>, <perfil>, <top_interest>, <anunciante> e <afinidade_estoque>) da collection qualificador_leads_hist que - Estão na data de atualização - Possuem anunciantes com o produto de qualificador de leads contratado 2. casos de atualização: - Se é o primeiro lead do usuário <usuario> para o modelo <modelo_id> dentro de um anúncio do anunciante <anunciante>, então definimos <notificacao>=false. Caso contrário: - Se o perfil do usuário não se modificou da última atualização para a atual, então definimos <notificacao>=false. Caso contrário: - Definimos <notificacao>=true - Se o perfil do usuário foi alterado para 1, modificamos esse perfil mapeando qual foi a mudança (ou 2 $\to$ 1, ou 3 $\to$ 1, ...). Além do mais, trocamos os valores de <top_interest> e <afinidade_estoque> para os valores da última atualização. **Obs:** Esse caso merece esse processamento especial pois ele ocorre quando o usuário volta ter uma interação com o site depois de um tempo inativo.