/ngn

API para Ordem de Serviço destinado à Oficinas Mecânicas. Utilizado Node.js (Express), Docker e Docker-compose, Postgree, Typeorm, Swagger/OpenAPI e Deploy no Heroku.

Primary LanguageTypeScript

Requisitos Não-Funcionais da Aplicação

A API RESTFul deve ser desenvolvida na linguagem Typescript utilizando o framework Node.js

O banco de dados utilizado deve ser o PostgreSQL

Os containers devem ser rodados através do Docker Compose

A exclusão de registros deve ser realizada de forma lógica e não física

A API deve utilizar a notação JSON

A API deve ter o CORS ativo

A API deve ter um sistema de versionamento de endpoints

O sistema de autenticação deve conter JWT Token

Os identificadores (IDs) devem ser do tipo Universally Unique Identifier (UUID)

A documentação da API deve ser feita utilizando o Swagger UI

Para garantir a corretude, deve ser realizado o TDD e TDA na aplicação

O versionamento do código deve ser feito através da ferramenta Git

O repositório deve estar contido na plataforma GitHub

Usuários

Requisitos Funcionais

Deve ser possível cadastrar novos Usuários

Deve ser possível listar os Usuários cadastrados

Deve ser possível consultar o registro de usuário através do CPF cadastrado

Regras de Negócio

Não deve ser possível cadastrar um usuário com o mesmo CPF

Deve ser possível diferenciar usuários administradores de usuários comuns

Por padrão, os usuários são cadastrados como sendo usuários comuns

Endereço

Requisitos Funcionais

Deve ser possível cadastrar novos Endereços

Deve ser possível listar o endereço atrelado a um Usuário

Regras de Negócio

Não deve ser possível cadastrar mais de um endereço com o mesmo CEP

Não deve ser possível cadastrar mais de um endereço para o mesmo Usuário

##Automóveis##

Requisitos Funcionais

Deve ser possível cadastrar novos Automóveis

Deve ser possível realizar a listagem de Automóveis

Deve ser possível obter o histórico de Ordens de Serviço de cada automóvel

Regras de Negócio

Não deve ser possível cadastrar um carro com uma placa já existente

O carro deve ser cadastrado com disponibilidade por padrão.

O usuário responsável pelo cadastro deve ser um usuário administrador.

Tipo Automóvel

Requisitos Funcionais

Deve ser possível listar os tipos de automóveis

O cadastro deve ser realizado através de seeders

Status Ordem

Requisitos Funcionais

Deve ser possível listar os tipos de automóveis

O cadastro deve ser realizado através de seeders

Tipos de Status devem ser: 1 - Aberta, 2- Aprovada, 3 - Reaberta, 4 - Finalizada, 5 - Cancelada

Ordem de Serviço

Requisitos Funcionais

Deve ser possível gerar uma nova ordem de serviço

Deve ser possível listar as ordens de serviço finalizadas

Deve ser possível listar as ordens de serviços em aberto

Deve ser possível listar as ordens de serviço canceladas

Cada Ordem de Serviço deverá apresentar o automóvel, o dono e seu documento, as peças e os procedimentos realizados (com seus respectivos valores), o status, uma descrição / observação e o valor total da OS.

Regras de Negócio

Não deve ser possível gerar uma ordem de serviço caso o automóvel em questão já tenha outra ordem de serviço com status Aberta

Não deve ser possível alterar dados quando a Ordem estiver com status 2 ou 4. Pode ser reaberta quando o status for 2 (caso seja 4, deve ser feita uma nova OS).