/Pitsa

Primary LanguageJava

🍕 Pits A

Recentemente, diversas empresas do ramo alimentício têm se desvinculado dos grandes aplicativos de delivery. As causas dessa tendência são diversas e vão desde a transformação no modo de operação de cada estabelecimento, até as taxas abusivas das grandes plataformas.

Porém, em 2023, simplesmente não é viável voltar ao modo de trabalho “pré-Ifood”... Foi por isso que a pizzaria Pits A decidiu desenvolver seu próprio aplicativo de delivery. E adivinha só… vocês foram escolhidos para ajudar!

Endereços Úteis

1ª Etapa: USs 01-07

  • Descrição das participações, critérios utilizados e modelagem do sistema: Link para o documento da etapa 1

  • US1: Eu, enquanto administrador do sistema, quero utilizar o sistema para criar, editar e remover um estabelecimento;

  • US2: Eu, enquanto cliente, quero utilizar o sistema para me cadastrar como cliente do sistema. Mais detalhadamente, deve ser possível criar, ler, editar e remover clientes;

  • US3: Eu, enquanto funcionário(a) terceirizado(a), quero utilizar o sistema para me cadastrar como entregador( a) do sistema. Mais detalhadamente, deve ser possível criar, ler, editar e remover entregadores;

  • US4: Eu, enquanto funcionário(a) terceirizado(a), quero utilizar o sistema para me associar como entregador(a) de um estabelecimento;

  • US5: Eu, enquanto estabelecimento, quero utilizar o sistema para aprovar ou rejeitar entregadores do estabelecimento;

  • US6: Eu, enquanto estabelecimento, quero utilizar o sistema para o CRUD dos sabores de pizza vendidos pelo estabelecimento. Mais detalhadamente, deve ser possível criar, ler, editar e remover sabores;

  • US7: Eu, enquanto cliente, quero visualizar o cardápio de um estabelecimento;

2ª Etapa: USs 08-11

  • Descrição das participações, critérios utilizados e modelagem do sistema: Link para o documento da etapa 2

  • US8: Eu, enquanto cliente, quero utilizar o sistema para fazer pedidos de pizza a um estabelecimento. Mais detalhadamente, deve ser possível criar, ler, editar e remover pedidos;

  • US9: Eu, enquanto estabelecimento, quero modificar a disponibilidade dos sabores do cardápio. Mais detalhadamente, deve ser possível visualizar e editar a disponibilidade dos sabores de pizza — dado que, nem sempre, todos os produtos estão disponíveis;

  • US10: Eu, enquanto cliente, quero demonstrar interesse em sabores de pizza que não estão disponíveis no momento;

  • US11: Eu, enquanto estabelecimento, quero disponibilizar diferentes meios de pagamento para os pedidos, tal que cada meio de pagamento também gere descontos distintos;

3ª Etapa: USs 12-17

  • Descrição das participações, critérios utilizados e modelagem do sistema: Link para o documento da etapa 3

  • US12: Eu, enquanto estabelecimento, quero que o sistema garanta a corretude nas mudanças de status dos pedidos;

  • US13: Eu, enquanto cliente, quero ser notificado(a) quando meus pedidos estiverem em rota e, por medidas de segurança, quero ser informado(a) com o nome do(a) entregador(a) responsável pela entrega e os detalhes sobre seu veículo. A notificação deve ser representada como uma mensagem no terminal da aplicação (print), indicando o motivo e quem está recebendo a notificação;

  • US14: Eu, enquanto cliente, quero ser responsável por confirmar a entrega dos meus pedidos;

  • US15: Eu, enquanto estabelecimento, quero ser notificado(a) sempre que o status de um pedido for modificado para “Pedido entregue”. A notificação deve ser representada como uma mensagem no terminal da aplicação (print), indicando o motivo e quem está recebendo a notificação;

  • US16: Eu, enquanto cliente, quero ter a possibilidade de cancelar um pedido que fiz no estabelecimento;

  • US17: Eu, enquanto cliente, quero poder verificar os pedidos que já realizei no estabelecimento;

4ª Etapa: USs 18-20

  • Descrição das participações, critérios utilizados e modelagem do sistema: Link para o documento da etapa 4

  • US18: Eu, enquanto funcionário(a) terceirizado(a), desejo definir se estou disponível (ou não) para realizar as entregas do estabelecimento;

  • US19: Eu, enquanto funcionário(a), gostaria que o sistema atribuísse automaticamente as entregas dos pedidos com status “Pedido Pronto” a um(a) entregador(a) que esteja disponível para realizar entregas;

  • US20: Eu, enquanto cliente, quero ser notificado(a) quando meu pedido não puder ser atribuído para entrega devido à indisponibilidade de entregadores. A notificação deve ser representada como uma mensagem no terminal da aplicação (print), indicando o motivo e quem está recebendo a notificação;

Bônus

  • Envio de notificação por E-mail.

Diagrama UML

Avaliação

  • Quantidade, complexidade e corretude das user stories implementadas.

  • Decisões de design tomadas e implementadas durante o desenvolvimento. Por exemplo, o uso adequado de arquiteturas e padrões de projeto.

  • Qualidade do código desenvolvido. Por exemplo, o uso de princípios de projeto, a atribuição de responsabilidades e a presença de bad smells no código.

  • Cobertura e qualidade dos testes automáticos desenvolvidos, abordagem funcional, com a correta utilização do MockMvc aplicados aos endpoints no formato REST para todos os membros da API disponibilizada.

  • O sistema web deverá utilizar o framework Spring Boot.

  • A cobertura dos testes para as classes de serviço e controladores deve ser de 100% (cem por cento), a fim de que fique evidenciada a prática de TDD.

  • Ao atingirmos 100% de êxito em todas as etapas, a nota final do projeto foi 10,00.

Equipe


Samuel Cabral


Marcos Antônio


Paola Moura


Victor Freire


Gabriel Guimarães