{"id":28223404,"url":"https://github.com/lmuffato/project-restaurant-orders-trybe","last_synced_at":"2025-09-13T22:12:30.949Z","repository":{"id":139798702,"uuid":"460707694","full_name":"lmuffato/Project-restaurant-orders-Trybe","owner":"lmuffato","description":"Projeto restaurant orders - Projeto avaliativo da Trybe do Bloco 36: Estrutura de Dados I: Arrays, Hashmaps e Sets","archived":false,"fork":false,"pushed_at":"2022-02-18T04:22:50.000Z","size":341,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"lmuffato-restaurant-orders","last_synced_at":"2025-06-12T00:42:10.368Z","etag":null,"topics":["array","array-set","csv","data","data-analysis","hashmap","python","set","trybe","trybe-projects"],"latest_commit_sha":null,"homepage":"https://github.com/tryber/sd-010-a-restaurant-orders/pull/90","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lmuffato.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-02-18T04:21:18.000Z","updated_at":"2022-02-21T03:34:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"70e55042-38f6-440b-a762-2703f1ae853f","html_url":"https://github.com/lmuffato/Project-restaurant-orders-Trybe","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lmuffato/Project-restaurant-orders-Trybe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmuffato%2FProject-restaurant-orders-Trybe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmuffato%2FProject-restaurant-orders-Trybe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmuffato%2FProject-restaurant-orders-Trybe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmuffato%2FProject-restaurant-orders-Trybe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lmuffato","download_url":"https://codeload.github.com/lmuffato/Project-restaurant-orders-Trybe/tar.gz/refs/heads/lmuffato-restaurant-orders","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmuffato%2FProject-restaurant-orders-Trybe/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275033942,"owners_count":25393949,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-13T02:00:10.085Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["array","array-set","csv","data","data-analysis","hashmap","python","set","trybe","trybe-projects"],"created_at":"2025-05-18T08:09:35.006Z","updated_at":"2025-09-13T22:12:30.936Z","avatar_url":"https://github.com/lmuffato.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"### Termos e acordos\n\nAo iniciar este projeto, você concorda com as diretrizes do Código de Ética e Conduta e do\nManual da Pessoa Estudante da Trybe.\n\n# Boas vindas ao repositório do projeto Restaurant Orders!\n\nVocê já usa o GitHub diariamente para desenvolver os exercícios, certo? Agora, para desenvolver os projetos, você deverá seguir as instruções a seguir. Fique atento a cada passo, e se tiver qualquer dúvida, nos envie por _Slack_! #vqv 🚀\n\nAqui você vai encontrar os detalhes de como estruturar o desenvolvimento do seu projeto a partir desse repositório, utilizando uma branch específica e um _Pull Request_ para colocar seus códigos.\n\n---\n\n# Sumário\n\n- [Habilidades](#habilidades)\n- [Entregáveis](#entregáveis)\n  - [O que deverá ser desenvolvido](#o-que-deverá-ser-desenvolvido)\n  - [Desenvolvimento](#desenvolvimento)\n  - [Data de Entrega](#data-de-entrega)\n- [Instruções para entregar seu projeto](#instruções-para-entregar-seu-projeto)\n  - [Antes de começar a desenvolver](#antes-de-começar-a-desenvolver)\n  - [Durante o desenvolvimento](#durante-o-desenvolvimento)\n- [Como desenvolver](#como-desenvolver)\n  - [Linter](#linter)\n- [Requisitos do projeto](#requisitos-do-projeto)\n\n    `Requisitos obrigatórios:`\n    - [1 - Campanha de publicidade, implemente um método chamado analyze_log no módulo src/analyze_log.py que gere informações de uma lanchonete.](#1---campanha-de-publicidade-implemente-um-método-chamado-analyze_log-no-módulo-srcanalyze_logpy-que-gere-informações-de-uma-lanchonete)\n    - [2 - Análises contínuas, implemente a classe TrackOrders que gere informações contínuas de uma lanchonete.](#2---análises-contínuas-implemente-a-classe-trackorders-que-gere-informações-contínuas-de-uma-lanchonete)\n    \n    `Requisitos bônus:`\n    - [3 - Controle de estoque](#3---controle-de-estoque)\n    - [4 - Estoque pode acabar](#4---estoque-pode-acabar)\n- [Depois de terminar o desenvolvimento](#depois-de-terminar-o-desenvolvimento)\n- [Revisando um pull request](#revisando-um-pull-request)\n- [Avisos Finais](#avisos-finais)\n\n---\n\n## Habilidades\n\n- Trabalhar com Hash map e Dict\n\n- Trabalhar com Set\n\n---\n\n## Entregáveis\n\nPara entregar o seu projeto você deverá criar um _Pull Request_ neste repositório. Este _Pull Request_ deverá conter os arquivos do diretório `src` devidamente preenchidos de acordo com as instruções, que conterão seu código `Python` e seus testes, respectivamente.\n\n### ⚠️ É importante que seus arquivos tenham exatamente os nomes definidos dentro do diretório src! ⚠️\n\nVocê pode adicionar outros arquivos se julgar necessário. Qualquer dúvida, procure a monitoria.\n\nLembre-se que você pode consultar nosso conteúdo sobre [Git \u0026 GitHub](https://course.betrybe.com/intro/git/) sempre que precisar!\n\n---\n\n## O que deverá ser desenvolvido\n\nA lanchonete Pão na Chapa, atualmente, possui um sistema de faturamento dos pedidos dos clientes, que salva o nome da pessoa, o pedido realizado, e dia do atendimento (dia da semana). O projeto consiste em ajudar a lanchonete a melhorar esse sistema para que ele possibilite extração de relatórios e, num segundo momento, a controlar seu estoque.\n\nO projeto está estruturado em duas etapas obrigatórias, e a tarefa bônus, também em duas etapas, totalizando 4 requisitos. Foque nas etapas obrigatórias e com o mesmo cuidado que teria com um cliente real: código limpo, com boa manutenção e legibilidade.\n\n---\n\n## Data de Entrega\n\n  - Será `1` dia de projeto.\n  - Data de entrega para avaliação final do projeto: `04/02/2022 - 14:00h`.\n\n---\n\n## Instruções para entregar seu projeto:\n\n### ANTES DE COMEÇAR A DESENVOLVER:\n\n1. Clone o repositório\n\n- `git clone git@github.com:tryber/sd-010-a-restaurant-orders.git`.\n- Entre na pasta do repositório que você acabou de clonar:\n  - `sd-010-a-restaurant-orders`\n\n2. Crie o ambiente virtual para o projeto\n\n- `python3 -m venv .venv \u0026\u0026 source .venv/bin/activate`\n\n3. Instale as dependências\n\n- `python3 -m pip install -r dev-requirements.txt`\n\n4. Crie uma branch a partir da branch `master`\n\n- Verifique que você está na branch `master`\n  - Exemplo: `git branch`\n- Se não estiver, mude para a branch `master`\n  - Exemplo: `git checkout master`\n- Agora crie uma branch à qual você vai submeter os `commits` do seu projeto\n  - Você deve criar uma branch no seguinte formato: `nome-github-nome-do-projeto`\n  - Exemplo: `git checkout -b exemplo-project-name`\n\n5. Adicione as mudanças ao _stage_ do Git e faça um `commit`\n\n- Verifique que as mudanças ainda não estão no _stage_\n  - Exemplo: `git status` (deve aparecer listada a pasta _exemplo_ em vermelho)\n- Adicione o novo arquivo ao _stage_ do Git\n  - Exemplo:\n    - `git add .` (adicionando todas as mudanças - _que estavam em vermelho_ - ao stage do Git)\n    - `git status` (deve aparecer listado o arquivo _exemplo/README.md_ em verde)\n- Faça o `commit` inicial\n  - Exemplo:\n    - `git commit -m 'iniciando o projeto project-name'` (fazendo o primeiro commit)\n    - `git status` (deve aparecer uma mensagem tipo _nothing to commit_ )\n\n6. Adicione a sua branch com o novo `commit` ao repositório remoto\n\n- Usando o exemplo anterior: `git push -u origin exemplo-project-name`\n\n7. Crie um novo `Pull Request` _(PR)_\n\n- Vá até a página de _Pull Requests_ do [repositório no GitHub](https://github.com/tryber/sd-010-a-restaurant-orders/pulls)\n- Clique no botão verde _\"New pull request\"_\n- Clique na caixa de seleção _\"Compare\"_ e escolha a sua branch **com atenção**\n- Clique no botão verde _\"Create pull request\"_\n- Adicione uma descrição para o _Pull Request_ e clique no botão verde _\"Create pull request\"_\n- **Não se preocupe em preencher mais nada por enquanto!**\n- Volte até a página de _Pull Requests_ do repositório e confira que o seu _Pull Request_ está criado\n\n---\n\n### Durante o desenvolvimento\n\n- Faça `commits` das alterações que você fizer no código regularmente\n\n- Lembre-se de sempre após um (ou alguns) `commits` atualizar o repositório remoto\n\n- Os comandos que você utilizará com mais frequência são:\n  1. `git status` _(para verificar o que está em vermelho - fora do stage - e o que está em verde - no stage)_\n  2. `git add` _(para adicionar arquivos ao stage do Git)_\n  3. `git commit` _(para criar um commit com os arquivos que estão no stage do Git)_\n  4. `git push -u nome-da-branch` _(para enviar o commit para o repositório remoto na primeira vez que fizer o `push` de uma nova branch)_\n  5. `git push` _(para enviar o commit para o repositório remoto após o passo anterior)_\n\n---\n\n## Como desenvolver\n\n**Estrutura do repositório**\n\n- No diretório `src/` você vai encontrar os arquivos onde devem ser implementadas todas as classes e métodos que você considerar importantes para resolver cada etapa do projeto;\n\n- No diretório `data/` você vai encontrar os arquivos de _log_ que deverão ser utilizados em cada etapa;\n\n- Os testes devem ser implementados nos arquivos do diretório `tests/`.\n\n## Testes\n\nPara executar os testes, lembre-se de primeiro **criar e ativar o ambiente virtual**, além de também instalar as dependências do projeto. Isso pode ser feito através dos comandos:\n\n```bash\n$ python3 -m venv .venv\n\n$ source .venv/bin/activate\n\n$ python3 -m pip install -r dev-requirements.txt\n```\n\n**Instalação de dependências**\n\nO arquivo `dev-requirements.txt` contém todos as dependências que serão utilizadas no projeto\n\nSe quiser saber mais sobre a instalação de dependências com `pip`, veja esse [artigo.](https://medium.com/python-pandemonium/better-python-dependency-and-package-management-b5d8ea29dff1)\n\n## Rodando os testes localmente\n\nPara verificar se o seu projeto está correto basta executar o seguinte comando:\n\n```bash\n$ python3 -m pytest\n```\n\n## Linter\n\nPara verificar se você está seguindo o guia de estilo do Python corretamente, execute o comando:\n\n```bash\n$ python3 -m flake8\n```\n---\n\n## Requisitos obrigatórios:\n\n### 1 - Campanha de publicidade, implemente um método chamado `analyze_log` no módulo `src/analyze_log.py` que gere informações de uma lanchonete.\n\nA lanchonete quer promover ações de marketing e, para isso, a agência de publicidade precisa exatamente das informações abaixo:\n\n- Qual o prato mais pedido por 'maria'?\n\n- Quantas vezes 'arnaldo' pediu 'hamburguer'?\n\n- Quais pratos 'joao' nunca pediu?\n\n- Quais dias 'joao' nunca foi na lanchonete?\n\n#### Dados\n\nO atual sistema guarda os `logs` de todos os pedidos feitos em um arquivo _csv_, contendo o formato `cliente, pedido, dia`, um por linha e sem nome das colunas (a primeira linha já é um pedido).\n\nO `log` a ser utilizado é o arquivo `data/orders_1.csv`. Todas as informações são _strings_ com letras minúsculas. O histórico contém pedidos feitos em todos os dias da semana que a lanchonete abre, e de todos os pratos que a lanchonete oferece. Ou seja, é possível saber o cardápio e agenda completos. Os dias da semana estão no formato `\"...-feira\", \"sabado\" ou \"domingo\"`, e não nos interessa informações sobre os dias que a lanchonete não abre.\n\n#### Implementação\n\nNo arquivo `analyze_log.py`, escreva uma função que responda às seguintes perguntas abaixo:\n\n- Qual o prato mais pedido por 'maria'?\n\n- Quantas vezes 'arnaldo' pediu 'hamburguer'?\n\n- Quais pratos 'joao' nunca pediu?\n\n- Quais dias 'joao' nunca foi na lanchonete?\n\nA função não retornará nada! A função deve apenas salvar as respostas no arquivo `data/mkt_campaign.txt`, na mesma ordem que acima.\n\n**Assinatura da função:**\n\n```python\ndef analyze_log(path_to_file):\n    # Código vem aqui\n```\n\n**Saída correta:**\n\n```\nhamburguer\n1\n{'pizza', 'coxinha', 'misto-quente'}\n{'sabado', 'segunda-feira'}\n```\n\n\u003e A ordem dos pedidos, bem como dos dias não precisa ser exatamente a apresentada no exemplo\n\n- No arquivo analyze_log.py deve estar implementada a função `def analyze_log(path_to_file)`;\n\n- A função deve realizar a leitura do `log` e salvar em um arquivo `txt` as informações solicitadas;\n\n- Utilização correta de `Dict/Set`, vistos no módulo;\n\n- Código legível e modularizado, quando for o caso.\n\n##### As seguintes verificações serão feitas:\n\n- 1.1 - Será validado se, ao executar o método `analyze_log`, os dados são preenchidos de forma correta no arquivo `data/mkt_campaign.txt`\n\n- 1.2 - Será validado se, ao executar o método `analyze_log` com um arquivo inexistente, o método retorna um erro `FileNotFoundError` com a mensagem de erro adequada.\n\n- 1.3 - Será validado se, ao executar o método `analyze_log` com uma extensão inválida, o método retorna um erro\n\n### 2 - Análises contínuas, implemente a classe `TrackOrders` que gere informações contínuas de uma lanchonete.\n\nA campanha de marketing foi um sucesso! A gerência agora deseja um sistema que mantenha um registro contínuo dessas informações. Mais especificamente, desejam que o sistema permita a extração das seguintes informações a qualquer momento:\n\n- Prato favorito por cliente;\n\n- Quanto de cada prato cada cliente já pediu;\n\n- Pratos nunca pedidos por cada cliente;\n\n- Dia mais movimentado;\n\n- Dia menos movimentado.\n\nPara isso, você deverá implementar uma classe que entregue as informações acima.\n\n#### Implementação\n\n**Arquivos**\n\n- O arquivo `track_orders.py` é onde você implementará a classe `TrackOrders`.\n\n- O arquivo `src/main.py` é apenas auxiliar e faz a leitura do arquivo `csv` especificado e envia a informação de cada pedido para as classes `TrackOrders` e para a classe `InventoryControl`, ao mesmo tempo. Não se preocupe ainda com o arquivo `inventory_control.py` (classe InventoryControl), pois ele é necessário apenas para a realização dos requisitos bônus.\n\n- Ainda no arquivo `src/main.py`, após a leitura completa do arquivo `csv`, algumas informações são impressas na tela para que você observe o comportamento das classes.\n\n\n**Teste o comportamento do arquivo `main.py`**\n\nAbra o arquivo `main.py` e complete a variável _path_ com `data/orders_1.csv`. Rode o arquivo `main.py`. Cinco linhas de `None` devem ser impressas. Isso acontece, porque as funções não estão devidamente implementadas ainda.\n\n**Implemente a solução**\n\nNo arquivo `track_orders.py`, implemente a classe `TrackOrders`, contendo, **no mínimo**, os métodos abaixo:\n\n```python\nclass TrackOrders:\n    # aqui deve expor a quantidade de estoque \n    def __len__(self):\n      pass\n\n    def add_new_order(self, costumer, order, day):\n        pass\n\n    def get_most_ordered_dish_per_costumer(self, costumer):\n        pass\n\n    def get_dish_quantity_per_costumer(self, costumer, order):\n        pass\n\n    def get_never_ordered_per_costumer(self, costumer):\n        pass\n\n    def get_busiest_day(self):\n        pass\n\n    def get_least_busy_day(self):\n        pass\n```\n\n\u003e Você é livre para criar os atributos e métodos necessários. Lembre-se de criar uma classe legível e bem modularizada. Lembre-se também de não incorrer em otimização prematura. Ou seja, não implemente funcionalidades que ainda não são necessárias, nem coloque atributos do tipo \"vai que um dia precisa\". Sempre rode o arquivo `main.py` para verificar o comportamento da sua classe.\n\n- Classe `TrackOrders` implementada;\n\n- A classe está devidamente modularizada;\n\n- Os métodos fazem uso das técnicas de `Dict` e `Set` vistos no módulo;\n\n- Os métodos atingem complexidade ótima (geralmente `O(1)` ou `O(n)`, em alguns métodos que usam `Set`).\n\n##### As seguintes verificações serão feitas:\n\n- 2.1 - Será validado se, ao instanciar a classe `TrackOrders` pela primeira vez, o método `len()` retorna a quantidade de pedidos igual a zero.\n\n- 2.2 - Será validado se, ao executar o método `add_new_order`, o método registra um pedido na instância.\n\n- 2.3 - Será validado se, ao executar `get_most_ordered_dish_per_costumer`, o método retorna o prato mais pedido.\n\n- 2.4 - Será validado se, ao executar `get_never_ordered_per_costumer`, o método retorna o conjunto de pratos que a pessoa nunca pediu.\n\n- 2.5 - Será validado se, ao executar `get_days_never_visited_per_costumer`, o método retorna o conjunto de dias que a pessoa nunca visitou.\n\n- 2.6 - Será validado se, ao executar o método `get_busiest_day`, o método retorna o dia mais movimentado.\n\n- 2.7 - Será validado se, ao executar o método `get_least_busy_day`, o método retorna o dia menos movimentado.\n\n---\n\n## Requisitos bônus:\n\n### 3 - Controle de estoque\n\nAtualmente o controle de estoque de ingredientes é feito no caderninho. Ao final da semana, uma pessoa conta quantas unidades, de cada ingrediente, ainda restam no estoque e anota quantos precisam ser comprados, para completar o estoque mínimo de cada ingrediente.\n\nA lanchonete deseja automatizar esse controle: no final da semana, a gerência irá imprimir uma lista de compras com as respectivas quantidades.\n\n#### Dados\n\nO `log` a ser utilizado ainda é o arquivo `data/orders_1.csv`. É garantido que os pedidos da semana não irão zerar nenhum dos estoques.\n\n#### Implementação\n\nNo arquivo `inventory_control.py` você deve implementar a classe `InventoryControl` que retorna a lista de compras da semana, a partir da informação de cada. É importante que a lista seja atualizada a cada pedido, e não apenas ao final de semana, pois a gerência quer a liberdade de imprimir a lista de compras a qualquer momento.\n\nA estrutura básica da classe está demonstrada abaixo e já contém as informações dos ingredientes, bem como o estoque mínimo de cada um. O método `get_quantities_to_buy` deve retornar um `Dict` que mapeia o ingrediente para a quantidade a ser comprada:\n\n```python\nclass InventoryControl:\n    INGREDIENTS = {\n        'hamburguer': ['pao', 'carne', 'queijo'],\n        'pizza': ['massa', 'queijo', 'molho', 'tomate'],\n        'queijo-quente': ['pao', 'queijo', 'queijo'],\n        'misto-quente': ['pao', 'queijo', 'presunto'],\n        'bauru': ['pao', 'queijo', 'presunto', 'tomate'],\n        'coxinha': ['massa', 'frango'],\n    }\n    MINIMUM_INVENTORY = {\n        'pao': 50,\n        'carne': 50,\n        'queijo': 100,\n        'molho': 50,\n        'presunto': 50,\n        'massa': 50,\n        'frango': 50,\n    }\n\n    def __init__(self):\n        pass\n\n    def add_new_order(self, costumer, order, day):\n        pass\n\n    def get_quantities_to_buy(self):\n        pass\n```\n\n- Classe `InventoryControl` implementada;\n\n- A classe está devidamente modularizada;\n\n- Garanta que todos os ingredientes e pratos foram testados;\n\n* Dicas:\n\n- Os métodos devem fazer uso das técnicas de `Dict` e `Set` vistos no módulo;\n\n- Os métodos atingem complexidade ótima (geralmente `O(1)` ou `O(n)`, em alguns métodos que usam `Set`).\n\n##### As seguintes verificações serão feitas:\n\n- 3.1 - Será validado se, ao executar o método `get_quantities_to_buy`, o método retorna a quantidade de ingredientes que precisam ser comprados.\n\n- 3.2 - Será validado se, ao executar o método `get_quantities_to_buy` para todos os hambúrgueres, o método retorna a quantidade de ingredientes que precisam ser comprados.\n\n- 3.3 - Será validado se, ao executar o método `get_quantities_to_buy` para receitas diferentes, o método retorna a quantidade de ingredientes que precisam ser comprados.\n\n### 4 - Estoque pode acabar\n\nAs campanhas de marketing tiveram sucesso novamente, e atraíram muitas novas pessoas clientes para a lanchonete. Se antes os estoques mínimos eram sempre suficientes para uma semana, agora não são mais...\n\nSuponha os seguintes estoques:\n\n```md\n- Pao: 1;\n\n- Queijo: 5;\n\n- Presunto: 3.\n```\n\nSe uma pessoa pedir um misto-quente, será possível atendê-la. Porém o pão irá acabar. Se a próxima pessoa pedir hamburguer, não será possível atendê-la. Sua missão é implementar um código que, caso algum ingrediente acabe, todos os pratos que usam aquele ingrediente devem ser imediatamente removidos do cardápio eletrônico, evitando gerar frustração em clientes.\n\n#### Dados\n\nO `log` a ser utilizado agora é o arquivo `data/orders_2.csv`. Se quiser testar pelo arquivo `main.py`, não se esqueça de alterar a variável `path`.\n\n#### Implementação\n\n\u003e Você fez commit do requisito `3 - Controle de estoque`? Se não, faça, pois agora você vai alterar o seu código!\n\nImplemente um novo método na classe `InventoryControl` que retorne um conjunto com todos os pratos disponíveis, ou seja, que ainda tem ingredientes suficientes.\n\n**Assinatura da função:**\n\n```python\ndef get_available_dishes():\n    # retorno: um conjunto de pratos que ainda têm ingredientes disponíveis\n```\n\nAltere o arquivo `main.py`:\n\n- Caso o prato que a pessoa solicitou não esteja disponível, não registre o pedido na execução do método `add_new_order`.\n\n- Novo método, `get_available_dishes`, implementado e funcionando corretamente.\n\n- Alteração na `main.py` produzindo o efeito esperado.\n\n- As classes/métodos estão devidamente modularizadas;\n\n- Os métodos fazem uso das técnicas de `Dict` e `Set` vistos no módulo;\n\n##### As seguintes verificações serão feitas:\n\n- 4.1 - Será validado se, ao executar o método `add_new_order` para um pedido com prato que não possui ingredientes suficientes em estoque, o método retorna `False` sem registrar o pedido.\n\n- 4.2 - Será validado se, ao executar o método `get_available_dishes`, o método retorna todos os pratos que possuem ingredientes suficientes para seu preparo.\n\n- 4.3 - Será validado se, ao executar o método `get_available_dishes`, o método não retorna os pratos cujos ingredientes não sejam suficientes para seu preparo.\n\n---\n\n## Depois de terminar o desenvolvimento\n\nPara **\"entregar\"** seu projeto, siga os passos a seguir:\n\n* Vá até a página **DO SEU** _Pull Request_, adicione a label de _\"code-review\"_ e marque seus colegas\n  * No menu à direita, clique no _link_ **\"Labels\"** e escolha a _label_ **code-review**\n  * No menu à direita, clique no _link_ **\"Assignees\"** e escolha **o seu usuário**\n  * No menu à direita, clique no _link_ **\"Reviewers\"** e digite `students`, selecione o time `tryber/students-sd-010-a`\n\nSe ainda houver alguma dúvida sobre como entregar seu projeto, [aqui tem um video explicativo](https://vimeo.com/362189205).\n\n⚠ Lembre-se que garantir que todas as _issues_ comentadas pelo **Lint** estão resolvidas! ⚠\n\n---\n\n### Revisando um pull request\n\nÀ medida que você e as outras pessoas que estudam na Trybe forem entregando os projetos, vocês receberão um alerta via Slack para também fazer a revisão dos Pull Requests dos seus colegas. Fiquem atentos às mensagens do \"Pull Reminders\" no Slack!\n\nUse o material que você já viu sobre [Code Review](https://course.betrybe.com/real-life-engineer/code-review/) para te ajudar a revisar os projetos que chegaram para você.\n\n# Avisos Finais\n\nAo finalizar e submeter o projeto, não se esqueça de avaliar sua experiência preenchendo o formulário. Leva menos de 3 minutos!\n\nLink: [FORMULÁRIO DE AVALIAÇÃO DE PROJETO](https://bit.ly/39qMu3s)\n\nO avaliador automático não necessariamente avalia seu projeto na ordem em que os requisitos aparecem no readme. Isso acontece para deixar o processo de avaliação mais rápido. Então, não se assuste se isso acontecer, ok?\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmuffato%2Fproject-restaurant-orders-trybe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flmuffato%2Fproject-restaurant-orders-trybe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmuffato%2Fproject-restaurant-orders-trybe/lists"}