# Melhorias de performance no Atlas ### Melhorias nos metodos chamados no JS - 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 ### Melhorias nas views do infoset - Remover o kanban da view do infoset, dado que apenas usuarios admins podem visualizar - Remover as queries feitas diretamente na view ever - Remover os trechos direcionados diretamente para admins e exibir em uma pagina separada - Tratar os objetos no controller e nao na view, por exemplo: ```dms.reject { |decisor| decisor['nome'].blank? && decisor['name'].blank? }``` - Remover o loop de flash messages da view e deixar o VueJS lidar com isso - Armazenar API Token no SessionStorage ao inves de renderizar o token em cada view - A verificacao da presenca de empresas exportadas nao precisa ser feita dentro da view - A exibicao dos dados dos administradores, registro da empresa, localizacao, contato, quadro societario, informacoes adicionais e informacoes personalizadas da empresa devera ser carregado com lazy load - Os status de cada empresa no infoset deveria ser definido no model como enum ou como uma collection separada e nao na view - Limitar a quantidade de notificacoes exibidas na navbar ### Melhorias nos models - User: - 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 - InfoSet: - 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 - 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 #### Conferir se o whenever esta sendo rodado apos o deploy #### Calcular as metricas que usamos para o phone-validatios/phone-validated e ver se o counter cache seria o suficiente para isso #### Add timestamp em tudo ### Ver as views que nao estao sendo usado ou nao e dar feedback disso para o Diogo - 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 - 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 - Anonymiser o nosso banco para poder passar para os freelas