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.
- Myller Lobo
- Jean Carlos
- Caio Isikawa
- Vanderly
- Thiago
- 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.
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.
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.
Clique aqui para ser redirecionado para a documentação das APIs e suas funcionalidades
Clique aqui para ser redirecionado para o desenho de arquitetura e infraestrutura