O processo de pedido de lanche se inicia quando um cliente se dirigi a um terminal de autoautendimento para fazer o pedido. O cliente chega no terminal e escolhe se irá fazer login no sistema com seu CPF ou se fará um pedido de forma anonima.
Depois disso o terminal apresenta ao cliente uma lista de lanches.
O cliente escolhe o lanche desejado. O terminal então apresenta a opção de acompanhamentos para o cliente.
O cliente escolhe se deseja acompanhamento no pedido.
A ultima escolha é referente a bebida. O cliente então fecha o carrinho de pedido.
Com os itens do pedido do cliente, o sistema gera uma ordem de pedido, calcula o total do mesmo e apresenta as informações referente aos itens e valor total para o cliente.
O cliente revisa as informações e ao confirmar, solicita a informação de pagamento. O sistema realiza a comunicação com o gateway de pagamento e apresenta um QR Code para que o pagamento seja realizado.
O cliente realiza o pagamento do pedido.
O Gateway confirma o pagamento para o sistema que por sua vez, altera o status do pedido para “Recebido” e envia o mesmo para a cozinha.
A aplicação é desenvolvida em NodeJs com o framework Nest.js e como banco de dados utiliza MariaDB.
Não fizemos o deploy em ambiente de cloud. Para o ambiente de desenvolvimento, o MariaDB é executado em um pod do kubernetes para facilitar a execução local da solução.
Para acessar a documentação acesse: http://localhost:30000/docs
Para subir a documentação, execute os passos listados em Execute a soluçao com o kubernets
As chamadas no swagger já estão preenchidas com os modelos. Você pode alterar os valores ou enviar do jeito que estão. A aplicação será capaz de regristar a retornar os valores enviados nos endpoints de GET.
Para começar a usar o projeto, siga os passos abaixo:
Clone o projeto para o seu ambiente de desenvolvimento usando o comando git clone:
git clone https://github.com/GRUPO-G68/backend-tech-challenge.gitNavegue para o diretório recém-clonado usando o comando cd:
cd backend-tech-challengeBaixe e instale o Node.js em https://nodejs.org/en/download.
Instale as dependencias do projeto com o comando
npm installCrie uma cópia do arquivo .env.example e altere o nome para .env. Dentro desse arquivo estão as variáveis referente a conexão com o banco de dados. Caso você for utilizar uma banco localmente ou com credenciais diferentes, atualiza as informações.
Você também precisa ter em execução o MariaDB na sua máquina para a aplicação funcionar, ou seguir os passos da seção abaixo para usar o banco de dados que é instanciado com o Kubernetes.
Após configurado, para executar o projeto localmente, execute o comando npm run start:dev.
A documentação da aplicação pode ser acessada no seu navegador através do endereço: http://localhost:9001/docs
Instale o Docker https://www.docker.com/products/docker-desktop/
O projeto foi criado com a versão 4.26.1
Ative o Kubernets https://docs.docker.com/desktop/kubernetes/
O projeto foi criado com a versão 1.28.2. Versões anteriores podem falhar em executar a solução com erros sobre unable to recognize .yaml: no matches for kind: ....
A imagem do banco de dados e da aplicação já constam nos arquivos .yaml para execução do projeto.
IMPORTANTE: Para execução de imagem via Kubernetes com os arquivos .yaml, tenha certeza de definir o valor da variável
DB_HOSTparasvc-mysql-fiap, caso contrário a aplicação não conseguirá se conectar ao pod com o banco dados.
Para executar usando a configuração atual, abra um terminal na raiz do projeto e execute o comando
kubectl apply -f ./src/infrastructure/k8s/A aplicação leva alguns segundos para ficar disponível, dependo da configuração da maquina pode levar 1 ou 2 minutos. A documentação da aplicação pode ser acessada no seu navegador através do endereço: http://localhost:30000/docs
Para derrubar toda a soluçao, execute kubectl delete namespace fiap.
Caso você queira editar ou usar uma imagem diferente, faça as alterações no código, e no Dockerfile (caso necessário).
Faça o build da sua imagem:
docker build -t <nome:versão> .Atualize a linha 18 do arquivo node-fiap-deployment.yaml com o nome da imagem que você deu no comando de build. Você não precisa fazer o upload para docker hub dessa imagem se não quiser, a configuração do projeto busca pela imagem localmente antes de tentar acessar a mesma no repositório online do Docker Hub.
- Cadastrar categoria
{
"name": "Lanches",
"description": "É um lanche"
}- Cadastrar produto
{
"name": "Hamburguer com queijo",
"price": 20,
"categoryId": 1,
"description": "Hamburguer com queijo, tipo, o nome diz tudo"
}- Cadastrar cliente
{
"name": "Ciclano",
"document": "12312312",
"email": "ciclano@coldmail.com"
}- Realizar pedido
{
"clientDocument": "12312312",
"products": [
{
"productId": "Hamburguer com queijo",
"quantity": 1
}
]
}- Webhook Pagamento
{
"id": "1",
"topic": "payment"
}