Ficha daw-pri-2021-especial

Avaliação: Desenvolvimento de Aplicações Web e Processamento e Representação de Informação

Desenvolvimento de Aplicações Web (MIEI) e Processamento e Representação de Informação (MIEI)

O objectivo principal desta ficha é testar os conhecimentos obtidos durante as aulas no desenvolvimento de aplicações Web e outras tarefas afins.

Os resultados finais deverão ser enviados ao docente da seguinte forma:

  • Enviar por email para: jcr@di.uminho.pt
  • Colocar no subject/assunto: DWEB2020::ExameEspecial::Axxxxx ou PRI2020::ExameEspecial::Axxxxx
  • Em que Axxxxx corresponde ao número do aluno;
  • Enviar ao docente um link do github para um repositório novo criado especificamente para o exame com o seguinte conteúdo (esta preparação vale 1 valor do exame):
    • O repositório no GitHub deverá chamar-se, consoante o caso, "DAW2020-ExameEspecial" ou "PRI2020-ExameEspecial";
    • Dentro do repositório deverá haver um ficheiro, "PR.xml", contendo uma descrição de como fez a persistência de dados, do setup de bases de dados, respostas textuais pedidas, instruções de como executar as aplicações desenvolvidas, etc...
    • Dentro do repositório deverão existir duas pastas: "ex1", onde colocarão a aplicação desenvolvida para responder ao primeiro exercício e, "ex2", onde colocarão a aplicação desenvolvida para responder ao segundo exercício.

Os exercícios que envolvam criação de rotas serão testados com as rotas no enunciado, qualquer rota que seja diferente da pedida será avaliada com 0.

Recursos:

Recursos disponíveis para a realização da ficha:

Exercícios:

  1. Avaliação de alunos
  2. CLAV: Classificação e Avaliação da Informação Pública

Considere o dataset constituído pelo ficheiro JSON disponibilizado em cima, e com consiste num registo de indicadores de avaliação sobre uma turma de alunos.

Neste exercício, terás de:

  1. Criar uma BD em MongoDB com uma coleção, de nome "alunos", para onde importarás o conteúdo do dataset JSON disponibilizado;
  2. Criar um servidor nodejs que dê suporte à seguinte API de dados (note que não é necessário qualquer interface web):
    • GET /api/alunos - Devolve a lista dos alunos, ordenada alfabeticamente por nome, com os campos: idAluno, nome e curso;
    • GET /api/alunos/:id - Devolve a informação completa de um aluno (nesta rota, considere para id o campo idAluno);
    • GET /api/alunos?curso=X - Devolve apenas uma lista, ordenada alfabeticamente por nome, com os alunos do curso X;
    • GET /api/alunos/tpc - Devolve a lista de alunos (com idAluno, nome e curso), ordenada alfabeticamente por nome, e um quarto campo correspondente ao número de TPC realizados;
    • GET /api/alunos?groupBy=curso - Devolve a lista de cursos, ordenada alfabeticamente, e para cada um indica quantos alunos estão registados;
    • GET /api/alunos?groupBy=projeto - Devolve uma lista de notas registadas no projeto e para cada um indica o total de alunos que a obtiveram;
    • GET /api/alunos?groupBy=recurso - Devolve a lista de alunos, ordenada alfabeticamente por nome, que realizaram o exame de recurso: idAluno, nome, curso, recurso;
    • GET /api/alunos/avaliados - Devolve uma lista de alunos, ordenada alfabeticamente por nome, com o resultado final: idAluno, nome, curso e notaFinal, em que notaFinal poderá ser "R" ou um valor entre 10 e 20 calculado da seguinte forma:
      • Se a nota do Projeto for inferior a 8 o resultado é "R";
      • Se a o máximo das notas obtidas em exame for inferior a 8 o resultado é "R";
      • A nota final é calculada somando todos os resultados obtidos nos TPC, e somando a este resultado 40% da nota do projeto e 40% da nota máxima obtida em exame; se esta nota final for inferior a 10 o resultado é "R" caso contrário o resultado é a nota calculada.
      .

A CLAV é uma plataforma em desenvolvimento no DI/UM em parceria e sob encomenda da Direção Geral do Livro, Arquivos e Bibliotecas (DGLAB) que visa a classificação e a avaliação de toda a documentação circulante na administração pública portuguesa.

Uma das faces visíveis do projeto é o catálogo dos processos da administração pública portuguesa, designado por Lista Consolidada. Juntamente com este catálogo há outros: o catálogo de entidades, que contem as entidades da Administração Pública Portuguesa, o catálogo das tipologias, que contem a lista de agrupamentos de entidades, e o catálogo legislativo, que contem a lista de diplomas legislativos que regulam os processos.

Já se encontra disponível para consulta online: site oficial A respetiva API de dados e respetiva documentação encontra-se acessível em: API de dados .

Para user a API poderás usar a APIKEY disponibilizada , exemplo: https://clav-api.dglab.gov.pt/v2/tipologias?apikey=...

É sobre o catálogo legislativo que irás desenvolver este exercício.

A API de dados disponível contem entre outras as seguintes possibilidades:

  • GET http://clav-api.dglab.gov.pt/v2/legislacao - Devolve a lista dos diplomas legislativos com várias opções de configuração, consulte a interface swagger disponibilizada em cima para mais informações;
  • GET http://clav-api.dglab.gov.pt/v2/legislacao/{id} - Devolve a informação de um diploma com identificador igual a id;
  • GET http://clav-api.dglab.gov.pt/v2/legislacao/{id}/processos - Devolve a lista dos processos regulados pelo diploma com identificador id.

Desenvolve então as seguintes alíneas:

  1. Testa a API de dados com o Postman ou diretamente no link da API e dá resposta às seguintes questões:
    • Quantos Diplomas Legislativos estão catalogados? (pista: na API há uma rota que dá este número diretamente)
    • Quantos diplomas do tipo "Despacho" estão catalogados?
    • Que processos são regulados pelo diploma "Lei 28/2016"?
    • Que diplomas legislativos estão associados ao processo "c300.10.001"?

Depois deste "aquecimento", desenvolve uma aplicação em nodejs que permita navegar nesta estrutura de diplomas e respetiva informação:

  1. Na página inicial, para além de um título e outra informação de contexto, deverá aparecer a lista de diplomas (data, tipo, número e sumário);
  2. Ao clicar numa linha desta tabela o utilizador deve ser dirigido para a página do Diploma;
  3. Na página de cada diploma, deve ser mostrada a informação base do diploma (data, sumário, link, estado, entidades responsáveis pela sua publicação) e a lista de processos que regula;
  4. As entidades deverã ser links para a página oficial da entidade: http://clav.dglab.gov.pt/...;
  5. Os processos/classes deverão ser listados com os campos código e título e estes devem ser links para a página oficial do processo correspondente: http://clav.dglab.gov.pt/...
  6. Usa a tua imaginação e criatividade...