Este projeto foi desenvolvido para o restaurante Chapa Quente com o objetivo de criar uma ferramenta eficiente de construção de cardápios, considerando as restrições alimentares dos clientes e a disponibilidade de ingredientes no estoque. Atualmente, o gerenciamento de receitas e estoque é feito de maneira ineficiente através de arquivos CSV, e este projeto visa solucionar esse problema com uma abordagem mais organizada e funcional.
- Mapeamento de pratos e receitas: Foi criada uma classe que mapeia os pratos e seus respectivos ingredientes e quantidades.
- Gerador de cardápios: Implementação de uma classe responsável por gerar cardápios com base nas restrições alimentares e na disponibilidade de ingredientes.
- Gestão de estoque: Classe implementada para gerenciar o estoque de ingredientes, garantindo que os pratos disponíveis possam ser preparados com os ingredientes em estoque.
- Testes: Implementação de testes utilizando o framework
pytest
, cobrindo as funcionalidades da aplicação, como a validação de pratos, ingredientes e restrições.
- Uso de Hashmaps com Dict e Set: Utilização das estruturas
dict
eset
do Python para gerenciamento de pratos e ingredientes. - Testes de software: Prática de escrita de testes unitários para classes utilizando
pytest
. - Orientação a Objetos: Implementação de classes, métodos e atributos que seguem os princípios de orientação a objetos.
- Python 3.8 ou superior
- Pip (gerenciador de pacotes do Python)
Siga as instruções abaixo para clonar e executar o projeto em sua máquina local:
git clone https://github.com/seu-usuario/seu-repositorio.git
cd seu-repositorio
python3 -m venv venv
source venv/bin/activate # No Windows, use: venv\Scripts\activate
Instale as dependências descritas no arquivo requirements.txt
e no arquivo dev-requirements.txt
:
pip install -r dev-requirements.txt
Para rodar os testes automatizados, utilize o comando:
pytest --cov=src --cov-report=term-missing
A estrutura do projeto é organizada da seguinte forma:
.
├── src/
│ ├── models/
│ │ ├── dish.py # Implementação da classe Dish
│ │ ├── ingredient.py # Implementação da classe Ingredient
│ │ └── stock.py # Implementação da classe Stock (Gestão de Estoque)
├── tests/
│ ├── test_dish.py # Testes para a classe Dish
│ ├── test_ingredient.py # Testes para a classe Ingredient
│ └── test_stock.py # Testes para a classe Stock
├── dev-requirements.txt # Dependências para o desenvolvimento e testes
├── requirements.txt # Dependências principais do projeto
└── README.md # Documentação do projeto
As dependências do projeto incluem:
- black: Formatação de código.
- faker: Geração de dados falsos para testes.
- flake8: Ferramenta para linting.
- httpx: Biblioteca de requisições HTTP.
- pytest: Framework de testes.
- pytest-cov: Relatórios de cobertura de testes.
- pytest-json: Plugin para saída JSON dos testes.
- pytest-unordered: Plugin para verificar igualdade de conjuntos de forma não ordenada.