Giter VIP home page Giter VIP logo

naturesprophet / backendjr Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 445 KB

Aplicação de controle financeiro veicular, alimentado pela entrada de dados do usuário.

License: Apache License 2.0

TypeScript 86.75% Gherkin 12.28% JavaScript 0.65% Shell 0.32%
gestao-financeira gestao-veicular juliusreport combustivel combustivel-adulterado ucv gestao-de-frota gasolina-adulterada alcool-adulterado historico-de-precos

backendjr's People

Contributors

naturesprophet avatar

Stargazers

 avatar

Watchers

 avatar

backendjr's Issues

Definir as tecnologias

Definir as tecnologias a serem utilizadas para iniciar o desenvolvimento do projeto.

Opções em análise:

Java (maven, spring-boot)
C# (.NET Core 2.1)
Javascript (Node + Express + sequelize)
Nestjs Framework (Node + TypeScript + TypeORM + Jest + Cucumber) --> mais provável

Para documentação: OpenAPI (Swagger)

Registro de veículos

Desenvolver a funcionalidade de registro de novos Veículos, contendo:

Usuário proprietário
Montadora
Modelo
Ano
Cor
Placa

POST /veiculos

Definir os Serviços de Integração Contínua a serem utilizados

Escolher os serviços a serem utilizados para executar os processos de Integração Contínua do projeto, como testes unitários, testes e2e, testes de cobertura, análise da qualidade do código, etc...

Algumas opções a serem analisadas:
TravisCI
CircleCI
Google Cloud Build
Buddy

Consulta de Perfil de Consumo

Implementar uma rota GET em que o usuário possa buscar por um perfil de consumo específico, informando o combustível, trajeto e ar (Veículo incluso na seção)

GET /consumos/perfil/:combustível/:trajeto/:ar

Registro de novos usuários

Desenvolver a funcionalidade de cadastrar e adicionar novos usuários ao sistema, especificando:

Nome
Email
Login

Sem senha por enquanto pois a versão inicial não usará autenticação por se tratar de uma experiência.

POST /usuarios

Escrever os cucumbers

Escrever os cenários de testes automatizados (cucumber) com o que se espera que cada endpoint faça.

Implementar documentação em Swagger

Para melhorar a compreensão do funcionamento da api para o desenvolvedor final e explicitar todas as features disponíveis, vou implementar o Swagger e expor a documentação na rota /docs/

Registro de Abastecimentos

Desenvolver a funcionalidade chave de registrar os novos abastecimentos.
Cada abastecimento deverá ter os campos:

Veículo
Posto
Combustível
Valor do Litro ou metro
Valor total
Quilometragem atual do veículo

Adicionalmente, para registrar o consumo, deverão ser solicitadas as informações:
Tipo de uso do ar condicionado
Tipo de trajeto percorrido

POST /abastecimentos

Registro de manutenções

Desenvolver a funcionalidade de registrar manutenções feitas no veículo, especificando:

Quem fez ou onde foi feita a manutenção.
Valor gasto com peças e material
Valor gasto com mão de obra
Descrição dos serviços executados
Datas (inicial e final) da execução do serviço.

POST /manutencao

Análise automática de consumo

Ao gerar um novo registro de consumo, o sistema deverá comparar o consumo registrado com a média histórica daquele perfil, para detectar variações fora da margem aceitável.
Caso for detectada uma suspeita, o sistema deverá alertar o Usuário.

Gerar/Atualizar perfis de consumo automaticamente

Toda vez que um novo consumo for gerado no sistema, será necessário fazer uma verificação nos registros de consumo anteriores do veículo. Essa verificação buscará consumos de características semelhantes (mesmo veículo, mesmo combustível, mesmo trajeto e mesmo uso do ar ).
Ao encontrar registros anteriores com as mesmas características, o sistema deverá gerar (caso ainda nao exista) esse perfil de consumo, ou atualizar (se ja existir), fazendo o calculo da média de consumo desse perfil.

Consulta de Despesas

Implementar um endpoint GET para que o usuário possa listar todas as despesas do veículo atual na seção.

GET /despesas

listar os postos

Implementar um endpoint que listará todos os postos de combustíveis registrados no sistema.
Esse endpoint será necessário para que o usuário possa selecionar o posto correto ao registrar um novo abastecimento.

GET /postos

Registro de Despesas/Taxas

Desenvolver a funcionalidade de registro de despesas em impostos e taxas em geral, especificando:

Tipo de despesa
Data do pagamento
Descrição do pagamento

POST /despesas

consultar veículos

Implementar um endpoint onde o usuário possa listar todos os seus veículos.
Esse endpoint é necessário caso o usuário possua mais do que um veículo, nesse caso, ele deverá usar o endpoint POST /secao para inicializar sua seção, logo após o login, para escolher o veículo a ser usado no contexto.

GET /veiculos

Registro de Postos de Combustível

Desenvolver a funcionalidade de registrar os estabelecimentos onde se deseja abastecer, especificando:

Nome Fantasia
Endereço
Bandeira

E adicionalmente, os campos opcionais:

Razão Social
CNPJ
Contato/SAC

POST /postos

Relatório de custos

Implementar um endpoint que deverá listar TODOS os custos que o veículo atual da seção já consumiu desde o seu registro no sistema e informar o valor total gasto (total, abastecimentos, manutenções e despesas)

GET /relatorios/custos

Implementar o endpoint de login

Implementar o endpoint de autenticação do usuário, que armazenará na seção o objeto após a coferência dos dados de login/senha.

POST /login

Gerar registros de consumo

Implementar a funcionalidade de gerar e salvar um registro de consumo a cada vez que o usuário registrar um novo abastecimento.
O usuário deve indicar que também deseja registrar o consumo além do abastecimento (pois ele também pode optar por registrar somente o abastecimento sem gerar dados de consumo. - Ex: ele não encheu o tanque ou teve problemas mecânicos/elétricos - ).

PREMISSAS:
O usuário precisa ter COMPLETADO o tanque de combustível do veículo neste abastecimento atual e ter registrado corretamente o abastecimento anterior ao atual.

DADOS PROCESSADOS:
Será necessário obter os dados do ULTIMO ABASTECIMENTO imediatamente anterior ao que está sendo registrado atualmente. (quilometragem, posto, combustível, veiculo, tipo de trajeto e tipo de uso do ar)

MÉTODO:

  1. obter a distância total percorrida subtraindo a quilometragem atual pela quilometragem do ultimo abastecimento.
  2. obter o volume de combustível consumido no ultimo percurso (o que o veículo rodou desde o ultimo abastecimento), pela divisão do valor total pago pelo valor do Litro/Metro (dados do abastecimento atual). Se o tanque tiver sido completado no abastecimento atual, este valor será fiel ao real.
  3. Obter o rendimento do ultimo abastecimento dividindo o resultado do passo um pelo resultado do passo dois.
  4. marcar este rendimento como pertencente ao ultimo abastecimento antes do atual. (linkar com o id do ultimo abastecimento imediatamente anterior ao atual)
  5. associar este consumo com o veículo, posto, combustível, tipo de trajeto e tipo de uso do ar condicionado que foram registrados no abastecimento anterior. (linkar os ids).
  6. salvar esse registro completo no banco de dados.

Consulta de abastecimentos

Implementar endpoint para listar todos os abastecimentos do veículo atual da seção.

GET /abastecimentos

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.