Agendador de Relatórios
Sistema de Agendamento de Relatórios - Manual do Usuário
Descriçdescrição Geral
A funcionalidade de Agendamento de Relatórios é uma ferramenta projetada para automatizar a geração e distribuição periódica de relatórios dentro de um sistema de gerenciamento de frota. Esta funcionalidade permite aos usuários configurar a geração automática de relatórios específicos, como o Histórico de Cidades, determinando sua periodicidade (diária, semanal ou mensal) e configurando os destinatários que receberão estes relatórios por e-mail. Para acessar a opção utilize o menu CONFIGURAÇÕES e a opção AGENDAMENTO DE RELATÓRIOS.
O sistema é composto por duas telas principais:
- Tela de cadastro/edição de agendamento
- Tela de listagem de agendamentos configurados
Elementos da Interface
Tela de Cadastro/Edição de Agendamento
Seção de Cabeçalho
- Título: "Agendador de Relatório"
- Subtítulo: "Relatório: Histórico de Cidades" (O nome do relatório selecionado)
Seção de Configuração Básica
- Nome: Campo de texto para identificação do agendamento
- Exemplo: "Agenda Histórico de Cidades Mensal"
- Obrigatório
- Sem limite específico de caracteres
- Enviar às (hh:mm): Campo de texto com máscara para horário
- Formato 24h (00:00 a 23:59)
- Exemplo: "07:12"
- Obrigatório
- Determina o horário que o relatório será gerado e enviado
Seção de Periodicidade
- Periodicização a cada: Conjunto de campos para definir a frequência
- Campo numérico para quantidade (valor mínimo 1)
- Dropdown para seleção da unidade de tempo
- Opções: "Dias", "Semanas", "Mês/Meses"
- Obrigatório
Seção de Dias da Semana (visível apenas quando "Semanas" está selecionado)
- E repetir: Conjunto de checkboxes para os dias da semana
- Opções: Segunda, Terça, Quarta, Quinta, Sexta, Sábado, Domingo
- Pelo menos um dia deve ser selecionado quando periodicidade é semanal
- No exemplo, Sexta e Sábado estão selecionados
Seção de Data Limite
- Até o dia: Campo de data
- Formato: DD/MM/AAAA
- Opcional
- Define até quando o agendamento estará ativo
Seção de Destinatários
- Destinatários: Conjunto de 6 campos para e-mails
- Formato: e-mail válido (texto@domínio.com)
- Apenas o primeiro é obrigatório
- Nos demais campos aparecem placeholders: "Destinatário 2", "Destinatário 3", etc.
- Exemplo do primeiro campo preenchido: "moisesf@gmail.com"
Botões de Ação
- Gravar: Botão verde para salvar as configurações
- Excluir: Botão vermelho para remover o agendamento
- Voltar: Botão cinza para retornar à tela de listagem
Tela de Listagem de Agendamentos
Seção de Cabeçalho
- Título: "Agendador de Relatórios"
Seção de Filtros
- Filtros: Seção expansível
- Nome: Campo de texto para filtrar pelo nome do agendamento
- Periodicidade: Dropdown com opções de periodicidade
- Botões de ação à direita (busca, exportação e adição)
Tabela de Agendamentos
- Colunas:
- Nome: Nome do agendamento cadastrado
- Relatório: Tipo de relatório configurado
- Horário: Horário programado para execução
- Periodicidade: Frequência configurada (exibida em formato textual)
- Repetir Até: Data limite para o agendamento (quando definida)
- Última Execução: Data e hora da última vez que o relatório foi executado
- N.: Número sequencial ou contador (não visível completamente)
Dados Exibidos (exemplo)
- Um agendamento com nome "Agenda Histórico de Cidades Mensal"
- Relatório do tipo "Histórico de Cidades"
- Horário de execução às "07:12:00"
- Periodicidade "Toda semana [ Sexta, Sábado ]"
- Última execução em "2025-03-14 07:19:38.0"
- Valor "0" na coluna N.
Propósito e Fluxo de Trabalho
O propósito principal deste sistema é automatizar a geração e distribuição de relatórios, economizando tempo e garantindo que relatórios importantes sejam gerados de forma consistente e enviados aos interessados.
Fluxo de trabalho básico:
- O usuário acessa a tela de listagem de agendamentos
- Para criar um novo agendamento, o usuário clica no botão de adicionar (ícone verde à direita)
- Na tela de cadastro, o usuário:
- Seleciona o tipo de relatório (pré-configurado na tela)
- Fornece um nome para identificar o agendamento
- Define o horário para execução
- Configura a periodicidade (diária, semanal ou mensal)
- Se semanal, seleciona os dias da semana
- Se mensal, define o dia do mês
- Opcionalmente, define uma data limite para o agendamento
- Insere pelo menos um e-mail de destinatário
- O usuário clica em "Gravar" para salvar o agendamento
- O sistema retorna à tela de listagem onde o novo agendamento aparece
- O sistema, nos bastidores, executará o relatório conforme a programação e enviará aos destinatários
Para editar um agendamento existente, o usuário seleciona o registro na tabela de listagem. Para remover, utiliza o botão "Excluir" na tela de edição.
Instruções Passo-a-Passo
Como criar um novo agendamento de relatório:
- Acesse a tela de listagem de agendamentos
- Clique no botão verde à direita (ícone de adição)
- Na tela de cadastro:
- Digite um nome descritivo para o agendamento
- Defina o horário de envio no formato HH:MM
- Configure a periodicidade:
- Digite o número no campo "Periodicização a cada"
- Selecione a unidade de tempo (Dias, Semanas, Mês/Meses)
- Se escolher periodicidade semanal:
- Marque as caixas correspondentes aos dias da semana desejados
- Se escolher periodicidade mensal:
- Digite o dia do mês (1-31)
- Opcionalmente, defina uma data limite no campo "Até o dia"
- Preencha pelo menos o primeiro campo de e-mail destinatário
- Adicione destinatários adicionais nos campos restantes, se necessário
- Clique no botão "Gravar" para salvar o agendamento
- O sistema retornará automaticamente à tela de listagem
Como editar um agendamento existente:
- Na tela de listagem, clique na linha do agendamento que deseja editar
- Faça as alterações necessárias nos campos disponíveis
- Clique no botão "Gravar" para salvar as modificações
Como excluir um agendamento:
- Na tela de listagem, clique na linha do agendamento que deseja excluir
- Na tela de edição, clique no botão "Excluir" (vermelho)
- Confirme a operação quando solicitado
Como filtrar agendamentos na listagem:
- Na seção de filtros, digite um termo no campo "Nome" para filtrar por nome do agendamento
- Selecione uma opção no dropdown "Periodicidade" para filtrar por tipo de periodicidade
- Clique no botão de busca (ícone de lupa) para aplicar os filtros
Regras de Negócio e Validações
Com base na análise do sistema, podemos identificar as seguintes regras de negócio e validações:
-
Validações de campos obrigatórios:
- O nome do agendamento deve ser preenchido
- O horário de envio deve ser preenchido e válido
- A periodicidade deve ser configurada
- Se periodicidade for semanal, ao menos um dia da semana deve ser selecionado
- Se periodicidade for mensal, o dia do mês deve ser válido (1-31)
- Pelo menos um destinatário de e-mail deve ser fornecido
-
Validações de formato:
- Horário deve estar no formato HH:MM (24h)
- E-mails devem estar em formato válido
- Data limite deve estar no formato DD/MM/AAAA e ser uma data futura
-
Funcionalidade de repetição:
- Dependendo da periodicidade selecionada, os campos de configuração exibidos variam
- Com periodicidade semanal, os checkboxes de dias da semana são mostrados
- Com periodicidade mensal, um campo para o dia do mês é mostrado
-
Automação:
- O sistema executa automaticamente os relatórios nos horários configurados
- Os relatórios são enviados para os e-mails cadastrados
- O sistema registra a data e hora da última execução
Perguntas Frequentes (FAQ)
1. Como configuro um relatório para ser enviado diariamente?
Para configurar um relatório diário, selecione "Dias" no dropdown de periodicidade e coloque "1" no campo numérico. Defina o horário desejado e adicione os e-mails dos destinatários.
2. Posso configurar um relatório para ser enviado apenas em dias específicos da semana?
Sim. Selecione "Semanas" no dropdown de periodicidade e marque apenas os dias da semana desejados na seção "E repetir".
3. Como faço para que o relatório seja enviado uma vez por mês, sempre no mesmo dia?
Selecione "Mês/Meses" no dropdown de periodicidade, coloque "1" no campo numérico e especifique o dia do mês desejado.
4. O que acontece se eu configurar o dia 31 para um relatório mensal?
Para meses que não possuem o dia 31, o sistema executará o relatório no último dia do mês.
5. Posso limitar por quanto tempo um agendamento ficará ativo?
Sim. Utilize o campo "Até o dia" para definir uma data limite. Após essa data, o agendamento não será mais executado.
6. Quantos destinatários posso adicionar para receber o relatório?
O sistema permite até 6 endereços de e-mail diferentes como destinatários.
7. Como sei se o agendamento está funcionando corretamente?
Na tela de listagem, você pode verificar a coluna "Última Execução" que mostra a data e hora da última vez que o relatório foi executado com sucesso.
8. Posso pausar temporariamente um agendamento sem excluí-lo?
Não há uma função específica de pausa, mas você pode editar o agendamento e definir uma data no passado no campo "Até o dia" para desativá-lo, e depois alterar para uma data futura quando quiser reativá-lo.
9. O que acontece se eu não preencher o campo "Até o dia"?
Se não for definida uma data limite, o agendamento continuará ativo indefinidamente até que seja excluído manualmente.
10. Posso visualizar o conteúdo dos relatórios antes de agendar?
O sistema de agendamento não possui visualização prévia. Recomenda-se gerar o relatório manualmente primeiro para verificar seu conteúdo antes de configurar o agendamento.
Com base no arquivo SenderAgendarRelatoriosFachada.java, vou complementar a documentação anterior com detalhes importantes sobre o funcionamento interno do sistema de agendamento de relatórios, especialmente quanto aos mecanismos de execução e regras de processamento.
Complemento
Mecanismo de Execução Automática
O sistema utiliza um mecanismo automatizado (robô) para execução dos relatórios agendados. Este processo verifica periodicamente quais relatórios devem ser executados com base em suas configurações. Vamos detalhar seu funcionamento:
Processo de Verificação e Envio
-
O sistema recupera a lista de relatórios agendados pendentes de envio via método
recuperarListaParaEnviar(). -
Para cada agendamento, realiza validações específicas de acordo com a periodicidade:
- Verifica se o horário atual é igual ou posterior ao configurado
- Confirma se o dia atual corresponde ao programado
- Confirma se o relatório ainda não foi executado hoje
- Verifica regras específicas para periodicidade semanal ou mensal
-
Quando um agendamento atende aos critérios, o sistema:
- Autentica-se com as credenciais do cliente
- Gera o relatório solicitado, convertendo os parâmetros conforme necessário
- Envia o relatório por e-mail aos destinatários configurados
- Registra a execução no histórico do agendamento
Regras de Execução Detalhadas
Para Relatórios Mensais:
- Na primeira execução: verifica se o dia atual coincide com o dia programado e se o horário é válido
- Nas execuções seguintes: verifica se o mês atual corresponde ao próximo mês esperado após a última execução (considerando o passo de repetição configurado)
- Ajusta automaticamente para o último dia do mês quando o dia configurado não existe no mês atual (ex: dia 31 em fevereiro)
Para Relatórios Semanais:
- Na primeira execução: verifica se o dia atual da semana está entre os selecionados e se o horário é válido
- Nas execuções seguintes: verifica se a semana atual corresponde à próxima semana esperada após a última execução (considerando o passo de repetição configurado em semanas)
- Executa apenas nos dias da semana que foram marcados na configuração
Ajuste Automático de Datas
O sistema possui um mecanismo inteligente para ajustar automaticamente as datas de início e fim dos relatórios:
-
Quando um relatório é agendado com um período específico (ex: últimos 30 dias), o sistema calcula a diferença entre a data do agendamento e a data atual.
-
Aplica essa diferença às datas de início e fim do período do relatório, mantendo a mesma amplitude relativa, mas atualizando-as para o momento atual.
-
Isso garante que relatórios periódicos sempre apresentem dados atualizados em relação ao momento de sua execução, não ficando presos ao período original do agendamento.
Comunicação e Processamento
O sistema realiza as seguintes operações de comunicação na geração de relatórios:
-
Autenticação: Realiza autenticação segura usando um hash gerado a partir do ID do cliente e da empresa.
-
Requisição de Relatório: Constrói uma requisição HTTP com todos os parâmetros necessários para a geração do relatório.
-
Processamento de Resposta: Recebe e processa a resposta (geralmente um arquivo PDF), salvando-o temporariamente.
-
Preparação de E-mail: Utiliza um template personalizado contendo:
- Nome do agendamento
- Nome do cliente
- Data e hora de geração
- Nome descritivo do relatório
- Período abrangido (data/hora início e fim)
- Dados da empresa (nome fantasia e site)
-
Envio: Distribui o e-mail com o relatório anexado para todos os destinatários configurados.
Tratamento de Erros e Situações Especiais
O sistema implementa as seguintes estratégias para lidar com situações excepcionais:
-
Falhas de Autenticação: Se a autenticação falhar, o sistema registra o erro e interrompe o processamento daquele relatório.
-
Validação de E-mails: Antes de enviar, valida cada endereço de e-mail configurado, utilizando apenas os que possuem formato válido.
-
Datas Inexistentes: Para relatórios mensais programados para dias que não existem em todos os meses (como dia 31), o sistema ajusta automaticamente para o último dia do mês.
-
Parâmetros Dinâmicos: Os parâmetros de data são recalculados dinamicamente a cada execução, garantindo que os relatórios sempre apresentem dados atualizados.
-
Limite de Execução: Respeita a configuração de data limite ("Até o dia"), não executando relatórios após essa data.
Considerações Técnicas Adicionais
-
O sistema utiliza templates Velocity para a geração padronizada do corpo do e-mail.
-
Os arquivos de relatório são gerados como PDFs e anexados ao e-mail.
-
O registro de execução permite rastrear todas as gerações de relatórios, controlando a frequência e evitando duplicações.
-
A validação de horário usa a comparação com o horário do sistema, permitindo a execução mesmo se o momento exato for perdido (desde que o horário atual seja posterior ao programado).
-
O sistema mantém registro detalhado de logs para fins de auditoria e resolução de problemas.
-
Há um mecanismo de conversão entre diferentes formatos de data para garantir a compatibilidade entre os diversos componentes do sistema.
Esta complementação esclarece o funcionamento interno do sistema de agendamento, fornecendo uma visão mais completa de como os relatórios são processados, ajustados e enviados automaticamente conforme as configurações definidas pelo usuário.