Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refatoração dos Relatórios de Eventos para ReportListView #186

Open
wants to merge 3 commits into
base: sigi-4.0
Choose a base branch
from

Conversation

moonshinerd
Copy link

@moonshinerd moonshinerd commented Feb 23, 2025

Segue a descrição detalhada das alterações realizadas na refatoração dos relatórios do módulo de eventos, migrando as views para a base ReportListView. Essa atualização padroniza a exibição, filtragem, agrupamento e exportação dos relatórios, facilitando a manutenção e evolução futura do sistema. Abaixo, listo as mudanças por endpoint:


1. eventos_por_uf

Versão Anterior:

  • Tipo: Function-Based View (FBV).
  • Funcionalidade:
    • Recebia filtros via GET (datas, categorias e modalidade – presencial/virtual).
    • Executava consultas complexas com o ORM e utilizava a biblioteca pandas para realizar agregações e gerar tabelas pivot (por UF e por região).
    • Suportava exportação para HTML, PDF e CSV.

Versão Atual (EventosPorUfReportView):

  • Tipo: Class-Based View, derivada de ReportListView.
  • Alterações:
    • A lógica de filtragem e agregação foi centralizada em métodos como get_initial(), get_context_data() e render_to_response().
    • A estrutura modular facilita a manutenção e a reutilização de código, mantendo a mesma funcionalidade de exportação em múltiplos formatos.

2. solicitacoes_por_periodo

Versão Anterior:

  • Tipo: FBV.
  • Funcionalidade:
    • Processava as solicitações de eventos com filtros para período, tipo de evento, modalidade e status.
    • Realizava anotações (contagem de solicitações, atendimentos, rejeições, participantes e custo total) utilizando o ORM e pandas para agrupamentos e geração de pivôs por UF, região e tipo de evento.
    • Permitida a exportação para HTML, PDF e CSV.

Versão Atual (SolicitacoesPorPeriodoReportView):

  • Tipo: CBV baseada em ReportListView.
  • Alterações:
    • A lógica dos filtros, cálculos e agrupamentos foi migrada para o método get_context_data(), utilizando um filter_form e a configuração inicial via get_initial().
    • A exportação dos relatórios foi padronizada no método render_to_response(), garantindo consistência com os demais relatórios.

3. calendario

Versão Anterior:

  • Tipo: FBV.
  • Funcionalidade:
    • Exibia um calendário de eventos, filtrando por mês, categorias e status.
    • Calculava as semanas do mês e distribuía os eventos de acordo com seus intervalos (ajustando data de início e fim).
    • Permitida a exportação para PDF com layout específico.

Versão Atual (CalendarioReportView):

  • Tipo: CBV baseada em ReportListView.
  • Alterações:
    • A construção do calendário e a lógica de alocação dos eventos por semana foram mantidas, mas integradas na estrutura do ReportListView.
    • Os filtros e a configuração inicial foram encapsulados em métodos próprios, facilitando a manutenção.
    • A renderização para PDF segue o padrão adotado nos outros relatórios, centralizada em render_to_response().

4. alocacao_equipe

Versão Anterior:

  • Tipo: FBV.
  • Funcionalidade:
    • Gerava uma tabela de alocação de equipe, iterando sobre os eventos e seus membros, e agrupava os dados (dias e quantidade de eventos) para cada membro, considerando visualizações mensais e semanais.
    • Suportava exportação para HTML, PDF e CSV.

Versão Atual (AlocacaoEquipeReportView):

  • Tipo: CBV derivada de ReportListView.
  • Alterações:
    • A lógica de processamento, agrupamento e cálculo dos dados foi transferida para o método get_context_data(), com estrutura mais organizada e legível.
    • A padronização na exportação (HTML, PDF, CSV) foi implementada no método render_to_response(), mantendo a fidelidade dos dados e facilitando futuras alterações.

Atualizações nas URLs de Administração

As rotas foram atualizadas para apontar para as novas classes de relatório:

  • calendario/ → CalendarioReportView
  • alocacaoequipe/ → AlocacaoEquipeReportView
  • eventosporuf/ → EventosPorUfReportView
  • solicitacoesporperiodo/ → SolicitacoesPorPeriodoReportView
  • Outras views, como CustosEventosReport, CustosServidorReport e AlunosPorUfReportView, permanecem configuradas conforme o padrão adotado.

Alteração no design do gerador de relatório de calendário de eventos

Anterior:
No layout antigo, o campo de mês era do tipo month, e o formulário não seguia o mesmo padrão visual dos outros filtros.

Atualizado:
Agora, o usuário informa o ano e escolhe o mês em dois campos distintos, que juntos geram o formato YYYY-MM. Os filtros foram reorganizados para ficarem mais claros e coerentes com o restante do sistema, tornando a experiência mais consistente.

Antes Depois
 image  image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant