diff --git a/README.md b/README.md index cc00571..2c8e260 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,17 @@ -### Sistema de Gerenciamento de E-commerce: Requisitos e Arquitetura +# Catálogo de Produtos e Categorias -#### Objetivo -Desenvolver um sistema de gerenciamento de e-commerce utilizando uma arquitetura de microserviços, seguindo o padrão Clean Architecture para garantir modularidade, escalabilidade e manutenção fácil. +Microserviço responsável pelo gerenciamento do catálogo de produtos e categorias, seguindo o padrão Clean Architecture para garantir modularidade, escalabilidade e manutenção fácil. -### Requisitos Funcionais +## Tecnologias Utilizadas -#### 1. Serviço de Catálogo +- **Framework:** Flask +- **Autenticação:** JWT (JSON Web Tokens) +- **Banco de Dados:** MySQL e SQLalchemy +- **Mensageria:** RabbitMQ (para comunicação assíncrona entre serviços) -[![Continuos Integration -Testing, Build and Deploy Backend Catalog Microservice to AWS ECS](https://github.com/maxsonferovante/catalog-microservice/actions/workflows/workflowTestingAndDeploy.yaml/badge.svg)](https://github.com/maxsonferovante/catalog-microservice/actions/workflows/workflowTestingAndDeploy.yaml) +#### Serviço de Catálogo + +[![Continuos Integration -Testing, Build and Deploy Backend Catalog Microservice](https://github.com/maxsonferovante/catalog-microservice/actions/workflows/workflowTestingAndDeploy.yaml/badge.svg)](https://github.com/maxsonferovante/catalog-microservice/actions/workflows/workflowTestingAndDeploy.yaml) - **Gerenciamento de Produtos:** - CRUD (Create, Read, Update, Delete) de produtos. @@ -19,138 +23,3 @@ Desenvolver um sistema de gerenciamento de e-commerce utilizando uma arquitetura - Pesquisa de produtos por nome, descrição e categoria. - Filtragem por preço, disponibilidade e outros atributos. -#### 2. Serviço de Carrinho de Compras -- **Gerenciamento de Carrinho:** - - Adicionar produtos ao carrinho. - - Atualizar quantidade de produtos no carrinho. - - Remover produtos do carrinho. - - Visualizar itens no carrinho. -- **Cálculo de Preço:** - - Cálculo de preços totais e subtotais. - - Aplicação de descontos e promoções. - -#### 3. Serviço de Pedidos -- **Processamento de Pedidos:** - - Criação de pedidos a partir do carrinho de compras. - - Atribuição de status ao pedido (pendente, pago, enviado, concluído). - - Histórico de pedidos por usuário. -- **Pagamento:** - - Integração com gateways de pagamento (ex: Stripe, PayPal). - - Verificação e confirmação de pagamento. - -#### 4. Serviço de Autenticação -- **Gerenciamento de Usuários:** - - Registro de novos usuários. - - Login/logout de usuários. - - Recuperação de senha. - - Perfis de usuário (dados pessoais, endereços de entrega, histórico de compras). -- **Autorização e Autenticação:** - - Geração e verificação de tokens JWT. - - Controle de acesso baseado em funções (administrador, cliente). - -### Requisitos Não Funcionais -- **Escalabilidade:** O sistema deve ser capaz de lidar com um grande número de usuários e pedidos simultaneamente. -- **Segurança:** Proteção contra ataques comuns como SQL injection, XSS, CSRF, e garantia de proteção dos dados do usuário. -- **Desempenho:** Resposta rápida às solicitações do usuário. -- **Manutenibilidade:** Código limpo, modular e bem documentado para facilitar a manutenção e futuras expansões. -- **Monitoramento:** Sistema de logging e monitoramento para rastrear a performance e erros. - -### Arquitetura - -#### 1. Estrutura Geral - -1. **Front-End:** Interface do usuário desenvolvida com um framework JavaScript moderno (React, Angular, Vue.js) que consome os serviços back-end via API REST. - -2. **Back-End:** Composto por vários microserviços, cada um implementado seguindo o padrão Clean Architecture. - -#### 2. Microserviços - -1. **Serviço de Catálogo** - - **API Gateway:** FastAPI - - **Banco de Dados:** PostgreSQL - - **Cache:** Redis (para melhorar a velocidade das consultas frequentes) - -2. **Serviço de Carrinho de Compras** - - **API Gateway:** FastAPI - - **Banco de Dados:** PostgreSQL - -3. **Serviço de Pedidos** - - **API Gateway:** FastAPI - - **Banco de Dados:** PostgreSQL - - **Mensageria:** RabbitMQ (para comunicação assíncrona entre serviços) - -4. **Serviço de Autenticação** - - **API Gateway:** FastAPI - - **Banco de Dados:** PostgreSQL - - **Autenticação:** JWT (JSON Web Tokens) - -#### 3. Componentes Adicionais -- **Gateway de API:** NGINX ou Traefik para rotear solicitações para os microserviços apropriados. -- **Orquestração de Contêineres:** Kubernetes para gerenciar a implantação, escalabilidade e operação dos contêineres Docker. -- **CI/CD:** Pipeline automatizado usando GitLab CI ou GitHub Actions para integração contínua e entrega contínua. -- **Monitoramento e Logging:** Prometheus e Grafana para monitoramento; ELK Stack (Elasticsearch, Logstash, Kibana) para logging centralizado. - -### Detalhamento das Tarefas - -#### 1. Configuração Inicial -- **Configurar Repositórios:** Criar repositórios separados para cada microserviço e um repositório central para o front-end. -- **Configurar Docker:** Criar arquivos Dockerfile para cada microserviço e configurar o Docker Compose para desenvolvimento local. -- **Configurar Kubernetes:** Criar arquivos de manifesto para Kubernetes (Deployment, Service, ConfigMap, Secret). - -#### 2. Desenvolvimento dos Microserviços - -##### Serviço de Catálogo -- **Modelagem de Dados:** Definir esquemas de banco de dados para produtos e categorias. -- **Endpoints de API:** - - `GET /products` - - `POST /products` - - `PUT /products/{id}` - - `DELETE /products/{id}` - - `GET /categories` - - `POST /categories` - - `PUT /categories/{id}` - - `DELETE /categories/{id}` -- **Implementação de Cache:** Integrar Redis para caching de consultas frequentes. - -##### Serviço de Carrinho de Compras -- **Modelagem de Dados:** Definir esquemas de banco de dados para itens do carrinho. -- **Endpoints de API:** - - `GET /cart` - - `POST /cart` - - `PUT /cart/{item_id}` - - `DELETE /cart/{item_id}` -- **Cálculo de Preço:** Implementar lógica de cálculo de preços e aplicação de descontos. - -##### Serviço de Pedidos -- **Modelagem de Dados:** Definir esquemas de banco de dados para pedidos. -- **Endpoints de API:** - - `GET /orders` - - `POST /orders` - - `PUT /orders/{id}` - - `DELETE /orders/{id}` -- **Integração de Pagamentos:** Implementar integração com gateways de pagamento. - -##### Serviço de Autenticação -- **Modelagem de Dados:** Definir esquemas de banco de dados para usuários. -- **Endpoints de API:** - - `POST /register` - - `POST /login` - - `POST /logout` - - `POST /password-reset` -- **Autenticação e Autorização:** Implementar geração e verificação de tokens JWT. - -### Etapas Finais - -#### 1. Integração -- **Integração de Microserviços:** Testar a comunicação entre os microserviços usando RabbitMQ e API Gateway. -- **Testes de Integração:** Realizar testes de ponta a ponta para garantir que todos os componentes funcionem juntos corretamente. - -#### 2. Monitoramento e Logging -- **Configurar Monitoramento:** Implementar monitoramento com Prometheus e Grafana. -- **Configurar Logging:** Implementar logging centralizado com ELK Stack. - -#### 3. Deploy -- **Configuração de CI/CD:** Criar pipelines CI/CD para deploy automatizado em Kubernetes. -- **Deploy em Produção:** Realizar o deploy do sistema em um cluster Kubernetes. - -Esse detalhamento deve fornecer uma visão clara das tarefas e da arquitetura necessárias para desenvolver o sistema de gerenciamento de e-commerce. Boa sorte com o projeto! diff --git a/procuder.py b/procuder.py index 8938758..a22daaf 100644 --- a/procuder.py +++ b/procuder.py @@ -36,7 +36,86 @@ def new_stock_random(): def main(): while True: - data = request_get_all_products() + data = { + "data": { + "atributes": [ + { + "category": { + "description": "Synchronized composite algorithm", + "id": "840be210-7e19-5f93-b997-43d3c6ed8fb4", + "name": "Clothing" + }, + "description": "Operative next generation circuit", + "id": "00b4f388-4a16-50ac-9ab9-be13fdd3f87b", + "name": "Salad", + "price": "42.00", + "stock": 44 + }, + { + "category": { + "description": "Object-based local structure", + "id": "46fe8de9-94a7-5ffc-9f0c-8e700e26fc9e", + "name": "Tools" + }, + "description": "Profit-focused disintermediate process improvement", + "id": "0163690f-5007-51fe-b14d-ab9462cfeecb", + "name": "For repair Cotton Gloves", + "price": "72.00", + "stock": 12 + }, + { + "category": { + "description": "Centralized value-added customer loyalty", + "id": "df83e778-efa9-5c10-a786-4597ac44bbed", + "name": "Shoes" + }, + "description": "Focused foreground success", + "id": "01898931-1c02-5ba2-ab92-0584774a3e83", + "name": "Car", + "price": "1.00", + "stock": 19 + }, + { + "category": { + "description": "Re-engineered scalable parallelism", + "id": "c786db45-4659-5b6e-90e6-7e964f1971c8", + "name": "Computers" + }, + "description": "Cross-platform cohesive standardization", + "id": "01cbaab7-08e0-572d-8734-dd8752d34f36", + "name": "Fantastic Plastic Table", + "price": "86.00", + "stock": 44 + }, + { + "category": { + "description": "Extended zero tolerance budgetary management", + "id": "8303098f-0034-5a83-9432-d0511324b537", + "name": "Outdoors" + }, + "description": "Open-source tertiary orchestration", + "id": "0202f162-0ee2-58e3-90a7-f55a5e5ab96e", + "name": "Fantastic Plastic Keyboard", + "price": "48.00", + "stock": 79 + }, + { + "category": { + "description": "Synergistic systemic benchmark", + "id": "26035f81-1e2a-5a50-83cd-82d294834fcb", + "name": "Industrial" + }, + "description": "Multi-channeled disintermediate info-mediaries", + "id": "02c7391e-2fc3-52c2-aaa8-7a1be0f2ec06", + "name": "Metal Ball", + "price": "86.00", + "stock": 28 + }, + ], + "count": 500, + "type": "Products" + } + } if data['data']['count'] == 0: print ("No products to update stock")