Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Desafio: Automatizando tarefas

A solução sugerida funciona como esqueleto.

Dados de entrada (mais ricos que entrada/saída)

Em vez de um par (entrada, saída), o realista é um log de eventos por participante: [participante_id, tipo_evento, timestamp] onde tipo pode ser join, leave ou heartbeat. Isso porque numa live de 2h é comum a pessoa cair e reconectar varias vezes.

Também preciso de: inicio_evento, fim_evento, e um threshold (ex.: 0,9).

Verificação (com tolerância e clipping na janela do evento)

Para cada participante:

  • Reconstruo os intervalos [entrada_n, saída_n] a partir do log.
  • Recorto cada intervalo para dentro de [inicio_evento, fim_evento] - quem entrou antes ou ficou depois não ganha bônus.
  • Somo as durações = tempo_ativo.
  • Comparo tempo_ativo / duracao_evento >= threshold.

Ingina um evento das 19h00 às 20h00 (duração = 60min):

  • Pessoa entra 18h50 (10min antes, esperando começar) e sai 19h55 (5min antes do fim).
  • Permanência crua = 65min.
  • Algoritmo: 65 ≥ 60 → envia o agradecimento.
  • Mas ela só assistiu 55min reais — perdeu o encerramento. (por isso a necessidade de clipping, o "saguão" antes do evento não pode gerar crédito para sair antes)
  • O intervalo [18h50, 19h55] é recortado para [19h00, 19h55] = 55min.
  • 55 / 60 = 0,92 → passa no threshold de 90%, mas pelo motivo certo.

Threshold em vez de igualdade exata é o que Zoom, Webex e Teams Live Events usam. Igualdade quebra na primeira queda de Wi-Fi.

Decisão e ação (com idempotência)

para cada participante em lista:
tempo_ativo = soma_intervalos_recortados(log, inicio, fim)
se tempo_ativo / duracao_evento >= 0.9 ou 0,N:
se nao enviado_antes(participante_id, evento_id):
enviar_email(participante_id)
marcar_envio(participante_id, evento_id)
senao:
nao enviar

A tabela enviado_antes evita que rodar o script duas vezes mande dois e-mails

Um detalhe que escapa fácil: presença ativa ≠ conectado

O Zoom até teve o "attentiveness score" (depois removido por privacidade).

Dá vontade de cruzar tempo conectado com sinais como foco da aba, o Attention Tracking (2020), que sinalizava ao host quando o participante saía da janela do Zoom por mais de 30 segundos. A feature foi removida no mesmo ano dentro do "90-day plan" de privacidade da empresa, por dois motivos que se reforçam:

  • Ética: virou símbolo de vigilância em ensino e trabalho remoto na pandemia, com FTC investigando práticas da Zoom.
  • Técnica: foco da janela ≠ atenção. Anotar em outro app, abrir um link do chat ou usar segunda tela te marcava como desatento. O sinal media a coisa errada.

Medir tempo de conexão recortado é honesto não promete o que não pode entregar. Se quisermos sinais mais ricos no futuro, o caminho é engajamento voluntário (chat, poll, reações), o usuário escolhe sinalizar. podendo usar palavras chaves para sorteios ou direcionamentos para sites que registram entradas (para fazer dinâmicas), ou outras formas de "fazer o ouvinte se movimentar", durante a apresentação acabam sendo outras estratégias de engajamento que melhoram o grau de atenção na apresentação e que geram dados valiosos.

2 respostas

Oii Levi, tudo bem?

Obrigada por compartilhar sua solução no fórum — ela vai além do esperado para o desafio e traz conceitos que outros alunos provavelmente nunca considerariam nesse contexto.

Dois pontos que se destacam bastante:

O clipping na janela do evento é uma sacada precisa. Sem ele, quem entrou cedo e saiu antes do fim seria premiado injustamente — exatamente o exemplo que você ilustrou com os 65 min brutos vs. 55 min reais.

A idempotência (enviado_antes) também é um cuidado de produção real, não de exercício acadêmico. Muita gente só descobre esse problema depois de mandar e-mail duplicado para 500 pessoas.

A discussão sobre o Attention Tracking do Zoom também é pertinente: você chegou à mesma conclusão que a própria empresa — medir conexão é honesto, medir atenção por proxy (foco da janela) mede a coisa errada. E sua sugestão de engajamento voluntário (chat, polls, palavras-chave para sorteio) é exatamente o caminho que plataformas sérias tomaram depois disso.

Conte com a Alura para evoluir seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!

Sucesso

Imagem da comunidade
solução!

Obrigado pela leitura atenta, fico feliz em poder acrescentar meus dois centavos ao desafio.