Skip to content

fiap-8soat-tc-one/tc-backend-s4-order

 
 

Repository files navigation

Tech Challenge - Fase 4: Microsserviço de Pedidos

CodeQL Advanced Publish Docker image SonarQube Cloud

Responsabilidade 🚩

Este microsserviço tem como responsabilidade a gestão e acompanhamento do pedido realizado. A cada novo pedido realizado, este microsserviço irá publicar um evento respectivo, para que seja possível iniciar o fluxo de pagamentos. A cada atualização do status de pagamento, este microsserviço irá monitorar a fila respectiva para alteração e segmento do fluxo de pedidos.

Equipe 👷

  • Myller Lobo
  • Jean Carlos
  • Caio Isikawa
  • Vanderly
  • Thiago

Pré-Requisitos ❗

  • Maven 3
  • Java 17 (Open JDK 17)
  • Postgres 15
  • Docker Desktop
  • IntelliJ IDEA
  • DBeaver SQL Client
  • Postman
  • k6

1 - Criação do Pedido a partir de um cliente identificado

sequenceDiagram
    Cliente->>+Terminal de Autoatendimento: 1 - Informa CPF para identificação.
    Terminal de Autoatendimento->>+Sistema: 2 - [GET] http://localhost:8080/api/public/v1/customers/{cpf}
    Sistema-->>-Terminal de Autoatendimento: Retorna dados do cliente identificado.
    Terminal de Autoatendimento-->>-Cliente: Exibir dados do cliente.
    Cliente->>+Terminal de Autoatendimento: 3 - Buscar produtos para montar o pedido.
    Terminal de Autoatendimento->>+Sistema: 4 - [GET] http://localhost:8080/api/public/v1/products/categories/{categoryId}
    Sistema-->>-Terminal de Autoatendimento: Retorna dados dos produtos.
   Terminal de Autoatendimento-->>-Cliente: Exibir dados do produto.

    Cliente->>+Terminal de Autoatendimento: 5 - Escolhe produtos e realiza pedido.
    Terminal de Autoatendimento->>+Sistema: 6 - [POST] http://localhost:8080/api/public/v1/orders
    Sistema-->>-Terminal de Autoatendimento: Retorna dados do pedido cadastrado/recebido.
    Terminal de Autoatendimento-->>-Cliente: Exibir tela de pagamento.
Loading

Observação:

  • Os fluxos de 1 a 2 são opicionais.
  • Não é necessário informar campo id_customer no payload do POST v1/orders uma vez que esse campo é opcional com base na escolha do usuário se identificar ou não.

2 - Acompanhamento e Preparação de Pedido na Cozinha

sequenceDiagram
    Cozinha->>+Terminal interno: 1 - Buscar pedidos com status "Confirmado" para iniciar os preparos.
    Terminal interno->>+Sistema: 2 - [GET] http://localhost:8080/api/private/v1/orders
    Sistema-->>-Terminal interno: Retorna pedidos com status "Confirmado", "Pendente para Preparo" ou "Pronto para Retirada".
    Terminal interno-->>-Cozinha: Exibir dados para cozinha iniciar os preparos.

    Cozinha->>+Terminal interno: 3 - Seleciona pedido e altera status para "Em Preparação" (PREPARING)
    Terminal interno->>+Sistema: 4 - [PUT] http://localhost:8080/api/private/v1/orders/status
    Sistema-->>-Terminal interno: Retorna status do pedido alterado com sucesso.
    Terminal interno-->>-Cozinha: Exibir mudança de status do pedido.
    Cozinha->>+Terminal interno: 5 - Seleciona pedido e altera status para "Pronto para Retirada" (READY)
    Terminal interno->>+Sistema: 6 - [PUT] http://localhost:8080/api/private/v1/orders/status
    Sistema-->>-Terminal interno: Retorna status do pedido alterado com sucesso.
    Terminal interno-->>-Cozinha: Exibir mudança de status do pedido.
Loading

5 - Finalização do pedido

sequenceDiagram
    Atendente->>+Terminal interno: 1 - Seleciona pedido e altera status para "Finalizado" após retirada do cliente (FINISHED)
    Terminal interno->>+Sistema: 2 - [PUT] http://localhost:8080/api/private/v1/orders/status
    Sistema-->>-Terminal interno: Retorna status do pedido alterado com sucesso.
    Terminal interno-->>-Atendente: Exibir mudança de status do pedido.
Loading

Clique aqui para ser redirecionado para a documentação das APIs e suas funcionalidades

Desenho de Arquitetura/Infraestrutura proposto ✔️

Clique aqui para ser redirecionado para o desenho de arquitetura e infraestrutura

Documentação do Kubernetes

Clique Aqui para ser redirecionado

Documentação do Banco de dados do Microserviço Order

Clique Aqui para ser redirecionado