# Melhorias de performance no Atlas 2.0 ###### tags: `thinking_done` ### Problemas com a modelagem atual: - Melhorar a performance do infoset#stats na rota de visualizacao de outro usuario - Melhorar a performance do metodo que retorna as tags do user_generated_data no infoset - Melhorar a performance do metodo que retorna os company-stats do infoset - Rever como fazer a verificacao da finalziacao da exportacao para permitir que o usuario solicite a validacao de telefones ### Principais Modelos # User: We will follow the decisions in here: https://docs.google.com/drawings/d/1NqO9rNUencpb9pK8i6T7vL0wV2kYWVdQWzV5aVYoQcs/edit?usp=sharing - Relacoes: - ProspectingLogs -> precisa ser embeded? N sera embeded - PhoneValidStatus -> precisa ter relacao? On hold - CustomPhones -> precisa ter relacao? On hold - Comments -> precisa ser embeded? N sera embeded - Sessions -> precisa ser embeded? n precisa ser embeded - UserGeneratedData -> precisa ser embeded? n precisa ser embeded - Campos/fields: - exported_cnpjs/company_gov_id_in_blacklist -> precisa ser outra collection -> on hold - .*score.* -> precisa ser outra collection -> sera removido - saved_searches -> legado -> sera removido - integracoes -> deveriam ser uma collection separada -> sera outra collection --- # Infosets - - Relacoes: - Contact -> e necessario? apagar a relacao e os dados - Campos: - hidden_columns, visible_columns, visible_column_heads, editable_columns, editable_column_heads, hidden_column_heads -> poderia ser collection separada? -> eliminar as colunas e separar em arquivos yml que o VueJS usara, a la atlas-search - carlist_options, complete_first_validations_results_cycle, complete_second_validations_results_cycle, total_contacts_with_identities -> remover carlist e verificar se os outros n estao sendo usados, caso n estejam, remover - total_contacts_with_phones -> nao deveria estar no AutoCallerList? remover - trash -> se temos trash, por que usamos info_set_deleted_ids? alterar para deleted e remover o infos_set_deleted_ids pq so n faz sentido --- # Phones e Validações We will take as base of decision this: https://docs.google.com/drawings/d/1GkKJSW7l-qEFhKIOKWLTYyy7uJU0upsn6Qk1r8KH7Fc/edit?usp=sharing - AutoCallerList: - Relacoes: - Deveria ter relacao has_many com Phones - Deveria ter contagem de telefones validos, ativos, etc - Deveria ter relacao has_many PhoneValidations - Phone: - Relacoes: - Deveria ter relacao belongs_to AutoCallerList - Deveria ter relacao has_one PhoneValidation - Deveria manter a relacao para Contact e para Company? - Campos: - identity_mongo_id -> procurar wtf -> remover - PhoneValidation(?): - Relacoes: - Deveria ter uma relacao belongs_to Phone - Deveria ter relacao com Icompany? - Deveria ter uma relacao belongs_to AutoCallerList - Campos: - phone_number -> e necessario dado que ja tem relacao com o Phone? - last_update -> substituir por TimeStamps #### pontos importantes: - Calcular as metricas que usamos para o phone-validatios/phone-validated e ver se o counter cache seria o suficiente para isso - Ver as opcoes para calcular os stats dos phone-validations: - map-reduce para retornar estatisticas direto do banco - usar map-reduce para retornar todos dos Phones e PhoneValidation e depois filtrarmos/contarmos no ruby - field cache que recalcula as contagens dentro do infoset e e chamado quando toda a exportacao e feita, quando a solicitacao de validacao de telefone e chamada e quando e feita a atualizacao dos status dos phone validations --- # Misc #### Conferir se o whenever esta sendo rodado apos o deploy #### Add timestamp em tudo - Sera criada uma nova collection CnpjExcluded: - fields: - array de cnpjs - id - user_id - excluded_reason - Na query pegaremos todos os array de cnpjs de acordo com o user_id e usar distinct para evitar informacoes duplicadas