Repositório para o projeto de extensão da disciplina EXA 844 Programação para redes da Universidade Estadual de Feira de Santana (UEFS)
O projeto consiste no desenvolvimento de um engenho de busca para resoluções da UEFS, o sistema deve permite o cadastro de resoluções, busca de resoluções por ano , tipo, texto e etc.
O projeto é dividido em quatro módulos individuais são eles: gerenciamento de usuários ,cadastro de resoluções ,armazenamento de dados e busca, módulo de extração de dados, a fim de que os módulos fossem desenvolvidos independentes um dos outros foi estabelecido que a comunicação entre módulos seria feita através de APIs construídas junto aos módulos.
O módulo de gerenciamento de usuários é responsável pelo cadastro e controle de usuários, existem dois tipos de usuários: administrador e usuário, Administradores tem a função do controle de usuários no sistema enquanto usuários podem cadastrar resoluções e alterar seus dados cadastrais.
Permissões do Administrador:
- Cadastrar/Remover usuários
- Alterar senha dos usuários
- Listar usuários
Permissões do usuário:
- Cadastrar resoluções (permissão)
- Alterar email e senha
Funcionalidades do sistema:
- Gerar Token de autenticação do usuário
- Verificar login do usuário
- Informação de cadastro de usuário: nome , email e senha
- Atualizar log de ações no sistema
Telas do sistema
O módulo de gerenciamento de usúarios deve implementar 4 telas
- Login
- Cadastro de usuario
- Dados do usuario
- Log do sistema
O módulo de extração de dados é responsável pela extração dos dados das resoluções, o sistema acessa as resoluções em formato pdf faz a extração de dados e armazena no esquema estruturado definido para o projeto, algumas resoluções vão ser pdfs de documentos digitalizados sendo necessário utilizar Optical Character Recognition (OCR) para extrair os dados, o sistema deve gerar um json( no formato definido pelo projeto) para atender as requisições feitas na API construída.
Funcionalidades do sistema:
- Recebe uma requisição do cadastro de resoluções que possui o link para um pdf baixa o pdf,faz a extração dos dados, formato do json recebido é esquema_requisicao_para_ocr.
- Função definida: recebe como parâmetro um arquivo pdf e retorna um json de resposta com os dados do pdf.
- O formato do json de resposta segue o padrão definido no arquivo: esquema_dados_modulo_extracao na pasta modelos.
Na imagem abaixo é o mostrado recorte de uma resolução e são destacados os dados que devem ser extraídos dos documentos com exceção do reitor que pode ser encontrado ao final do documento.
O módulo de cadastro permite que os usuários com permissão possam cadastrar novas resoluções em formato zip informando ano e tipo da resolução no sistema, para ter acesso ao cadastro o usuário vai ter de realizar o login e autenticar sua sessão, as resoluções cadastradas devem estar disponíveis para acesso em formato pdf através de um link, ao cadastrar novas resoluções o sistema envia os links para o módulo OCR recebe os dados extraidos e envia para serem armazenados no banco de dados.
Funcionalidades do sistema:
- Realizar login do usuário, faz uma requisição ao sistema de gerenciamento de usuário e recebe como resposta um token informando a sessão autenticada e as permissões do usuário.
- Cadastro de resoluções em arquivo compactado (formato zip) informando o ano e tipo(CONSEP ou CONSU).
- Extrair o arquivo o zip e separar as resoluções por tipo e ano
- Ao cadastrar um zip de resolução o sistema de cadastro deve enviar uma mensagem para o gerenciamento de usuario informando o usúario e timestamp da aço
- Disponibilizar acesso as resoluções em formato pdf com link de acesso(sugestão google drive)
- Enviar requisições ao módulo OCR passando o link para pdf, utilizar json no formato esquema_requisicao_para_ocr
- Enviar json de resoluções extraidas para o módulo de armazenamento cadastrar a nova resolução, usar json no formato esquema_store_banco
Telas do sistema
O módulo de cadasto deve implementar 3 telas
- Login
- Cadastro de resoluçao
- Tela de busca
Implementa o banco de dados do sistema onde os dados são indexados e podem ser recuperados nas consultas ao banco, o esquema de dados e tipo de banco: relacional, não relacional e outros fica a cargo da equipe.
Funcionalidades:
- Recebe uma requisição json esquema_store_banco. e armazena no banco de dados
- Resoluções já existentes no banco não devem ser cadastradas.
- O sistema deve indexar os dados.
- Deve permitir consulta dos dados, vai receber um json com dados chave para consulta e realizar a query correspondente.
- json deve ter os seguintes campos: keywords, from(data de início), to (data final)
- A requisição com os parametros de busca segue o formato esquema_parametros_busca
- Deve retornar como resposta para uma requisição recebida um json com dados no formato esquema_resposta_busca_bd
exemplo de uma requisição de busca para o sistema de armazenamento, ao receber uma requisição com o json no modelo abaixo:
{
"palavras_chave":"engenharia de computação graduação CONSEP",
"data_inicio":"",
"data_final":"2018"
}
Usando o algoritimo de busca implementado o sistema de armazenamento deve devolver um json com as resoluções que correspondem a busca, exemplo de resposta abaixo:
{
"ano":"2017",
"orgao":"CONSEP",
"descricao":"alteração do curriculo do curso ...... reforma",
"numero":"004/2017",
"link":"https://salvePdfs.com.br/store/cadastro-modulo/pdf1.pdf"
}