Aplicação mobile para auxiliar conselheiros na fiscalização da merenda escolar das escolas de sua região, desde planejar uma visita até a consolidação dos dados.
Eu, como conselheiro, desejo consultar uma reunião marcada para saber suas informações.
Tasks:
Ao clicar no botão da sideBar "Notificações" será aberta uma tela com dois botões, a tela criada nessa história deverá ser aberta ao clicar no botão "Convites de Reuniões", que será criado na História #95 ;
Deve-se seguir o modelo da tela de Notificações referentes a Visitas feita na História #95;
Só devem aparecer as notificações na tela correspondentes a reuniões que ainda estão pra acontecer;
Exemplo: Hoje é dia 12/04/17. Reuniões para até o dia 11/04/17 devem aparecer, depois disso, não aparecem mais.
Deve ser possível abrir a localização da reunião no maps, assim como acontece nas informações da escola;
Deve-se ter um botão (+ Informações) para cada reunião para acessar as informações completas da reunião e os convidados para esta reunião em questão;
Eu, como desenvolvedor, desejo organizar as rotas do aplicativo para que o fluxo fique correto.
Sobrescrever o método de hardware Back do Android, de maneira que nas telas que são as primeiras folhas (as primeiras telas a partir da Main), o botão chame a função Actions.popTo('mainScreen');
Sobrescrever a chamada de função do botão de Back que fica no canto superior esquerdo das telas, para que, nas telas que são as primeiras folhas a partir da Main, o botão chame a função Actions.popTo('mainScreen');
Estudar e Aplicar solução a respeito do Actions.pop, para que, onde for necessário, a volta para a página na pilha seja feita de modo que ela seja renderizada novamente (Sugestões, verificar types nas routes, ou Actions.refresh que possa solucionar o problema - https://github.com/aksonov/react-native-router-flux/blob/master/README2.md);
Verificar se existem fluxos no aplicação de resultem em loops não tratados por essas implementações anteriores;
Eu, como desenvolvedor, desejo dar um feedback ao usuário para informá-lo do resultado obtido em ações tomadas por ele.
Tasks:
Verificar todos os locais que necessitam de interação com o usuário;
Dar feedback ao usuário em relação as operações que ele realiza, como: cadastro com sucesso ou não, pesquisa que não retorna resultados, alteração do perfil, login incorreto, campos de pesquisa em branco que devem ser preenchidos com valores padrões etc.
Verificar personalização do Alert onde for necessário usar;
Eu, como presidente, desejo desativar conselheiros da aplicação para remover os conselheiros que não devem mais estar associados ao software.
Tasks:
Ao clicar no botão de desvincular Conselheiro, o perfil da nossa aplicação deve ser desassociado da conta da Nuvem do conselheiro, e ele deve desaparecer da lista de conselheiros do CAE;
Deve aparecer uma mensagem de confirmação na tela: "Você deseja realmente desassociar esse Conselheiro da Aplicação?";
* Ao clicar em Sim deve aparecer uma confirmação na tela caso o conselheiro seja desassociado com sucesso;
* Caso dê algum erro ao desassociar o conselheiro, o usuário também deve ser informado;
Para realizar essas ações, será usado o token do usuário dono da aplicação na Nuvem, logo deve ser autenticado no código para que o token seja obtido. Contudo, os dados de e-mail e senha do usuário dono da aplicação na Nuvem não podem estar armazenados diretamente no código, pois todos terão acesso, e isso é perigoso, logo deve-se fazer de uma forma que esses dados sejam protegidos de acessos indevidos;
O conselheiro deve ser removido do Grupo do CAE na Nuvem;
Testar.
OBS: * essas tasks devem seguir o modelo de feedback utilizado na #45.
Eu, como conselheiro, desejo adicionar a escola ao agendamento de visitas para informar o local da fiscalização.
Ao clicar no botão de encontrar escola, na tela de agendar visita, deve-se ir para a tela de pesquisar escolas;
Ao clicar em uma escola, se a região dela for correspondente a região de atuação do CAE do conselheiro, deve aparecer além das informações da escola, um botão para fazer o agendamento da visita;
Ao clicar nesse botão, o conselheiro deve voltar a tela de agendamento para continuar a realizar a visita com os dados já preenchidos anteriormente;
Quando o conselheiro voltar para a tela de visita com a escola escolhida, deve-se mostrar os dados principais da escola na tela de Agendamento;
Ao completar o Agendamento, o código da escola escolhida deve ser enviado para o armazenamento na estrutura de postagem da Nuvem Cívica, a fim de identificar qual escola é o alvo da fiscalização agendada.
2 Resolução/CD/FNDE nº 26, de 17 de junho de 2013 - Dispõe sobre o atendimento da alimentação escolar aos alunos da educação básica no âmbito do Programa Nacional de Alimentação Escolar –PNAE.
4 Lei nº 12.982, de 28 de maio de 2014 - Altera a Lei nº 11.947, de 16 de junho de 2009, para determinar o provimento de alimentação escolar adequada aos alunos portadores de estado ou de condição de saúde específica.
5 LEI Nº 11.947, DE 16 DE JUNHO DE 2009. - Dispõe sobre o atendimento da alimentação escolar e do Programa Dinheiro Direto na Escola aos alunos da educação básica;
Acho que no final dessa página (Da legislação) pode constar a observação: Para consultar toda a legislação e manuais do PNAE consulte o site do FNDE: http://www.fnde.gov.br/programas/pnae
Eu, como conselheiro, desejo preencher todos os checklists para que os relatórios da fiscalização possam ser gerados posteriormente em sua completude.
Tasks:
Deve-se corrigir o relatório já criado para que siga as regras:
Caso o conselheiro não marque a opção, ela deve ser considerada como não fiscalizada (Mesmo que tenha aberto ou não o relatório);
As opções possíveis de marcação no relatório devem ser armazenadas na store da melhor forma possível e devem aparecer para o usuário poder marcá-las, também, dá melhor forma (Pode-se usar como base o Material Design);
Criar tela para listar os relatórios possíveis de serem feitos;
Os relatórios devem ser listados em forma de botões com seus respectivos títulos, onde o conselheiro pode navegar de um relatório a outro sem perder os dados armazenados;
Criar todos os 5 checklists restantes para que o conselheiro possa respondê-los;
Eu, como desenvolvedor, desejo transferir o cadastro do usuário para Nuvem Cívica para que o Tribunal de Contas de União tenha um controle dos conselheiros cadastrados.
Tasks:
Estudar como o usuário é tratado na Nuvem Cívica;
Cadastrar usuários na Nuvem Cívica pelo login do aplicativo;
Verificar se há a necessidade de passar o usuário pela API;
Verificar como ficam os atributos extras na Nuvem Cívica (CAE, CAE_Type, Presidente/Conselheiro, etc), observando a estrutura de perfil;
Modificar a estrutura do React para utilizar a Nuvem ao invés da API (Registro, Login, Editar Dados);
Eu, como conselheiro, desejo convidar outro(s) conselheiro(s) para realizarem à visita à escola comigo.
Tasks:
Deve-se abrir um Pop-Up com uma lista dos conselheiros do CAE do autor do agendamento (Caso o POP-Up fique muito complexo, verificar com o ProductOwner a criação de uma tela);
Cada conselheiro deve aparecer na lista de uma forma default e quando for selecionado de alguma forma pelo autor do agendamento, deve ficar marcado;
Quando todos os conselheiros convidados forem marcados na lista, o conselheiro - autor do agendamento - terá a opção de cancelar ou confirmar;
Após os conselheiros serem convidados, eles devem aparecer como uma lista na tela de Agendamento, para indicar quais foram escolhidos (Usar mesma estrutura de aparição dos dados da escola);
Ao enviar a postagem para ser salva com os dados dos convidados, deve-se armazenar o ID deles com uma variável booleana que indicará se o conselheiro convidado confirmou ou não a presença.
Ajustar o código da aparição do botão de gerenciar conselheiros para os presidentes na side Bar para evitar código duplicado;
Dar feedback quando o Login for mal sucedido;
Caso algum campo de busca da escola esteja em branco, mandar escrever que "Não foi encontrado na base de dados.", e não deixar em branco;
Desabilitar a opção do menu lateral que pode ser aberto com o gesto de deslizar do canto direito para o esquerdo;
Verificar no "Gerenciar Conselheiro" se o usuário que vai aparecer na lista é o presidente ou não, no caso de ser o presidente, ele não deve aparecer;
Verificar quais CAEs devem aparecer no cadastro no caso do DF;
Padronizar validações para campos em arquivos reutilizáveis;
Usar "Promise" para esperar a requisição dos conselheiros na tela de agendamento, travando-a com o "Spin" enquanto a requisição e o ordenação por ordem alfabética não é finalizada @Rdlenke ;
Na tela de Agendar Reunião, a localização escolhida deve aparecer como um link que abre o maps do celular do conselheiro na localização escolhida @Miguel-Alves ;
No cadastro, no campo de escolher a UF, não pode começar com uma UF padrão, deve-se começar com o campo vazio e um placeholder: "Escolha a UF do seu CAE" @LucasLermen ;
Utilizar o Master Token para criar novos grupos ao invés do Token do usuário;
Mudar as asyncs para um modelo que esperem a execução das demais funções @Rdlenke@AllanNobre ;
(Pós-Release) Ajustar styles para tornar o layout da aplicação mais amigável e padronizado;
Ajustar validações na tela de cadastro para aparecer de forma mais amigável @Rdlenke@AllanNobre;
Verificar todas as telas que tem campos de preencher dados para limpar os dados dos campos preenchidos caso o usuário saia da tela com o botão de retornar quando for necessário - Deve-se verificar a necessidade de alertá-lo que irá perder os dados ao voltar a tela anterior @AllanNobre@LucasPenido ;
Verificar acessos diretos a store devido a problemas com acesso de funções pelas props @LucasPenido@AllanNobre;
Quando um relatório é concluído e marcado com o check de concluído, caso algo seja desmarcado, o relatório ainda permanece com o check de concluído, isso deve ser corrigido @AllanNobre@LucasPenido ;
Ao sair do fluxo de Agendamento da Visita, os dados devem ser tratados de forma que quando abra a tela novamente para agendar alguma visita, ela esteja limpa @AllanNobre@LucasPenido ;
(Pós-Release) Transformar blocos de estilo em componentes;
Utilizar Promise para fazer com que as telas que dependem de respostas assíncronas esperem o carregamento completo para visualizar a informação (Colocar spinning enquanto aguarda o carregamento);
Verificar telas que não renderizam novamente corretamente após ações do usuário (Gerenciar Conselheiros) @LucasPenido ;
Colocar frases para indicar se uma busca não gerou resultados, como: lista de convidar conselheiros, etc;
Refatorar layout da tela de encontrar localização para Reunião @LucasPenido ;
Resetar store ao sair da aplicação e resetar os dados da store correspondente a telas que devem perder os dados ao sair destas @LucasPenido@AllanNobre ;
Aumentar a cobertura dos testes.
Utilizar o pointerEvents nas Views em telas onde há requisições para que o usuário não interaja com a tela enquanto algo estiver carregando. @LucasPenido@AllanNobre;
Eu, como conselheiro, desejo agendar uma reunião para realizar decisões acerca do CAE.
Tasks:
Criar botão na sideBar;
Deve seguir a mesma estrutura do Agendamento de Visita;
Em vez de escolher uma escola, deve-se escolher uma localização no Maps e armazenar a latitude longitude do local, ou o link referente ao acesso do local (Tomar de exemplo o link que abre o maps no schoolInformation);
Caso nada dê certo ao pegar a localização, pode ser um campos de texto para informação em linguagem natural do endereço da Reunião;
Deve-se poder convidar somente os conselheiros do CAE do próprio conselheiro;
Deve-se criar um campo opcional de Descrição da Reunião;
As opções serão: Escolher localização, Data, Hora, Convidar conselheiros, Descrição da Reunião.
A reunião só pode ser marcada caso os campos Escolher localização, Data, Hora e Convidar conselheiros estejam preenchidos;
Eu, como conselheiro, desejo convidar um agente da vigilância sanitária para auxiliar na realização da fiscalização em uma escola.
Estudar como enviar emails utilizando o React Native. Pode ser dentro do aplicativo, ou um aplicativo de e-mail do celular do conselheiro.
Abrir e-mail com um texto padrão para que o agente seja convidado.
Algo como "Solicito a presença do agente X para a realização da fiscalização no dia D, hora H, na Escola X, localizada no endereço 123. Link do maps, assinatura do conselheiro, etc".
É importante verificar se os CAEs pedem um agente aleatório, se mandam e-mail pro órgão como um todo, quais informações ele precisa informar - (PO deve mandar e-mail para a Marcela perguntando sobre como ou o que deve ter nesse e-mail além do padrão, e pra quem deve ser enviado, se terá algum e-mail padrão de agente ou se será aleatório, ou se terá um dropDown de emails para mandar).
Permitir que o usuário só convide um agente após selecionar a escola.
Enviar o e-mail quando o agendamento for concluído (Caso seja muito complexo, informar durante a Sprint para que soluções sejam encontradas).
Quando os dados, o corpo do e-mail e o e-mail para o qual deve ser enviado for definido e confirmado, devem aparecer na tela de Agendamento com a mesma estrutura usada para mostrar os dados da escola.