{"id":21191524,"url":"https://github.com/jonathan-r-andrade/inventory-report","last_synced_at":"2026-05-17T15:35:47.224Z","repository":{"id":181764725,"uuid":"666186225","full_name":"Jonathan-R-Andrade/inventory-report","owner":"Jonathan-R-Andrade","description":"Gerador de relatórios de estoque.","archived":false,"fork":false,"pushed_at":"2023-07-17T04:57:26.000Z","size":38,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-14T20:46:58.125Z","etag":null,"topics":["csv","decorator-pattern","json","oop","python3","strategy-pattern","unit-tests","xml"],"latest_commit_sha":null,"homepage":"","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/Jonathan-R-Andrade.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":null,"security":null,"support":null,"governance":null}},"created_at":"2023-07-13T23:21:11.000Z","updated_at":"2023-07-17T05:15:39.000Z","dependencies_parsed_at":"2023-07-17T08:43:04.949Z","dependency_job_id":null,"html_url":"https://github.com/Jonathan-R-Andrade/inventory-report","commit_stats":null,"previous_names":["jonathan-r-andrade/inventory-report"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Jonathan-R-Andrade/inventory-report","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jonathan-R-Andrade%2Finventory-report","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jonathan-R-Andrade%2Finventory-report/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jonathan-R-Andrade%2Finventory-report/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jonathan-R-Andrade%2Finventory-report/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jonathan-R-Andrade","download_url":"https://codeload.github.com/Jonathan-R-Andrade/inventory-report/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jonathan-R-Andrade%2Finventory-report/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279005896,"owners_count":26083982,"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-10-10T02:00:06.843Z","response_time":62,"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":["csv","decorator-pattern","json","oop","python3","strategy-pattern","unit-tests","xml"],"created_at":"2024-11-20T19:03:26.055Z","updated_at":"2025-10-11T01:04:28.960Z","avatar_url":"https://github.com/Jonathan-R-Andrade.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Inventory Reports\n\nProjeto desenvolvido por [Jonathan R. Andrade](https://www.linkedin.com/in/jonathan-r-andrade/) na [Trybe](https://www.betrybe.com/).\n\n## Sobre\n\nGerador de relatórios escrito em Python que recebe como entrada arquivos de vários formatos contendo dados de um estoque e gera, como saída, um relatório sobre estes dados.\n\nOs formatos de entrada dos arquivos suportados são: `.xml`, `.csv` e `.json`. É possível adicionar novos formatos de entrada facilmente graças ao uso do padrão de projeto [Strategy](https://refactoring.guru/pt-br/design-patterns/strategy), utilizado nas classes de importação de dados. Outro padrão de projeto, utilizado na classe ColoredReport, foi o [Decorator](https://refactoring.guru/pt-br/design-patterns/decorator) para adicionar cor ao relatório sem precisar fazer grandes alterações no código.\n\n## Habilidades desenvolvidas\n\n* Aplicar conceitos de Orientação a Objetos em Python;\n* Aplicar padrões de projeto;\n* Ler e escrever arquivos XML, CSV e JSON;\n* Escrever testes unitários em Python.\n\n## Ferramentas/Tecnologias utilizadas\n\n* Python v3.10.6\n* Docker v24.0.2\n\n## Como executar\n\nSiga os passos abaixo executando os comandos no terminal.\n\n1. Clone o repositório.\n\n    * Exemplo com Git + HTTPS\n      ```bash\n      git clone https://github.com/Jonathan-R-Andrade/inventory-report.git\n      ```\n    * Exemplo com Git + SSH\n      ```bash\n      git clone git@github.com:Jonathan-R-Andrade/inventory-report.git\n      ```\n    * Usando GitHub CLI\n      ```bash\n      gh repo clone Jonathan-R-Andrade/inventory-report\n      ```\n\n2. Entre na pasta do projeto.\n\n      ```bash\n      cd inventory-report\n      ```\n\n3. Prepare o ambiente usando o Python instalado localmente ou o Docker.\n\n   * \u003cdetails\u003e\n       \u003csummary\u003eUsando o Python instalado localmente.\u003c/summary\u003e\n\n       1. Crie o ambiente virtual.\n       ```bash\n       python3 -m venv .venv\n       ```\n\n       2. Ative o ambiente virtual.\n       ```bash\n       source .venv/bin/activate\n       ```\n\n       3. Instale as dependências.\n       ```bash\n       python3 -m pip install -r dev-requirements.txt\n       ```\n\n       4. Instale o projeto.\n       ```bash\n       python3 -m pip install .\n       ```\n     \u003c/details\u003e\n\n   * \u003cdetails\u003e\n       \u003csummary\u003eUsando o Docker.\u003c/summary\u003e\n\n       1. Crie a imagem.\n       ```bash\n       docker image build -t inventory-report .\n       ```\n\n       2. Inicie o contêiner.\n       ```bash\n       docker run --name inventory-report -it inventory-report bash\n       ```\n       \u003e O comando acima cria um contêiner com o nome `inventory-report` e abre um terminal interativo dentro dele, execute os próximos comandos neste terminal.\n     \u003c/details\u003e\n\n4. Execute o gerador de relatórios.\n\n    \u003e __O comando usado para executar o gerador de relatórios é `inventory_report`, ele recebe como argumento o caminho para um arquivo e uma string (`simples` ou `completo`) que representa o tipo de relatório a ser gerado.__\n\n  * Exemplo de um relatório simples usando um arquivo CSV.\n    ```bash\n    inventory_report inventory_report/data/inventory.xml simples\n    ```\n\n  * Exemplo de um relatório completo usando um arquivo JSON.\n    ```bash\n    inventory_report inventory_report/data/inventory.json completo\n    ```\n\n5. Execute os testes.\n\n    \u003e Poucos testes foram escritos para este projeto, apenas para demonstrar o uso de testes unitários em Python.\n\n    ```bash\n    python3 -m pytest\n    ```\n\n    Ou simplesmente.\n\n    ```bash\n    pytest\n    ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathan-r-andrade%2Finventory-report","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonathan-r-andrade%2Finventory-report","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathan-r-andrade%2Finventory-report/lists"}