Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Desafio: Automatizando tarefas

Encarando esse desafio com uma mentalidade de desenvolvimento backend, o envio de e-mails para uma base de usuários é essencialmente um processo em lote (batch processing). Para que a automação seja eficiente e livre de erros, precisamos definir o "contrato" de dados e o fluxo lógico.

1. Dados de Entrada Necessários (O Payload)
Para o algoritmo funcionar, precisamos consumir duas fontes de dados:

  • Dados do Evento: A Duração Total do Evento (ex: 120 minutos).

  • Lista de Participantes: Um conjunto de registros onde cada participante possui: Nome, E-mail, Horário de Entrada (Login) e Horário de Saída (Logout).

2. Verificação da Condição (A Regra de Negócio)
A verificação matemática é direta: calculamos a diferença entre o Horário de Saída e o Horário de Entrada para obter o Tempo Assistido. Na prática da engenharia, é comum aplicarmos uma margem de tolerância (ex: perdas de conexão de 2 minutos), mas para a regra estrita do evento, o Tempo Assistido deve ser exatamente igual ou maior que a Duração Total.

3. Tomada de Decisão e Ação Final
A decisão é uma estrutura condicional simples (um IF/ELSE). Se a condição de presença integral for validada (Verdadeiro), a ação final é colocar o e-mail do usuário em uma fila de disparo (messaging queue). Se não for validada (Falso), a ação é apenas registrar a saída e ignorar o usuário para o envio.

Algoritmo em Linguagem Natural
Estruturando o passo a passo da nossa regra de negócio:

INÍCIO

    Definir a constante [Duração Total do Evento].

    Receber a [Lista de Participantes].

    PARA CADA participante na lista, FAÇA:

        Passo A: Calcular o [Tempo Assistido] subtraindo o Horário de Entrada do Horário de Saída.

        Passo B: Avaliar a condição: O [Tempo Assistido] é maior ou igual à [Duração Total do Evento]?

        Passo C: SE VERDADEIRO:

            Gerar o e-mail de agradecimento.

            Enviar para o [E-mail do Participante].

        Passo D: SE FALSO:

            Não realizar nenhuma ação de disparo (seguir para o próximo da lista).

    Encerrar o processamento quando a lista terminar.
FIM

Dessa forma, criamos um algoritmo claro, determinístico e que pode ser facilmente traduzido para código em Java ou qualquer outra linguagem.

1 resposta
solução!

Oi, Weriton! Como vai?

Sua análise ficou bem estruturada e com uma visão clara de processamento em lote e regra de negócio, algo muito alinhado com backend. Importante como você definiu o contrato de dados e organizou o fluxo com IF/ELSE, isso mostra um raciocínio bem sólido. Ótimo também trazer a ideia de fila de envio (queue), que aproxima ainda mais de um cenário real de sistemas distribuídos.

Continue explorando esse tipo de pensamento, pois ele ajuda muito na transição de lógica para código.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!