Projetos

1. Extração e Análise de Dados dos Docentes da Unesa da Plataforma Lattes

Integrantes

Nome Função
André Eppinghaus Coordenador
George Mendes Silva de Oliveira Desenvolvedor
Maria Vitória Quirino Batista Desenvolvedora
Matheus da Silva Ferreira Desenvolvedor
Alexia de Souza Martins Desenvolvedora

DIAGNÓSTICO E TEORIZAÇÃO

Identificação das partes interessadas e parceiros

O projeto do LTD realizado no período 2032.2 foi desenvolvido para atender a Coordenadora Nacional de Pesquisa, Extensão e Internacionalização, localizada na Diretoria de Ensino Av. das Américas 4200, Bloco 5 - 2º andar. Centro Empresarial Barra Shopping – Barra da Tijuca Rio de Janeiro – RJ - CEP 22.640-102 com a parte interessada a Dra. Larissa Clare Pochmann da Silva.

Problemática e/ou problemas identificados

No projeto anterior, o Setor Nacional de Pesquisa, Extensão e internacionalização da Universidade possui uma equipe reduzida e necessita analisar a produtividade de todos os docentes para a produção dos índices de produtividade: IPPGR3 e IPEI. Porém, mesmo a instituição mantendo um contrato com uma empresa para a extração dos dados dos docentes a partir da Plataforma Lattes do CNPq, os dados são gerados em planilhas. Além disso, as planilhas são apresentadas em um formato não-estruturado (Figura 1).

Figura 1 - Planilha básica da produção dos docentes da universidade

O primeiro projeto do LTD, realizado no período anterior, foi concluído com sucesso resultando na criação de scripts na linguagem Phyton para importação e geração de novas planilhas com o cálculo dos índices de produtividade.

Neste período a Dra. Larissa Clare Pochmann da Silva, procurou a equipe do LTD para melhorar o processo de importação de dados. Foi pedido que os dados dos professores sejam importados diretamente do servidor do CNPQ e sejam disponibilizados no formato CSV na mesma estrutura do arquivo de leitura do projeto anterior.

Justificativa

Diante do problema apresentado o campus Nova América organizou uma equipe LTD com ênfase em software para que os alunos dos cursos de Computação, Sistemas de Informação e Análise e Desenvolvimento de Sistemas pudessem trabalhar para automatizar o processo de extração de dados da Plataforma Lattes do CNPq. O grupo de alunos foi dividido em equipes como documentaçao e desenvolvimento de códigos simulando o trabalho em uma empresa do setor de software.

Objetivos/resultados/efeitos a serem alcançados (em relação ao problema identificado e sob a perspectiva dos públicos envolvidos)

  • Efetuar a extração, transformação e carga dos dados;

Referencial teórico (subsídio teórico para propositura de ações da extensão)

O processo de Extração, Transformação e Carga (ETL) de dados (Navathe, 2005) dos docentes em uma universidade desempenha um papel crucial na análise e aprimoramento da produtividade acadêmica. O referencial teórico para este projeto de extensão busca contextualizar a importância dessa abordagem, destacando as bases conceituais e metodológicas que sustentam a eficiência do processo.

A produtividade acadêmica é uma dimensão vital para a avaliação e o aprimoramento contínuo das instituições de ensino superior. A coleta e análise de dados (Han, 2019), (Lopes, 2022) dos docentes são fundamentais para compreender o desempenho acadêmico, identificar padrões e oportunidades de melhoria. O processo de Extração, Transformação e Carga dos dados (ETL), como abordagem metodológica, permite a integração de dados de diferentes fontes, proporcionando uma visão abrangente e coesa do ambiente acadêmico.

A Extração refere-se à coleta de dados brutos de diversas fontes, como sistemas de gerenciamento acadêmico, plataformas de pesquisa e repositórios institucionais. A Transformação envolve a limpeza, padronização e enriquecimento desses dados, garantindo a consistência e a qualidade necessárias para análises precisas. A Carga consiste na inserção dos dados processados em um repositório central, preparando-os para análises e visualizações. No contexto da produtividade acadêmica, os índices são indicadores-chave que fornecem insights sobre a quantidade e a qualidade das atividades acadêmicas. Índices como número de publicações, participação em eventos científicos e orientações de alunos são cruciais para avaliar o impacto e a contribuição de cada docente. A aplicação do ETL a esses dados permite uma avaliação holística e dinâmica da produtividade.

No ambiente acadêmico em constante evolução, a adoção de tecnologias para aprimorar a gestão e análise de dados é imperativa. O referencial teórico deste projeto baseia-se na premissa de que o ETL, aliado à construção de um dashboard, oferece uma abordagem robusta e eficiente para a compreensão e aprimoramento da produtividade acadêmica. Ao integrar teoria e prática, este projeto visa contribuir significativamente para a excelência acadêmica e a tomada de decisões informadas na universidade.

PLANEJAMENTO E DESENVOLVIMENTO DO PROJETO

Casos de Uso

Descrição do caso de uso

Didagrama de atividades

Código fonte do programa em Python


#!pip install xmltodict
#!pip install python-dotenv
#!pip install pandas
#!pip install requests
#!pip install openpyxl


import json
import pandas as pd
import xmltodict
import requests
import os
from datetime import date, datetime
import time


time_in_mil = round(time.time()*1000)


base_file = "./base_professores_lattes.xlsx"
log_file = f"./log_{time_in_mil}.json"
offset_file = "./offset.txt"


base_professores_original = pd.read_excel(base_file)
base_professores = base_professores_original
base_professores['ID_LATTES'] = base_professores['URL_LATTES'].str.split('/').str[-1]
base_professores['ID_LATTES_FINAL'] = base_professores['ID_LATTES']
base_professores.set_index('ID_LATTES', inplace=True)


def get_offset():
    f = open(offset_file, "r").readline()
    return f

def set_offset(offset):
    try:
        with open(offset_file, 'w+') as f_offset:
            f_offset.write(offset)
            f_offset.close()
    except:
        print(f"Nao foi possivel escrever o offset para o ID {offset}")

def write_log(log_message):
    with open(log_file, 'a+') as outfile:
        json.dump(log_message, outfile)
        outfile.write(',\n')
        outfile.close()



def build_cv_payload(id_prof):
    payload = f"""<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://br.cnpq.cvlattes.extracaocv/wsdl">
    <soapenv:Header/>
    <soapenv:Body>
        <wsdl:extrairItens>
            <!--Optional:-->
            <request>
                <!--Optional:-->
                <parametros>
                <!--Optional:-->
                <anoInicio>2000</anoInicio>
                <!--Optional:-->
                <anoTermino>2023</anoTermino>
                <!--Optional:-->
                <idCNPq>{id_prof}</idCNPq>
                <!--Zero or more repetitions:-->
                <listaIdModuloItem>FORMACAO-ACADEMICA-TITULACAO</listaIdModuloItem>
                </parametros>
            </request>
        </wsdl:extrairItens>
    </soapenv:Body>
    </soapenv:Envelope>"""
    
    return payload


def build_date_payload(id_prof):
    payload = f"""
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.servico.repositorio.cnpq.br/">
    <soapenv:Header/>
    <soapenv:Body>
        <ws:getDataAtualizacaoCV>
            <id>{id_prof}</id>
        </ws:getDataAtualizacaoCV>
    </soapenv:Body>
    </soapenv:Envelope>
    """

    return payload


def make_CVapi_call(payload, cv_id):
    headers = {
    'Content-Type': 'text/xml; charset=utf-8'
    }
    url= "http://servicosweb.cnpq.br/wsmodulocv/WSExtracaoCVLattesService/WSExtracaoCVLattesImpl?wsdl"
    try:
        response = requests.request("POST", url, headers=headers, data=payload)
        return response
    except:
        return False


def make_DATEapi_call(payload, cv_id):
    url= "http://servicosweb.cnpq.br/srvcurriculo/WSCurriculo?wsdl"
    try:
        response = requests.request("POST", url, data=payload)
        return response
    except:
        return False


def clear_DATEapi_response(api_response, cv_id):
    try:
        obj = xmltodict.parse(api_response.text)
        dt = obj["env:Envelope"]["env:Body"]['ws:getDataAtualizacaoCVResponse']["return"].split(" ")[0]
        datetime_object = datetime.strptime(dt, '%d/%m/%Y').date()
        return datetime_object
    except:
        return False


def clear_CVapi_response(api_response, cv_id):
    try:
        clean_lines = api_response.text.split("<xml>")[1].split("</xml>")[0].replace("""&lt;?xml version="1.0" encoding="ISO-8859-1"?>""", "").replace("&lt;", "<")
        obj = xmltodict.parse(clean_lines)
        status = get_grad_level(obj, cv_id)
    except:
        return False, False
    
    return status, clean_lines


def get_grad_level(json_obj, cv_id):
    grad_levels = ["GRADUACAO", "ESPECIALIZACAO", "MESTRADO", "DOUTORADO", "POS-DOUTORADO"]
    status_acad = {"id": cv_id, "dt_atualizacao": str(date.today())}

    for grad in grad_levels:
        try:
            temp = json_obj["CURRICULO-VITAE"]["DADOS-GERAIS"]["FORMACAO-ACADEMICA-TITULACAO"][grad]["@STATUS-DO-CURSO"]
            if temp == "CONCLUIDO":
                status_acad[grad] = 1
            else:
                status_acad[grad] = 0
        except:
            try:
                temp = json_obj["CURRICULO-VITAE"]["DADOS-GERAIS"]["FORMACAO-ACADEMICA-TITULACAO"][grad][0]["@STATUS-DO-CURSO"]
                if temp == "CONCLUIDO":
                    status_acad[grad] = 1
                else:
                    status_acad[grad] = 0
            except:
                status_acad[grad] = 0
    
    return status_acad


def start_processing(df, cv_id, has_grad):
    print(f'Processando ID: {cv_id}')

    payload = build_cv_payload(cv_id)
    response = make_CVapi_call(payload, cv_id)
    status_acad, plain_xml = clear_CVapi_response(response, cv_id)

    if status_acad == False and has_grad == -1:
        status = {'id': cv_id, 'dt_atualizacao': str(date.today()), 'GRADUACAO': -1, 'ESPECIALIZACAO': -1, 'MESTRADO': -1, 'DOUTORADO': -1, 'POS-DOUTORADO': -1}
    elif status_acad == False and has_grad != -1:
        return False # Não executar update do DF pra esse cenário
    else:
        status = status_acad

    df.loc[[status["id"]], ["GRADUACAO", "ESPECIALIZACAO", "MESTRADO", "DOUTORADO", "POS-DOUTORADO", "dt_atualizacao", "unparsed_xml"]] = [status['GRADUACAO'], status['ESPECIALIZACAO'], status['MESTRADO'], status['DOUTORADO'], status['POS-DOUTORADO'], status["dt_atualizacao"], plain_xml]
    return df


offset = get_offset()
base_execucao = base_professores.loc[offset:, ['ID_LATTES_FINAL', 'dt_atualizacao', 'GRADUACAO']]
len(base_execucao)


for index, row in base_execucao.iterrows():
    ID = row['ID_LATTES_FINAL']
    base_date = row['dt_atualizacao']
    has_grad = row['GRADUACAO']
    set_offset(ID)

    if has_grad == 0 or has_grad == 1:
        payload = build_date_payload(ID)
        response = make_DATEapi_call(payload, ID)
        dt_atualizacao_lattes = clear_DATEapi_response(response, ID) #objeto data

        if dt_atualizacao_lattes is False:
            continue

        base_date = datetime.strptime(base_date, '%Y-%m-%d').date() #Transforma base_date para objeto data

        if base_date < dt_atualizacao_lattes:
            start_processing(base_professores, ID, has_grad)
        else:
            continue

    else:
        has_grad = -1
        start_processing(base_professores, ID, has_grad)


final = base_professores.to_excel(f"base_professores_lattes_{time_in_mil}.xlsx")

2. Modelagem de dados para tabela de composição nutricional dos alimentos

Integrantes

Nome Função
André Eppinghaus Coordenador
Felippe Kamisaki Camilato Desenvolvedor
Sergio de Oliveira Marques Desenvolvedor
Adailton Lima Freire Desenvolvedor
Kaio Ramos da Silva Desenvolvedor
Jean Souza Marques de Oliveira Desenvolvedor
Bruna de Araujo Hara Desenvolvedora
Evilásio Gonçalo das Neves Neto Desenvolvedor

DIAGNÓSTICO E TEORIZAÇÃO

Identificação das partes interessadas e parceiros

Empresa CodeWorker LTDA, localizada no Rio de janeiro, com a parte interessada o CEO da empresa o sr. Vicente Calfo e o CTO da empresa o sr. André Eppinghaus.

Problemática e/ou problemas identificados

A empresa CodeWorker LTDA, possui uma equipe reduzida e necessita criar uma estrutura de dados, a partir dos dados extraídos da Tabela Brasileira de Composicao de Alimentos - TACO 4, e de outras tabelas relacionadas, com o intuito de construir uma base limpa e precisa para uso interno de seus aplicativos.

Justificativa

Diante do problema apresentado o campus Nova América organizou uma equipe LTD com ênfase em software para que os alunos dos cursos de Computação, Sistemas de Informação e Análise e Desenvolvimento de Sistemas pudessem trabalhar para modelar, extrair, tratar e construir um modelo de bando de dados relacional para atender o objetivo. O grupo de alunos foi dividido em equipes como documentação e desenvolvimento de códigos simulando o trabalho em uma empresa do setor de software.

Objetivos/resultados/efeitos a serem alcançados (em relação ao problema identificado e sob a perspectiva dos públicos envolvidos)

  • Efetuar a extração, transformação e carga dos dados;

Referencial teórico (subsídio teórico para propositura de ações da extensão)

O processo de Extração, Transformação e Carga (ETL) de dados (Navathe, 2005) dos docentes em uma universidade desempenha um papel crucial na análise e aprimoramento da produtividade acadêmica. O referencial teórico para este projeto de extensão busca contextualizar a importância dessa abordagem, destacando as bases conceituais e metodológicas que sustentam a eficiência do processo.

A produtividade acadêmica é uma dimensão vital para a avaliação e o aprimoramento contínuo das instituições de ensino superior. A coleta e análise de dados (Han, 2019), (Lopes, 2022) dos docentes são fundamentais para compreender o desempenho acadêmico, identificar padrões e oportunidades de melhoria. O processo de Extração, Transformação e Carga dos dados (ETL), como abordagem metodológica, permite a integração de dados de diferentes fontes, proporcionando uma visão abrangente e coesa do ambiente acadêmico.

A Extração refere-se à coleta de dados brutos de diversas fontes, como sistemas de gerenciamento acadêmico, plataformas de pesquisa e repositórios institucionais. A Transformação envolve a limpeza, padronização e enriquecimento desses dados, garantindo a consistência e a qualidade necessárias para análises precisas. A Carga consiste na inserção dos dados processados em um repositório central, preparando-os para análises e visualizações. No contexto da produtividade acadêmica, os índices são indicadores-chave que fornecem insights sobre a quantidade e a qualidade das atividades acadêmicas. Índices como número de publicações, participação em eventos científicos e orientações de alunos são cruciais para avaliar o impacto e a contribuição de cada docente. A aplicação do ETL a esses dados permite uma avaliação holística e dinâmica da produtividade.

No ambiente acadêmico em constante evolução, a adoção de tecnologias para aprimorar a gestão e análise de dados é imperativa. O referencial teórico deste projeto baseia-se na premissa de que o ETL, aliado à construção de um dashboard, oferece uma abordagem robusta e eficiente para a compreensão e aprimoramento da produtividade acadêmica. Ao integrar teoria e prática, este projeto visa contribuir significativamente para a excelência acadêmica e a tomada de decisões informadas na universidade.

PLANEJAMENTO E DESENVOLVIMENTO DO PROJETO

Casos de Uso

Descrição do caso de uso

Diagrama de atividades

3. Criação de uma biblioteca (Pyhton e C) para Arduino utilizando equipamentos do LTD

Integrantes

Nome Função
André Eppinghaus Coordenador
Yuri Guerra Rodrigues Desenvolvedor
Rodrigo Dias Martins Desenvolvedor
Lucas dos Santos Missiba Desenvolvedor
Michel Hermínio do Nascimento Desenvolvedor
Leonardo Santos de Carvalho Desenvolvedor
Yan Sacramento De Gouveia Desenvolvedor
Aline Silva Desenvolvedora
Guilherme Pacheco Vivone Martins Desenvolvedor

DIAGNÓSTICO E TEORIZAÇÃO

Identificação das partes interessadas e parceiros

O coordenador Rodrigo Augusto dos cursos de Computação, Sistemas de Informação e Análise e Desenvolvimento de Sistemas da Univesidade Estácio de Sá (UNESA), campus Nova América, recebeu uma doação de uma Plataforma de prototipagem de hardware com ESP32.

Problemática e/ou problemas identificados

Com o intuito de facilitar o acesso dos alunos ao protótipo, o coordenador Rodrigo solicitou ao LTD a criação de uma Interface de programação de aplicações (API) nas linguagens Python e C++.

Justificativa

Diante do problema apresentado o campus Nova América organizou uma equipe LTD com ênfase em software para que os alunos dos cursos de Computação, Sistemas de Informação e Análise e Desenvolvimento de Sistemas pudessem trabalhar para modelar, extrair, tratar e construir uma API para atender o objetivo. O grupo de alunos foi dividido em equipes como documentação e desenvolvimento de códigos simulando o trabalho em uma empresa do setor de software.

Objetivos/resultados/efeitos a serem alcançados (em relação ao problema identificado e sob a perspectiva dos públicos envolvidos)

  • Pesquisar os sensores;
  • Criar códigos isolados nas linguagens Python e em C++;
  • Criar uma classe para cada linguagem;
  • Disponiliblizar no github.

Referencial teórico (subsídio teórico para propositura de ações da extensão)

O processo de Extração, Transformação e Carga (ETL) de dados (Navathe, 2005) dos docentes em uma universidade desempenha um papel crucial na análise e aprimoramento da produtividade acadêmica. O referencial teórico para este projeto de extensão busca contextualizar a importância dessa abordagem, destacando as bases conceituais e metodológicas que sustentam a eficiência do processo.

A produtividade acadêmica é uma dimensão vital para a avaliação e o aprimoramento contínuo das instituições de ensino superior. A coleta e análise de dados (Han, 2019), (Lopes, 2022) dos docentes são fundamentais para compreender o desempenho acadêmico, identificar padrões e oportunidades de melhoria. O processo de Extração, Transformação e Carga dos dados (ETL), como abordagem metodológica, permite a integração de dados de diferentes fontes, proporcionando uma visão abrangente e coesa do ambiente acadêmico.

A Extração refere-se à coleta de dados brutos de diversas fontes, como sistemas de gerenciamento acadêmico, plataformas de pesquisa e repositórios institucionais. A Transformação envolve a limpeza, padronização e enriquecimento desses dados, garantindo a consistência e a qualidade necessárias para análises precisas. A Carga consiste na inserção dos dados processados em um repositório central, preparando-os para análises e visualizações. No contexto da produtividade acadêmica, os índices são indicadores-chave que fornecem insights sobre a quantidade e a qualidade das atividades acadêmicas. Índices como número de publicações, participação em eventos científicos e orientações de alunos são cruciais para avaliar o impacto e a contribuição de cada docente. A aplicação do ETL a esses dados permite uma avaliação holística e dinâmica da produtividade.

No ambiente acadêmico em constante evolução, a adoção de tecnologias para aprimorar a gestão e análise de dados é imperativa. O referencial teórico deste projeto baseia-se na premissa de que o ETL, aliado à construção de um dashboard, oferece uma abordagem robusta e eficiente para a compreensão e aprimoramento da produtividade acadêmica. Ao integrar teoria e prática, este projeto visa contribuir significativamente para a excelência acadêmica e a tomada de decisões informadas na universidade.

PLANEJAMENTO E DESENVOLVIMENTO DO PROJETO

Casos de Uso

em construção

Descrição do caso de uso

em construção

Didagrama de atividades

em construção