Ir para o conteúdo principal

[Mr. Day] Resolução do erro "Calendar usage limits exceeded"

Data: 08/07/2022

Autores:

  • Gabriel Santi Binda
  • Raissa de Sousa Stolduski
  • Taillon Miguel Gonçalves
  • Vinicius da Rosa Pereira
  • Ádelle Camarão Monteiro

1. Objetivo

O objetivo deste estudo é analisar e estimar o esforço para que seja desenvolvido a resolução do erro "Calendar usage limits exceeded" no Mr. Day.

2. Introdução

Dentro deste estudo, será identificado as funcionalidades que devem ser desenvolvidas afim de que seja alcançado o objetivo. Além disso, será determinado as user stories para possivelmente resolver o problema do "Calendar usage limits exceeded" junto com a pontuação determinando o esforço/complexidade.

3. Desenvolvimento

3.1 Qual o motivo do erro?

Conforme link, "para prevenir spam, Google definiu alguns limites de uso para calendário. Os limites são definidos acima do nível normal de uso dos usuários típicos do calendário. Se os limites são excedidos, o calendário vai automaticamente para o modo somente leitura. O modo somente leitura não permite que o usuário crie ou altere eventos".

3.2 Quais as possíveis resoluções?

  • Implementar o Log em cada ação que tem conexão com API do Google para melhor mapear o fluxo/atividades e ajudar na análise de problemas para melhor resolução do erro.
  • Implementar um tratamento para quando der o erro "Calendar usage limits exceeded", paralizar a integração com API do Google. Mostrar mensagem de erro informando o porquê foi paralisado e quando vai voltar a funcionar.
  • Implementar para que o Google Credentials seja um por unidade. Pois assim, o consumo da API do Google vai diminuir e o pico vai ser menor. Com isso, esperamos que pare de bloquear por presumir que é spam. Hoje, o que acontece é que tem um horário de pico, que vai de zero (por várias horas) para, por exemplo, trezentos chamadas da API em um curto período de tempo. Acreditamos que, por causa do a alta chamadas de API repentinas, o Google considera spam.

3.3 Storias a serem desenvolvidas

  • Eu, como Governadoria, preciso que seja definido um Google Credentials por unidade.
    • Gerar um Google Credentials por unidade
    • Criar campo na model Unidades.GoogleCredentials 
    • Tirar do construtor da classe AgendaDoGoogle o carregamento do Google Credentials
    • Criar método para criar a instância do Service do Google carregando o Credentials que vem por parâmetro
    • Alterar os métodos de chamada da API dentro do AgendaDoGoogle para chamar o método que cria instância do Service. 

4. Conclusão

Conforme análise realizada, foi identificado que, a priori, a melhor solução seria a de implementar para que o um Google Credentials por unidade. Pois assim, resolve na raiz do problema. Sugestão: Seria interessante começar somente com unidade 5-Governadoria, ou seja, só ela ter um Google Credentials diferente.