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ão | Data | Descrição | Autor | Revisor |
|---|---|---|---|---|
1.0 | 30/01/2024 | Criação do documento | Felipe M. | - |
1.1 | 31/01/2024 | Adição de situação do projeto | Felipe M. | - |
1.2 | 01/02/2024 | Adição de situação do projeto | Felipe M. | - |
1.3 | 08/02/2024 | Edição do funcionamento atual do projeto | Felipe M. | Cássio Reis |
1.4 | 15/02/2024 | Edição do funcionamento atual do projeto | Felipe M. | Cássio Reis |
1.5 | 16/02/2024 | Edição e adição da seção "Futuro da aplicação" | Felipe M. | Cássio Reis |
1.6 | 19/02/2024 | Edição e adição na seção "Futuro da aplicação" | Felipe M. | Cássio Reis |
1.7 | 20/02/2024 | Edição e adição na seção "Futuro da aplicação" | Felipe M. | Cássio Reis |
1.8 | 21/02/2024 | Edição da seção "Futuro da aplicação" | Felipe M. | Cássio Reis |
1.9 | 23/02/2024 | Revisão do nome da aplicação | Cássio Reis | Felipe M. |
2.0 | 27/02/2024 | Edição do funcionamento atual do projeto | Cássio Reis | Felipe M. |
2.1 | 29/02/2024 | Edição do funcionamento atual do projeto | Felipe M. | Cássio Reis |
2.2 | 05/03/2024 | Edição do gráfico de adequação | Felipe M. | Cássio Reis |
2.3 | 07/03/2024 | Edição da seção "Funcionamento Atual" | Cássio Reis | Felipe M. |
2.4 | 08/03/2024 | Edição de "Funcionamento Atual" e "Futuro da Aplicação" | Cássio Reis | Felipe M. |
2.5 | 11/03/2024 | Edição da seção "Funcionamento Atual" | Cássio Reis | Felipe M. |
2.5 | 19/03/2024 | Atualização de informações antigas | Felipe M. | Cássio Reis |
2.6 | 21/03/2024 | Edições para brevidade | Felipe M. | Cássio Reis |
2.7 | 22/03/2024 | Adição da subseção de Refatoração | Felipe M. | Cássio Reis |
2.7 | 03/04/2024 | Adição da subseção de Integração com Banco de Dados | Cássio Reis | Felipe M. |
2.8 | 10/05/2024 | Adição da seção de Supervisão de Adequações | Cássio Reis | Felipe M. |
2.9 | 18/06/2024 | Edição da seção de Supervisão de Adequações | Cássio Reis | Felipe M. |
3.0 | 15/07/2024 | Revisão de pontos desatualizados | Cássio Reis | Felipe M. |
3.1 | 09/12/2024 | Revisão de pontos desatualizados | Cássio Reis | Felipe M. |