Giter Club home page Giter Club logo

2022-2-ez-docs's People

Contributors

brunoriibeiro avatar diogjunior100 avatar gitbmvb avatar igorpenhaa avatar lucasbergholz avatar rafaeln0bre avatar rochacarla avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

2022-2-ez-docs's Issues

Segunda Semana de Treinamentos em Python

Descrição

Utilizar semana para treinar mais recursos do Python e conhecer outras bibliotecas úteis, como o Pandas.

Tarefas

Critérios de Aceitação

  • Nível de perfil Checkio igual ou superior a 6.
  • Enviar arquivo de treinamento.

Métodos ágeis: Scrum

Descrição

Como Scrum Master, elaborar pesquisa sistemática sobre tópicos concernentes ao método ágil Scrum que demonstrem ser fundamentais para o bom desenvolvimento e aperfeiçoamento do projeto e da equipe.

Tarefas

  • O que é o Scrum;
  • Papéis dos membros da equipe;
  • Funcionalidades e métodos;

Critérios de aceitação

Postar um resumo ou link nesta mesma issue.

Implementação do pacote pip

Pacote pip

Desenvolver pacote pip para o módulo gera_documentos que está na devel. Já subir, permitir que seja instalado pelo terminal com pip install, e executar o init.py a partir da linha de comando, passando o nome do módulo e os parâmetros de entrada.

Critérios de aceitação

  • pacote pip publicado e permitindo instalação com pip install
  • poder ser executado via linha de comando ,uma vez instalado pelo pip
  • executar o main do initi.py com a passagem de parâmetros no terminal

Tradução do diretório cmd

Descrição

Traduzir todos os arquivos do diretório cmd da branch commands

Critérios de aprovação

  • about.txt
  • architecture.txt
  • help.txt
  • list.txt

Arquitetura de software, documentação e organização

Descrição

Utilizar semana para estudar arquitetura de software, documentação de projeto e organização do repositório (branches, issues, commits, etc).

Tarefas

  • Estudar o básico de arquitetura de software.
  • Estudar sobre documentação de projeto.
  • Pesquisar sobre organização do repositório.

Critérios de Aceitação

Enviar pequeno resumo até o final da sprint atual (22/11).

Desenvolvimento de barra de loading

Descrição

Ao gerar os documentos, aparecem apenas uns logs dentro do terminal, essa Issue busca desenvolver uma barra de loading mais apropriada para a geração de documentos

Critérios de avaliação

  • Barra de loading no CLI
  • Funcionamento normal de todo o fluxo da geração de documentos
  • branch e pull request

Story Map e product backlog

Descrição

Criação do Story Map e do product backlog

Critérios de aceitação

  • ProductBacklog no README.md
  • Descrição das histórias de usuário
  • branch e pull request

Aprimoramento do filter_data()

Descrição

Por enquanto a função filter_data(), em /src/modules/data_cleaning.py, aceita somente datasets em csv.
Implementá-la para que também possa aceitar mais formatos de input e retornar o mesmo formato de output especificado na arquitetura.

Tarefas

  • Aprimorar a filter_data() para que possa receber outras extensões de dataset (xlsx, html, xml, json, etc);
  • Empregar meios de a função lidar com erros (FileNotFoundError, extensão inválida, etc);

Critérios de aceitação

  • Função funcionando

GitPage_Updated

Descrição

Update na GitPage, adicionando mais conteúdo a ela.

Critérios de avaliação

  • Example of Use novo
  • Mudar as cores das caixas de código
  • Pull Request e Merge

Decisão para reuniões semanais da equipe

Reuniões semanais

Comentem abaixo, por favor, quais são seus melhores dias e horários para realizarmos uma reunião semanal (provavelmente online).

Calculo que, devido ao tamanho do projeto, os encontros durarão não mais que 20 minutos.

Comentários, Revisão e ajustes de variáveis

Descrição

  • Ajustar nomes de variáveis em funções (tudo em inglês)
  • Comentários de código (caso necessário, comunicar com o resto equipe)

Critérios de aceitação

  • código comentado, revisado e com ajustes nas variáveis
  • branch e pull request

Finalização do pacote pip

Descrição

O pacote pip precisa ser disponibilizado, a fim de permitir download via CLI em qualquer ambiente Python.

Nome final : mkdocs-s7

Critérios de aceitação

  • Possibilidade de instalar o pacote via CLI
  • Testes em ambiente linux, windows, conda, env...
  • Execução do comando via CLI
  • Execução correta de todos as possibilidades
  • Uso das flags --help e --about

Incremento do README

Descrição

Como recomendação da professora, é necessário adaptar o README do projeto, de acordo com a documentação apresentada por ela:

O que precisa :

Descrição

Resumo do que foi feito na primeira release

Funcionalidades

  • Lista das funcionalidades entregues (com a issue relacionada)
  • Lista de artefatos realizados (docs feitos)

Bugs Mapeados

  • O que vcs encontraram de problemas e precisam resolver na r2

link da mensagem

Critérios de Aceitação

  • README atualizado e seguindo padrão de projeto de software
  • Branch e pull request

CODEOWNERS config

Tarefas:

  • criar arquivo codeowners
  • linckar PR's com os respectivos owners

Primeira semana de treinamentos em python

Descrição

Agora que o tema do projeto foi definido com sucesso, utilizaremos a primeira semana para (re)aprender a linguagem Python, cuja qual foi escolhida como base de nosso código.

Tarefas

  • Dominar o básico da linguagem Python: números, strings, listas, dicionários, sets, funções, laços de repetição, estruturas condicionais, etc.
  • Alcançar nível igual ou superior a 5 no (Checkio) para python, postando, na sequência, o link do perfil do Checkio nesta mesma issue.

Critérios de aceitação

  • Nível do perfil Checkio igual ou superior a 5.

Continuação do desenvolvimento do CI/CD

Descrição

Continuar desenvolvimento da pipeline iniciada nas sprints anteriores.

Prioridades:

  • Aprimorar código yml do python publish referente ao github actions;
  • Ajustar bug do incremento de versões (bumpversion);
  • Se os dois itens acima falharem, pesquisar formas alternativas de esquematizar um CICD usando bibliotecas externas (ex.: Poetry);

Secundários

  • Estágio de testes unitários (cobertura mínima de 70%)
  • Verificação de codestyle

Critérios de Aceitação

  • Workflow funcionando adequadamente, sempre quando houver um push na main e/ou lançamento de uma nova release.

Pacotes do python (pip)

Descrição

Utilizar semana para pesquisar sobre os pacotes do Python (pip): o que são, como funcionam, como criá-los e atualizá-los. Realizar testes.

Tarefas

  • Pesquisar sobre pacotes pip do Python.
  • Realizar testes, se possível.

Critérios de Aceitação

Enviar resumos e link úteis nesta issue.

Definição de padrões

Descrição

Issue destinada a definição de padrões de código, workflow. A fim de garantir integridade e padronização durante todo o percorrer do projeto

Tarefas

Os seguintes padrões devem ser definidos:

  • Nome de arquivos, variáveis, classes e métodos
  • Codestyle
  • Branches no git
  • Commits no git
  • Ambientes virtuais

Critérios de aceitação

  • Documento de especificação de nomes de arquivos, variáveis, classes e métodos anexado ao comentário na Issue
  • Criação das branches no git e anexo do diagrama no comentário da issue
  • Anexo de documento de padronização de commits no comentário da Issue
  • Anexo de documento explicitando o padrão de ambiente virtual
  • Chamada de alinhamento geral, a fim de passar todos os padrões definidos para os outros integrantes da equipe

Estudos: Arquitetura de Software

O que é arquitetura?

A palavra “arquitetura” evoca visões de poder e mistério. Isso nos faz pensar em decisões pesadas e
proeza técnica profunda. A arquitetura de software está no auge da realização técnica.

A arquitetura de um sistema de software é a forma dada a esse sistema por aqueles que a constroem. A forma
dessa estrutura está na divisão desse sistema em componentes, o arranjo desses componentes, e as maneiras
pelas quais esses componentes comunicar uns com os outros.

O objetivo dessa forma é facilitar o desenvolvimento, implantação, operação, e manutenção do sistema
de software nele contido.

A estratégia por trás dessa facilitação é deixar tantas opções em aberto quanto possível, pois tanto tempo quanto possível.

O objetivo principal da arquitetura é dar suporte ao ciclo de vida do sistema. Uma boa arquitetura torna
o sistema fácil de entender, fácil de desenvolver, fácil de manter, e fácil de implantar. O objetivo final é
minimizar o custo de vida útil do sistema e para maximizar a produtividade do programador.

Desenvolvimento

Um sistema de software difícil de desenvolver provavelmente não terá uma vida útil longa e saudável. Portanto, a arquitetura de um sistema deve torná-lo fácil de se desenvolver, pela a(s) equipe(s) que o desenvolvem.

Diferentes estruturas de equipe implicam em diferentes decisões arquitetônicas. Por um lado, uma pequena equipe de cinco desenvolvedores pode trabalhar efetivamente em conjunto para desenvolver um sistema monolítico sem componentes ou interfaces bem definidos. Na verdade, tal equipe provavelmente acharia as restrições de uma arquitetura algo como um impedimento durante os primeiros dias de desenvolvimento. Esta é provavelmente a razão pela qual tantos sistemas carecem de boa arquitetura: Começaram sem nenhuma, porque a equipe era pequena e não queria o impedimento de uma superestrutura.

Por outro lado, um sistema sendo desenvolvido por cinco equipes diferentes, cada uma incluindo sete desenvolvedores, não pode progredir a menos que o sistema seja dividido em componentes bem definidos com interfaces confiáveis ​​e estáveis. Se nenhum outro fator for considerado, a arquitetura desse sistema provavelmente evoluirá para cinco componentes—
um para cada equipe.

Essa arquitetura de componente por equipe provavelmente não é a melhor arquitetura para implantação, operação e manutenção do sistema. Não obstante, é o arquitetura em que um grupo de equipes irá gravitar se forem movidos apenas por cronograma de desenvolvimento.

Implementação

Para ser eficaz, um sistema de software deve ser implantável. Quanto maior o custo de implantação, menos útil é o sistema. Um objetivo de uma arquitetura de software, então, deve ser criar um sistema que possa ser facilmente implementado com uma única ação.

Infelizmente, a estratégia de implantação raramente é considerada durante o desenvolvimento inicial. Isso leva à arquiteturas que podem tornar o sistema fácil de se desenvolver, mas deixá-lo muito difícil de implementar.

Operação

O impacto da arquitetura na operação do sistema tende a ser menos dramático do que o impacto da arquitetura no desenvolvimento, implementação e manutenção. Quase qualquer dificuldade operacional pode ser resolvida jogando mais hardware no sistema sem afetar drasticamente a arquitetura do software.

De fato, vemos isso acontecer repetidamente. Sistemas de software que possuem arquiteturas ineficientes muitas vezes podem ser feitas para funcionar de forma eficaz simplesmente adicionando mais armazenamento e mais servidores. O fato de que o hardware é barato e as pessoas estão caras significa que as arquiteturas que impedem a operação não são tão caras quanto arquiteturas que impedem o desenvolvimento, implantação e manutenção.

Manutenção

De todos os aspectos de um sistema de software, a manutenção é o mais caro. O não termino de novos recursos e o inevitável rastro de defeitos e correções consomem grandes quantidades de recursos humanos.

O custo primário de manutenção está em espeleologia e risco. Espeleologia é o custo de vasculhando no software existente, tentando determinar o melhor lugar e a melhor estratégia para adicionar um novo recurso ou reparar um defeito. Ao fazer tais mudanças, o a probabilidade de criar defeitos inadvertidos está sempre presente, aumentando o custo do risco.

Uma arquitetura cuidadosamente pensada reduz amplamente esses custos. Ao separar o sistema em componentes e isolando esses componentes por meio de interfaces, é possível iluminar os caminhos para futuras funcionalidades e, em muito, reduzir o risco de quebra inadvertida.


Resumo de tradução livre: primeira parte do capítulo 15 Clean Architecture


Funcionabilidade do pacote em diferentes versões do Python

Descrição

Verificar e testar em quais versões do Python o pacote funiona, fazer o teste desde o Python 2.0.1 até a versão mais nova Python 3.11.1, sendo pelo menos 10 casos testes.

Critérios de avaliação

  • 10 casos testes, 1 por versão
  • Funcionamento normal de todo, relaçao dos erros encontrados
  • Atualização do README
  • branch e pull request

Debug & melhoramento

Descrição

Debug do código fonte.

Prioridades:

  • Encontrar bugs nos módulos (data_cleaning, doc_generator, usable, etc) e na main através de variados casos de teste utilizando o pytest ou qualquer outra biblioteca que acharem útil ou necessária;
  • Propor soluções para eliminação dos bugs encontrados;
  • Reportar à equipe caso seja preciso realizar uma grande mudança de código;

Critérios de Aceitação

  • Commits e pull request com descrição das atividades desenvolvidas.

Editar Vídeo da Release 1

Descrição
Editar vídeo apresentando o que foi realizado no projeto para a R1 e apresentá-lo para professora

Critérios de avaliação

  • Gravar vídeo
  • Editar vídeo com menos de 10 minutos
  • Colocar vídeo no drive

Criação do módulo Gera Documentos

Módulo gera Documentos

O módulo gera documentos é responsável por receber um conjunto de dados, e um template, e fazer as substituições das chaves. Gerando no fim os arquivos preenchidos:

Critérios de aceitação

  • Módulo encapsulado com assinatura: path_template, dicionário_chave_valor, nome do arquivo de saída, flag pdf ou não
  • Geração de documentos a partir de template md
  • Conversão para pdf caso flag == 1
  • Padronização do nome do arquivo, a fim de criar arquivo com nome aceito pelo sistema operacional
  • pull request do módulo

Assinatura dicionário chave_valor:

{
"NOME": "Rafael",
"DISCIPLINA": "Sistema de bancos de dados 1",
"DATA": "23 de Novembro de 2022",
"CPF": "074.157.341-50",
"MATRICULA": "200026788"
}

Levantar bibliotecas para envio de e-mail em python

Descrição

Elencar bibliotecas para envio de e-mails em python

Critérios de Aceitação

  • Descrever nos comentários link de bibliotecas
  • Responder à questão : Usaremos um email próprio ou solicitaremos o do usuário?
  • Realizar testes, criando uma função que recebe um nome, email e documento e faz o envio.

Abrir os arquivos de template e dataset no programa

Descrição

Implementar features de abrir e processar os arquivos de dataset e template nos Módulos de Tratamento de Dados e Geração de Certificados, respectivamente.

Tarefas

  • Criar issue para feature de tratamento de dados na atual sprint;
  • Criar issue para feature de geração de certificados na atual sprint.

Critérios de Aceitação

Todas as tarefas cumpridas.

Comentários, Revisão e ajustes de variáveis

Descrição

  • Ajustar nomes de variáveis em funções (tudo em inglês)
  • Comentários de código (caso necessário, comunicar com o resto equipe)

Critérios de aceitação

  • código comentado, revisado e com ajustes nas variáveis
  • branch e pull request

# Lançamento e Deploy da versão 1 do pacote

Descrição

Issue destinada ao lançamento da versão 1.0.0 do pacote ez-docs dentro do sistema de distribuição python PyPI

Critérios de Aceitação

  • Pacote atualizado dentro do PyPI
  • Testes executados em ambientes linux e windows, com instalação e utilização do pacote
  • Verificação de todos os documentos (README, LICENCE . . . )
  • Branch e pull request

GitHub pages

Github Pages

Definição, construção e deploy da landing page do projeto.

Critérios de avaliação

  • página landing page com apresentação do projeto e informações importantes
  • link no corpo do github, hospedada no github pages

Documentações e padrões de Software Livre

Descrição

Desenvolver documentação README.md, atualizando todos os comandos necessários, escopo do projeto, equipe etc...

Adequar o projeto aos padrões de software livre (padrões da comunidade)
Padrões Software Livre

Critérios de aceitação

  • Todos os padrões de software livre marcados
  • Readme atualizado e legível
  • Branch e pull request (devel)

Mudança no ciclo de sprints

A partir de 23/11, por decisão em conjunto do squad, as sprints passarão de ciclo semanais de terças em terças para quartas e quartas.

Implementação do módulo de geração de certificados

Módulo gera Documentos

O módulo gera documentos é responsável por receber um conjunto de dados, e um template, e fazer as substituições das chaves. Gerando no fim os arquivos preenchidos:

Critérios de aceitação

  • Módulo encapsulado com assinatura: path_template, dicionário_chave_valor, nome do arquivo de saída, flag pdf ou não
  • Geração de documentos a partir de template md
  • Conversão para pdf caso flag == 1
  • Padronização do nome do arquivo, a fim de criar arquivo com nome aceito pelo sistema operacional
  • pull request do módulo

Assinatura dicionário chave_valor:

{
"NOME": "Rafael",
"DISCIPLINA": "Sistema de bancos de dados 1",
"DATA": "23 de Novembro de 2022",
"CPF": "074.157.341-50",
"MATRICULA": "200026788"
}

CI/CD - Pipeline

Descrição

Pesquisar métodos para setar o CI e CD no girthub
Somente será feito CI/CD com a branch main:

Prioridades:

  • Lançar versão nova do pacote python no PyPi

Secundários

  • Estágio de testes unitários (cobertura mínima de 70%)
  • Verificação de codestyle

Critérios de Aceitação

  • Comentários com link de artigos e exemplos de como realizar os objetivos
  • Spikes de testes

Primeiro Brainstorming de ideias e decisão do tema do projeto

Ideias de projeto

O grupo apresentou as seguintes sugestões:

Tema 1: RU+

É bastante recorrente que estudantes dos diversos campi da UnB passem por transtornos relacionados ao funcionamento do restaurante universitário, dentre os quais, destacam-se: a carência de plataformas de software que possibilitassem o acesso ágil ao saldo corrente da conta pessoal; inexistência de meios de pagamento virtuais; cardápio semanal pouco acessível. Nesse sentido, a proposta do grupo é o da produção de uma plataforma que resolveria tais empecilhos, e cujo nome seria RU+.
Funcionalidades:
  1. Consulta e depósito de saldo;
  2. Consulta do cardápio semana;
  3. Ranking de refeições mais votadas;

Tema 2: Dados abertos (sugestão da professora)

Escolher um orgão federal de dados abertos e apresentar a evolução temporal dos dados.
Funcionalidades:
  1. Analisar dados criticamente e matematicamente utilizando conceitos como média, mediana, moda, desvio-padrão, variância;
  2. Aplicar conceitos de inferência estatística para fazer suposições sobre como a disposição dos dados se refletem nas dinâmicas da sociedade;
  3. Empregar conceitos e novidades de Data Sciente e Data Visualization;

Tema 3: Geração automatizada de certificados (sugestão da professora)

Plataforma offline e instalada via pip install que, mediante um template de certificado customizado pelo usuário e uma lista de dados, gera automaticamnte os certificados e os exporta em formato pdf.
Funcionalidades:
  1. Gerar certificados pdf automaticamente através de uma lista (planilha) de dados um template definido pela usuário;
  2. Enviar o pdf gerado por email;
  3. Definir regras lógicas: por exemplo, gerar certificado de todos os alunos que tiveram presença igual ou superior a 75% e nota maior ou igual a 5,0.

Ícones GitPage

Descrição

Ajustar o uso do ícone do projeto dentro da github pages do projeto, além de mudar os nomes das páginas para o novo nome do pip install.

Critérios de aceitação

  • ícone no favicon da página
  • Ícone aparecendo em todos os displays da página
  • Mudar o nome de mkdocs para ez-docs
  • Branch e pull request

Extensão de comandos do argparse

Descrição

A ideia é estender a lista de comandos possíveis na chamada do main.py.
A princípio, os dois comandos adicionais serão:
--help: printa na janela de comando um pequeno tutorial de como utilizar o nosso framework.
--about: printa na janela de comando uma série de informações sobre o projeto: membros, disciplina, professora, arquitetura, etc.

Critérios de Avaliação

  • Chamada do --help via CLI
  • Chamada do --about via CLI
  • Branch e pull requests

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.