Skip to main content

Servidor Bokeh

O servidor Bokeh permite conexões websocket para a incorporação de gráficos. No entanto, a abordagem atual é diferente e permite que um ou mais gráficos sejam adequadamente mostrados e editados dentro da aplicação JS.

A aplicação atual carrega dados da API em um Pandas DataFrame para manipulação adequada dentro de elementos Bokeh. Com isso, é possível servir diversos gráficos baseados em seções deste DataFrame maior. A manipulação destes gráficos resume-se a alterar os dados destas seções e atualizar o DataFrame principal de acordo a fim de garantir a consistência para outras adequações.

Também há, na aplicação, a navegação por entre períodos do gráfico (implementada somente na tela de análise manual) que pode ser realizada por meio de dois botões < e >. Esta navegação pode ser realizada por mês, por ano ou por inconsistências. A implementação da navegação é circular, ou seja, caso o usuário esteja no fim do tipo de navegação selecionada e tente avançar novamente, ele volta para o início, e vice-versa.

Gráficos de análise

Os gráficos mostram as cotas presentes de acordo com o tipo de gráfico e as inconsistências que estiverem marcadas no banco de dados.

Gráfico de adequação

Após a seleção de um mês na página de análise, o usuário deve ser capaz de selecionar uma técnica de adequação e, com isso, encaminhar-se à outra tela de acordo com a técnica escolhida (na versão atual o mês não corresponde ao mês selecionado na tela anterior). Esse gráfico também é acompanhado de uma tabela que pode ser selecionável ou não a depender das necessidades de aplicação de regras de negócio e algoritmos.

Cada página de adequação é renderizada a partir de uma seleção no JS. Assim o Bokeh pode conferir widgets específicos a cada técnica na visualização.

As técnicas atualmente previstas para o adequador são:

  • Interpolação;
  • Ajuste de RN;
  • Offset;
  • Regressão usando dado de régua;
  • Correlação de estações;
  • Inconsistências contextuais.

Supervisão de Adequações

Para iniciar as revisões, o supervisor deverá selecionar uma estação (filtro por estação). Depois disso, a tabela mostrará as adequações pendentes. O supervisor também poderá visualizar em um gráfico as linhas originais e as adequações, mostradas em cores e formatos diferentes de acordo com sua identificação e horário.

A tabela possui filtro por adequação (id), filtro por usuário (ainda não implementado) e filtro por período de trabalho. Os filtros também refletem na visualização das cotas adequadas no gráfico.

A tela também conta com navegação por adequação, representado pelos botões "<" e ">".

Abaixo da tabela, existem os botões de "Aceitar" e "Aceitar tudo", com fundo verde, e de "Rejeitar" e "Rejeitar tudo", com fundo vermelho.

Para revisar adequações específicas, o supervisor deverá, primeiro, fornecer o ID da adequação. Depois, deverá clicar em "Aceitar" ou "Rejeitar". Essa ação irá mostrar um modal de confirmação, alertando que TODAS as adequações com este ID serão aceitas ou rejeitadas. Ou seja, o lote de adequações será revisado por completo.

As mudanças de RN pendentes da supervisão aparecem na aba "Mudança RN" e são mostradas no gráfico quando selecionadas. Se existirem outras adequações no intervalo afetado por uma mudança de RN, ela não poderá ser aceita até que essas adequações sejam totalmente revisadas, para evitar que novas inconsistências sejam introduzidas.

Os botões de "Aceitar tudo" e "Rejeitar tudo" são mais poderosos, já que fazem uma mesma ação para TODOS os lotes de adequação da estação selecionada. Por isso, eles devem ser usados com bastante cuidado.

A rota dessa aplicação no servidor Bokeh é /bksup. Na aplicação Next.js, a página se encontra em /supervisao.

Integração com Banco de Dados

A integração com o banco de dados foi implementada para a correção manual e para as técnicas de mudança de RN e interpolação. Cada alteração que o usuário realiza é colocada em uma pilha, contendo dicionários com os dados de cada alteração (cota adequada, usuário, parâmetros, etc). Quando o usuário decidir gravá-las, todas essas alterações são enviadas para o banco de dados através da API e a pilha é esvaziada novamente. Essa implementação busca atender ao requisito de que o analista trabalha em sessões e envia um conjunto de dados consistidos em seu término.

Histórico de versão

VersãoDataDescriçãoAutorRevisor
1.030/01/2024Criação do documentoFelipe M.-
1.131/01/2024Adição de situação do projetoFelipe M.-
1.201/02/2024Adição de situação do projetoFelipe M.-
1.308/02/2024Edição do funcionamento atual do projetoFelipe M.Cássio Reis
1.415/02/2024Edição do funcionamento atual do projetoFelipe M.Cássio Reis
1.516/02/2024Edição e adição da seção "Futuro da aplicação"Felipe M.Cássio Reis
1.619/02/2024Edição e adição na seção "Futuro da aplicação"Felipe M.Cássio Reis
1.720/02/2024Edição e adição na seção "Futuro da aplicação"Felipe M.Cássio Reis
1.821/02/2024Edição da seção "Futuro da aplicação"Felipe M.Cássio Reis
1.923/02/2024Revisão do nome da aplicaçãoCássio ReisFelipe M.
2.027/02/2024Edição do funcionamento atual do projetoCássio ReisFelipe M.
2.129/02/2024Edição do funcionamento atual do projetoFelipe M.Cássio Reis
2.205/03/2024Edição do gráfico de adequaçãoFelipe M.Cássio Reis
2.307/03/2024Edição da seção "Funcionamento Atual"Cássio ReisFelipe M.
2.408/03/2024Edição de "Funcionamento Atual" e "Futuro da Aplicação"Cássio ReisFelipe M.
2.511/03/2024Edição da seção "Funcionamento Atual"Cássio ReisFelipe M.
2.519/03/2024Atualização de informações antigasFelipe M.Cássio Reis
2.621/03/2024Edições para brevidadeFelipe M.Cássio Reis
2.722/03/2024Adição da subseção de RefatoraçãoFelipe M.Cássio Reis
2.703/04/2024Adição da subseção de Integração com Banco de DadosCássio ReisFelipe M.
2.810/05/2024Adição da seção de Supervisão de AdequaçõesCássio ReisFelipe M.
2.918/06/2024Edição da seção de Supervisão de AdequaçõesCássio ReisFelipe M.
3.015/07/2024Revisão de pontos desatualizadosCássio ReisFelipe M.
3.109/12/2024Revisão de pontos desatualizadosCássio ReisFelipe M.