Closed pedroCervi closed 4 years ago
Segue abaixo uma imagem enviada por um dos coordenadores do projeto do Teste Rápido pro Covid da Secretaria da Saúde, apontando que diariamente entre 11 e 14h o sistema fica sobrecarregado, chegando a exceder o tempo para resposta e gerando o erro (conforme imagem abaixo), devido ao processamento para esse endpoint:
Salientando a importância para apuração e implementação de uma nova forma para apresentar os horários disponíveis.
Uma outra sugestão seria processar todos os horários disponíveis gerados pela unidade quando a mesma é Ativada (no ambiente do operador) e persistir esses slots em uma tabela no Banco de Dados.
Toda vez que um usuário reserva um horário, isso reflete nessa tabela por meio de um atributo reserved
(por exemplo), e toda vez que um usúario acessa o sistema que acessa esse endpoit, o processamento seria simplificado para ler essa tabela e retornar somente os horários que o atributo reserved
é false
.
O fix de pegar por dia baixou as requisições de ~15s para 700ms. Boua! :clap:
new relic
Contexto
Hoje temos uma ação nesse controller que pega todos os slots de agendamento disponiveis. Provavelmente há alguma forma de simplificar essa requisição e tornar ela mais rápida para o usuário. Hoje o impacto está sendo que muitas vezes o servidor dá um timeout.
A complexidade dessa consulta é que as UBS's tem parâmetros de configuração como tempo da consulta, intervalo entre consultas e horário de funcionamento da UBS. Além disso, tem os próprios agendamentos que concorrem com essa lógica que mostra os agendamentos disponíveis.
Esse problema escalou com o aumento da disponibilidade de testes rápidos em Joinville nas últimas semanas.
Ideias
Uma alternativa seria montar uma consulta pequena para o usuário e ir alimentando mais opções com o scroll (estilo dale ponto)