Coder Social home page Coder Social logo

jackson541 / api-boletim-covid Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 287 KB

API Rest em Django para acompanhar o número de casos do Covid-19 na região do Seridó.

Home Page: https://covidsjs.herokuapp.com/

License: MIT License

Python 100.00%
django covid-19 chartjs

api-boletim-covid's Introduction

API Boletins Covid Seridó

API em Djangorestframework para acompanhar o número de casos do Covid-19 na região do Seridó.

Deploy

API-Boletim-Covid

How to Run:

Clone the project

git clone https://github.com/jackson541/API-Boletim-Covid.git

Go to Directory

cd API-Boletim-Covid

Install dependencies

pip3 install -r requirements.txt

Configure database

  • Install PostgreSQL
  • Go to the settings.py file in the ApiBoletimCovid folder
  • Search for DATABASES in settings.py
  • Configure your database information (name, password and port) in the option default
  • Create a table in your database with the name apicovid

Apply Migrations

python3 manage.py makemigrations
python3 manage.py migrate

Run local server

python3 manage.py runserver

Routes documentation

After running the project, go to the route:

http://localhost:8000/swagger/

Contributors:

Jackson Alves

Jonathan Tavares

api-boletim-covid's People

Contributors

dependabot[bot] avatar jackson541 avatar

Stargazers

 avatar

Watchers

 avatar  avatar

api-boletim-covid's Issues

Desenvolvimento orientado a testes

Esqueci de perguntar antes, mas quer seguir o desenvolvimento utilizando os testes? Nunca trabalhei com testes, mas sei como eles funcionam, pelo menos em JS. Até agora só fiz os testes da api manualmente.

Atualizar README

Atualizar com informações sobre o projeto como:

  • Versão da API
  • Como rodar
  • Status de Integração Contínua
  • Contribuidores
  • Dependências do Projeto

Criação das demais branchs

No padrão antigo, eu estava utilizando apenas uma branch de desenvolvimento sem seguir a risca o padrão do Gitflow. Acho que agora seguir esse padrão, com a criação das branchs de features e as demais, será o ideal. Tem outra ideia em mente ou prefere seguir por essa, @jonathantvrs ?

Problema na listagem de boletins

A rota de listagem geral deve receber uma query para definir a cidade de retorno dos boletins. Atualmente todos são retornados.

Requisitos Model Caso

TB_CASO

  • id: int (chave primária)

  • boletim: int (chave estrangeira -> TB_BOLETIM #8 ) (obrigatório)

  • tipo: string (choices = confirmado, em tratamento, internado, recuperado, suspeito, obito, descartado, notificado) (obrigatório)

  • gênero: string (choices = feminino, masculino, outro) (obrigatório)

  • faixa: string (choices = #14) (obrigatório)

Informações e questionamentos

1 - O banco PostgreSQL aceita o uso de campos com tipo array, o que permite o campo "faixa" conter um array no qual a primeira posição é o início da faixa e a segunda é o final.

2 - Sempre que um novo boletim for cadastrado nesse modelo, é preciso que as informações dos casos do boletim anterior, que foram alteradas ou não, sejam recadastradas em novos casos com o boletim recém criado associado. Dessa forma, os casos anteriores permanecem intactos e novos são criados com informações atualizadas.

3 - Seria melhor deixar apenas os campos obrigatórios no "tipo" como está e incluir campos para os opcionais nos boletins ou também adicioná-los entre as escolhas de tipos de um caso?

3 - Pensei em uma outra forma de fazer a associação entre os casos e os boletins com um relacionamento N - N. Nesse modelo, se os dados de um caso forem atualizados, cria-se um novo caso e o associa ao novo boletim, se não, associa o mesmo caso ao novo boletim e ao anterior. Sendo assim, imagino que seja possível diminuir a uso de memória do db, já que uma linha na TB_BOLETINS_CASOS contém menos informações que uma linha na TB_CASO. No entanto, essa é uma forma que será mais trabalhosa para implementar e que talvez não traga uma grande diferença.

Refatoração dos casos e boletins

Boletim model

  • id: int (chave primária) (definido pelo sistema)

  • cidade: int (chave estrangeira) (obrigatório)

  • data: datetime (obrigatório)

  • ativo: boolean (definido pelo sistema)

  • casosConfirmados: int (obrigatório)

  • casosEmTratemento: int (obrigatório)

  • casosInternados: int (obrigatório)

  • casosRecuperados: int (obrigatório)

  • casosSuspeitos: int (obrigatório)

  • casosDeObito: int (obrigatório)

  • casosDescartados: int (obrigatório)

  • casosNotificados: int (obrigatório)

InformacoesCasos

  • id: int (chave primária) (definido pelo sistema)

  • cidade: int (chave estrangeira) (obrigatório)

  • data: datetime (obrigatório)

  • ativo: boolean (definido pelo sistema)

CasosConfirmados (e demais tipos de casos)

  • id: int (chave primária) (definido pelo sistema)

  • informacoesCasos: int(chave estrangeira) (obrigatório)

  • ativo: boolean (definido pelo sistema)

  • masculino: int (obrigatório)

  • feminino: int (obrigatório)

  • outro: int (obrigatório)

  • faixa_0_19: int (obrigatório)

  • faixa_20_39: int (obrigatório)

  • faixa_40_59: int (obrigatório)

  • faixa_60_69: int (obrigatório)

  • faixa_70_79: int (obrigatório)

  • faixa_80: int (obrigatório)

Bug: Deploy Heroku

O deploy está funcionando? Aparentemente não. E ainda tem dois environments no repo, fico confuso. Precisamos trocar os nomes também. O ideal é criar um novo

Criar arquivo choices.py em apicovid

Com o arquivo choices.py, o código dos modelos fica mais limpo e a parte de choices fica mais simples de ser acessada e alterada, se for o caso

Separar funções

Se as funções da View.py forem separadas em arquivos de tipo de entidade e importadas de volta na View, irá continuar funcionando? O arquivo está ficando muito grande

Adicionar mais um card

Alterar card, gráfico e back-end para aceitar a informação "Confirmados fora da cidade". Além disso, colocar uma explicação que esses casos são de pessoas com endereço aqui, mas que se encontram fora da cidade.

  • Concluir

Adicionar atributo ativo em todas as entidades do sistema

Com o atributo ativo implementado, é preciso fazer uma alteração no método delete, para que o o sistema não delete o registro do banco, apenas faça o update de ativo para false. Também é necessário adicionar em todas as listagens que somente os dados com ativo true sejam mostrados no sistema, é só colocar um filtro nos serializers

Exclusão de Usuário

@jackson541 , tava vendo aqui os modelos e se não me falha a memória, o ondelete CASCADE deleta a referência na tabela filha, logo acho que ao deletar um usuário de uma cidade, a cidade também será deletada.

Criar imagem do boletim

Nessa feature, deve ser possível pegar os dados principais e gerar um pdf do boletim com estilo

Escopo do projeto e checklist

Navbar

Navbar contendo os links para navegar pelo site e logo com símbolo da cidade.

  • Links
  • Logo

Cards da home

Parte inicial contendo cards que informam os estados dos casos. Clicar em um card redireciona para o seu gráfico.
Design interessante

  • Confirmados
  • Recuperados
  • Suspeitos
  • Descartados
  • Óbitos

Gráficos

Seção contendo os gráficos de cada card.

  • Confirmados
  • Recuperados
  • Suspeitos
  • Descartados
  • Óbitos

Informações importantes

Seção com informações e links importantes para os usuários, por exemplo, como lavar as máscaras.

Footer

Footer do site dizendo quem criou.

  • Footer

Adicionar CORS

A aplicação (no heroku) está negando as requisições do Front, mas achei estranho que não está negando as requisições que faço pelo Postman. django cors

Teste de vídeo

  • Trocar os iframes por vídeos locais para melhorar a performance do site.

Colocar v1.0 para deploy

  • Corrigir erros nos testes unitários
  • Refatorar modelos
  • Corrigir problema com token no Swagger

Feito isso, vamos subir a primeira versão para a master para deploy. Com isso conseguiremos iniciar o front para testes

Criar novo environment e desativar os outros

Criar environment no heroku
Desativar antigos

Ou simplesmente pode mudar o nome de algum dos dois que estão ativos e desativar o outro.

Mas é importante deixar só um rodando

Requisitos Model Cidade

TB_CIDADE

  • id: int (chave primária)
  • nome: string (chave candidata ou única) (obrigatório)
  • responsável: int (chave estrangeira -> User) (obrigatório)
  • numeroHabitantes: int (obrigatório)

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.